/
nantonenko95
/
raylib-introduction
Обзор
Документация
Войти
/
nantonenko95
/
raylib-introduction
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/game.cpp
102 строки
2 KB
Nikita
Done
10 ноя 2024, 17:12
10 ноя 2024, 17:12
415bde2
Код
Авторство
О чём код?
#include "game.h" #include "raylib.h" void Game::init() { player_.position = {gameZone.width / 2, gameZone.height / 2}; player_.moveConstraint = gameZone; player_.init(); for (size_t i{0}; i < 3; i++) spawnEnemy(); } void Game::updateState() { player_.update(); updateEnemies(); for (auto &enemy : enemyList) enemy.update(); auto &prjList = player_.weapon.projectileList; for (auto &prj : prjList) { for (auto &enemy : enemyList) { if (prj.collider().isCollideWith(enemy.collider())) { enemy.health -= player_.weapon.damage; prj.isAlive = false; } } } for (auto &enemy : enemyList) { if (enemy.collider().isCollideWith(player_.collider())) player_.health -= 1.0f; } prjList.erase(std::remove_if(prjList.begin(), prjList.end(), [](auto &prj) { return !prj.isAlive; }), prjList.end()); for (auto &enemy : enemyList) { if (enemy.health < 0) enemy.isAlive = false; } enemyList.erase(std::remove_if(enemyList.begin(), enemyList.end(), [](auto &enemy) { return !enemy.isAlive; }), enemyList.end()); if (player_.health <= 0) player_.isAlive = false; } void Game::updateDraw() { BeginDrawing(); ClearBackground(BLACK); for (auto &enemy : enemyList) { enemy.draw(); std::string enemyHealth = std::to_string(enemy.health); DrawText(enemyHealth.c_str(), enemy.position.x + 80, enemy.position.y, 24, RED); } if (player_.isAlive) player_.draw(); else DrawText("GAME OVER", gameZone.width / 2, gameZone.height / 2, 30, BLUE); DrawText(("Timer: " + std::to_string(enemySpawnCooldown - lastEnemySpawnElappsed)).c_str(), gameZone.x, gameZone.height - 50, 25, GREEN); DrawText(("HP: " + std::to_string(player_.health)).c_str(), gameZone.width - 100, gameZone.height - 100, 24, GREEN); EndDrawing(); } void Game::updateEnemies() { if (lastEnemySpawnElappsed > enemySpawnCooldown) { lastEnemySpawnElappsed = 0.0f; spawnEnemy(); } lastEnemySpawnElappsed += GetFrameTime(); } void Game::spawnEnemy() { float xPos = GetRandomValue(gameZone.x, gameZone.width); float yPos = GetRandomValue(gameZone.y + 100, gameZone.height / 10); Enemy e; e.position = {xPos, yPos}; e.init(); enemyList.push_back(e); }