private void GameLoop(object sender, EventArgs e) { HighScore += ScoreForTick; if (Enemies.Any(enemy => CollisionDetector.AreCollided(Batwing, enemy))) { timer.Stop(); renderer.ShowEndGameScreen(HighScore); return; } renderer.Clear(); renderer.Draw(Batwing); if (rand.Next(100) < SpawnEnemyChange) { var enemy = enemiesFactory.Get(renderer.ScreenWidth, rand.Next(renderer.ScreenHeight)); Enemies.Add(enemy); GameObjects.Add(enemy); } KillEnemiesIfColliding(); HighScore += Enemies.Count(enemy => !enemy.IsAlive) * ScoreForKill; RemoveNotAliveGameObjects(); UpdateObjectsPositions(); DrawGameObjects(); }
private void KillEnemiesIfColliding() { foreach (var projectile in Projectiles) { foreach (var enemy in Enemies) { if (CollisionDetector.AreCollided(projectile, enemy)) { enemy.IsAlive = false; projectile.IsAlive = false; break; } } } }