private void StartPhase1() { ///////////////////////////////////// ///////////////////////////////////// ///////////////////////////////////// ///////////////////////////////////// ///////////////////////////////////// ///////////////////////////////////// //timeElapsed = 20f; CurrentPhase = Phase.PHASE1; BossInstance = Instantiate(BossPrefab, new Vector3(0, 16.5f, 0), Quaternion.identity); AudioManager.Play("Chapter1BossMusic", GetComponent <AudioSource>()); Phase1PlayerNameLabel.SetActive(true); var bossPosition = BossInstance.transform.position; Phase1StartingPosition = bossPosition; Phase1MoveStartPosition = bossPosition; Phase1PositionToMoveTo = new Vector3( bossPosition.x + Mathf.Sign(Random.Range(-1, 1)) * 10, bossPosition.y, bossPosition.z); Phase1TimeToHomingShooting = 5.1f - Phase1IdleTime; CurrentEnemy.SetCurrentEnemyName("Survive!"); }
public GameObject SpawnCertainMonsterWithoutName(GameObject monster) { var enemy = Instantiate(monster, transform.position, Quaternion.identity); if (!anyBoy) { anyBoy = true; CurrentEnemy.SetCurrentEnemy(currentEvilDictionary[randomSequence[sequenceIndex]], enemy); enemy.GetComponent <MonsterLife>().MakeBoy(); currentBoy = enemy; } enemy.GetComponentInChildren <TMPro.TextMeshPro>().text = currentEvilDictionary[randomSequence[sequenceIndex]]; boysList.Add(enemy); //roomLighting.AddToLight(1); if (!SpawnZone) { SetMonsterPosition(enemy); } else { enemy.transform.position = SpawnZone.SpawnPosition(); } sequenceIndex++; return(enemy); }
private void Start() { Player = GameObject.FindGameObjectWithTag("Player"); AudioManager.Pause("Chapter1BossMusic", GetComponent <AudioSource>()); CurrentEnemy.SetCurrentEnemyName("???"); camera = Camera.main.transform; }
public override void Attack(float damage) { if (CurrentEnemy) { CurrentEnemy.Damage(damage * Mathf.Clamp( ((PlayerUserInterface)AttatchedUserInterface).Level * Constants.LevelScale, 1, float.PositiveInfinity)); } }
public override void ActiveEnemyComponent() { SpellLeft = TotalSpellCount; CurrentEnenmyIndex = 0; CurrentEnemy = spawnEnemy(CurrentEnenmyIndex); CurrentEnemy.OnEnemyFinished += continueBoss; CurrentEnemy.ActiveEnemyComponent(); }
protected virtual void ProcessVictory() { CurrentEnemy.SetCurrentEnemyName(" "); isVictory = true; Canvas.transform.GetChild(0).gameObject.SetActive(true); if (Input.GetKeyDown(KeyCode.F) && !CharacterLife.isDeath) { Canvas.transform.GetChild(0).gameObject.SetActive(false); SceneManager.LoadScene(NextSceneName); } }
private void continueToNextEnemy() { CurrentEnemy = spawnEnemy(CurrentEnenmyIndex); CurrentEnemy.OnEnemyFinished += continueBoss; if (CurrentEnemy is SpellCard) { SpellLeft--; } CurrentEnemy.ActiveEnemyComponent(); }
void Attack() { CurrentEnemy.TakeDamage(_gameService.CurrentPlayer.Weapon.Damage); _gameService.CurrentPlayer.TakeDamage(CurrentEnemy.Weapon.Damage); _gameService.Messages.Add(new Message("The Dungeon", "You Strike!")); _gameService.Messages.Add(new Message("The Dungeon", "The Goblins Health is " + CurrentEnemy.Health + " & Your Health is " + _gameService.CurrentPlayer.Health)); if (CurrentEnemy.Health <= 0) { _gameService.Messages.Add(new Message("The Dungeon", $"The {CurrentEnemy} IS DEAD")); } ; }
private void UpdatePhase4() { GlassFadeOutPassed += Time.deltaTime; GlassSprite.color = new Color( GlassSprite.color.r, GlassSprite.color.g, GlassSprite.color.b, Mathf.Lerp(1, 0, GlassFadeOutPassed / GlassFadeOutDuration)); if (BossInstance == null) { StartDead(); CurrentEnemy.SetCurrentEnemyName(" "); return; } if (ArenaEnemySpawner.boysList.Count == 0) { CurrentEnemy.SetCurrentEnemyName("Shadow"); } switch (phase4Attack) { case Phase4Attack.Idle: idleWaitTime -= Time.deltaTime; if (idleWaitTime <= 0) { phase4Attack = Phase4Attack.Spawn; phase4FadeInLeft = phase4FadeIn; Phase4Spawn(); } break; case Phase4Attack.Spawn: bossScript.FadeIn(phase4FadeIn); phase4FadeInLeft -= Time.deltaTime; if (phase4FadeInLeft + AfterBossFadeInExtraTime <= 0) { phase4FadeInLeft = phase4FadeIn; phase4Attack = Phase4Attack.Attack; } break; case Phase4Attack.Attack: idleWaitTime = Phase4AfterAttackIdleTime; Random360Burst(BurstBulletAmount); phase4Attack = Phase4Attack.Idle; break; default: break; } }
public void MakeMonsterActive(string name1) { GameObject currentEnemy1 = boysList.Find(x => x.GetComponentInChildren <TMPro.TextMeshPro>().text == name1); if (currentEnemy) { currentBoy.GetComponent <MonsterLife>().MakeNoBoy(); currentEnemy1.GetComponent <MonsterLife>().MakeBoy(); CurrentEnemy.SetCurrentEnemy(name1, currentEnemy1); boysList.Remove(currentEnemy1); boysList.Insert(0, currentEnemy1); currentBoy = currentEnemy1; } }
//Method will calculate the chance of running into an enemy and add an enemy to //the room based on that. Players current level is given to the room so that when the room //spawns an enemy it's stats are updated according to that players level. public void getAnEnemy(int level) { EnemyType temp = new EnemyType(); int chance1 = new Random().Next(1, ChanceEnemy + 1); if (chance1 == 1) { int chance = new Random().Next(0, temp.AllEnemies.Count); CurrentEnemy = temp.AllEnemies[chance]; CurrentEnemy.statstoPlayerLevel(level); } else { CurrentEnemy = null; } }
void continueBoss(object sender, EventArgs args) { CurrentEnenmyIndex++; CurrentEnemy.OnEnemyFinished -= continueBoss; CurrentEnemy.DeactiveEnemyComponent(); if (CurrentEnenmyIndex > BossComponents.Count - 1) { OnEnemyFinished?.Invoke(this, new EventArgs()); } else { continueToNextEnemy(); } OnEnemyConditionChange?.Invoke(this, new EventArgs()); }
protected override void Update() { if (firstSpawn) { SpawnСertainMonsterWithName(enemyWaves[0].transform.GetChild(2).gameObject, "Reluctance"); SpawnZone = null; SpawnCertainMonsterWithoutName(enemyWaves[0].transform.GetChild(0).gameObject); MakeMonsterActive("Reluctance"); CurrentEnemy.SetCurrentEnemyName("Shoot even if you can't kill it"); firstSpawn = false; } if (isVictoryT && firstDeath) { KillThemAll(); firstDeath = false; CurrentEnemy.SetCurrentEnemyName(""); } }
/// /////////////CUSTOM CONSTRUCTORS FOR NPCs //Sets the Data Config for a selected enemy public void EnemyMultiplier() { CurrentEnemy enemy = (CurrentEnemy)(5); switch (enemy) { case CurrentEnemy.VoidKnight: EnemyName = "Void Knight"; Enemyhealth = Enemyhealth * 2.5f; EnemyStrength = EnemyStrength * 3f; EnemyArmour = EnemyArmour + 30; break; case CurrentEnemy.Prince: EnemyName = "Prince"; Enemyhealth = Enemyhealth * 1.5f; EnemyStrength = EnemyStrength * 1.2f; EnemyArmour = EnemyArmour + 10; break; case CurrentEnemy.Overlord: EnemyName = "Overlord"; Enemyhealth = Enemyhealth * 5.5f; EnemyStrength = EnemyStrength * 3f; EnemyArmour = EnemyArmour + 100; break; case CurrentEnemy.Brother: EnemyName = "Brother"; Enemyhealth = Enemyhealth * 0.8; EnemyStrength = EnemyStrength * 0.6f; EnemyArmour = EnemyArmour / 2; break; default: Console.WriteLine("The Current Enemy Multiplier in the combat engine returned a null value!"); break; } }
// Initialize enemy list with random weights. void ResetEnemyList() { enemyList = new List <CurrentEnemy>(); var rnd = new System.Random(); string weights = ""; foreach (Enemy we in enemies) { if (we.dormant > number) { continue; } var ce = new CurrentEnemy(); ce.enemy = we; ce.weight = rnd.Next(1, maxSpawnWeight + 1); enemyList.Add(ce); weights += ce.weight + " "; } //Debug.Log("New enemy list weights: " + weights); }
public static void ChangeTheBoy(GameObject oldBoy) { if (scenesController) { scenesController.CurrentCount(1); } roomLighting.AddToLight(1); boysList.Remove(oldBoy); if (boysList.Count != 0) { var nextBoy = boysList[Random.Range(0, boysList.Count)]; CurrentEnemy.SetCurrentEnemy(nextBoy.GetComponentInChildren <TMPro.TextMeshPro>().text, nextBoy); nextBoy.GetComponent <MonsterLife>().MakeBoy(); currentBoy = nextBoy; } else { anyBoy = false; } }
protected IEnumerator CheckForPlayers() { while (true) { yield return(new WaitForSeconds(HEARTBEAT_CHECK_FOR_PLAYERS)); if (EnemyCombatStance.Aggresive == CombatStance) { if (null == CurrentEnemy) { CurrentEnemy = GetTarget(); if (null != CurrentEnemy) { CurrentEnemy.Targetted(this); } } if (!IsInRange(CurrentEnemy) || CurrentEnemy.Dead) { CurrentEnemy = null; } } } }
private void SpawnMonsters(int waveNum) { var enemyWave = Instantiate(enemyWaves[waveNum], transform.position, Quaternion.identity); int enemiesInWave = enemyWave.transform.childCount; for (int i = 0; i < enemiesInWave; i++) { var enemy = enemyWave.transform.GetChild(i).gameObject; if (i == 0) { // If there is no active enemy name if (!anyBoy) { anyBoy = true; CurrentEnemy.SetCurrentEnemy(currentEvilDictionary[randomSequence[sequenceIndex]], enemy); enemy.GetComponent <MonsterLife>().MakeBoy(); currentBoy = enemy; } } // Set random enemy name from the dictionary enemy.GetComponentInChildren <TMPro.TextMeshPro>().text = currentEvilDictionary[randomSequence[sequenceIndex]]; boysList.Add(enemy); if (!SpawnZone) { SetMonsterPosition(enemy); } else { enemy.transform.position = SpawnZone.SpawnPosition(); } sequenceIndex++; } }
public void SpawnСertainMonsterWithName(GameObject monster, string name, bool makeBoyIfPossible = true) { var enemy = Instantiate(monster, transform.position, Quaternion.identity); if (!anyBoy) { anyBoy = true; CurrentEnemy.SetCurrentEnemy(name, enemy); enemy.GetComponent <MonsterLife>().MakeBoy(); currentBoy = enemy; } enemy.GetComponentInChildren <TMPro.TextMeshPro>().text = name; boysList.Add(enemy); //roomLighting.AddToLight(1); if (!SpawnZone) { SetMonsterPosition(enemy); } else { enemy.transform.position = SpawnZone.SpawnPosition(); } }
public void Update(ConsoleKeyInfo input) { // Open Inventory if (input.KeyChar == action.GetKeybind("inventory") && CAN_OPEN_INVENTORY) { gui.OpenInventoryWindow(); } // Trade if (input.KeyChar == action.GetKeybind("trade") && CAN_TRADE) { gui.OpenTradeWindow(); } // Trade window logic if (gui.GetTradeWindowState()) { // Switch between player and trader window if (input.KeyChar == action.GetKeybind("trader_side") || input.Key == ConsoleKey.RightArrow) { gui.ChooseTraderTradeSide(); itemChoice = 0; } if (input.KeyChar == action.GetKeybind("player_side") || input.Key == ConsoleKey.LeftArrow) { gui.ChoosePlayerTradeSide(); itemChoice = 0; } // Move up and down on the list if (input.Key == ConsoleKey.UpArrow && itemChoice > 0) { itemChoice--; } if (input.Key == ConsoleKey.DownArrow) { if (gui.GetTraderTradeSide() && itemChoice < CurrentTrader.Inventory.Count - 1) { itemChoice++; } else if (gui.GetPlayerTradeSide() && itemChoice < CurrentPlayer.Inventory.Count - 1) { itemChoice++; } } // Select item from player and trader window if (gui.GetPlayerTradeSide()) { SelectedItemAction(CurrentPlayer, input); } if (gui.GetTraderTradeSide()) { SelectedItemAction(CurrentLocation.TraderHere, input); } // Selected item actions if (gui.GetItemSelectedState()) { // Visible on both windows if (input.KeyChar == action.GetKeybind("cancel")) { gui.CloseItemSelected(); } // Visible on player window if (input.KeyChar == action.GetKeybind("sell") && gui.GetPlayerTradeSide()) { SellSelectedItem(); } // Visible on trader window if (input.KeyChar == action.GetKeybind("buy") && gui.GetTraderTradeSide()) { BuySelectedItem(); } } // Exit if (input.KeyChar == action.GetKeybind("exit") && !gui.GetItemSelectedState()) { gui.CloseTradeWindow(); } } // Inventory window logic if (gui.GetInventoryWindowState()) { if (!gui.GetItemSelectedState()) { // Open Misc Tab if (input.KeyChar == action.GetKeybind("misc_tab")) { gui.MiscVisibility(true); } // Open Weapons Tab if (input.KeyChar == action.GetKeybind("weapons_tab")) { gui.WeaponsVisibility(true); } // Close Inventory if (input.KeyChar == action.GetKeybind("exit")) { gui.CloseInventoryWindow(); } } else { // Equip selected weapon if (input.KeyChar == action.GetKeybind("equip")) { EquipWeapon(); gui.CloseItemSelected(); } // Remove item from inventory if (input.KeyChar == action.GetKeybind("drop")) { DropItem(); } // Close specific item option menu if (input.KeyChar == action.GetKeybind("cancel")) { gui.CloseItemSelected(); } } SelectedItemAction(CurrentPlayer, input); } if (CAN_TRAVEL) { // Open Travel Menu if (input.KeyChar == action.GetKeybind("travel")) { gui.OpenTravelWindow(); } // Close Travel Menu if (input.KeyChar == action.GetKeybind("exit")) { gui.CloseTravelWindow(); } // Commence X Travel if (char.IsDigit(input.KeyChar) && gui.GetTravelWindowState()) // GetTravelWindow state shouldn't be here { if (char.IsDigit(input.KeyChar)) { int choice = 0; choice = int.Parse(input.KeyChar.ToString()) - 1; for (int i = 0; i < CurrentWorld.locations.Count; i++) { if (choice == CurrentWorld.locations[i].X && CurrentWorld.locations[i].Y == 0) { CurrentLocation = CurrentWorld.GetLocation(choice, 0); messageLog.Add($"Travelling to {CurrentWorld.GetLocation(choice, 0).Name}..."); gui.CloseTravelWindow(); } } } } } // Location specific if (CAN_TRAVEL) { if (CurrentLocation.X == 1) { if (input.KeyChar == action.GetKeybind("blacksmith") && action.GetActionState("blacksmith")) { CurrentLocation = CurrentWorld.GetLocation(1, 1); } if (input.KeyChar == action.GetKeybind("market") && action.GetActionState("market")) { CurrentLocation = CurrentWorld.GetLocation(1, 2); } } if (CurrentLocation.X == 2) { if (input.KeyChar == action.GetKeybind("hunt") && action.GetActionState("hunt") && InCombat != true) { GetEnemyAtLocation(); gui.OpenBattleWindow(); InCombat = true; } } } // Battle system if (InCombat) { if (input.KeyChar == battleAction.GetKeybind("attack") && battleAction.GetActionState("attack") && CurrentEnemy.Health > 0) { CurrentPlayer.UseCurrentWeaponOn(CurrentEnemy); CurrentEnemy.UseCurrentWeaponOn(CurrentPlayer); KillReward(); } if (input.KeyChar == action.GetKeybind("exit") && CurrentEnemy.Health <= 0) { if (CurrentEnemy.Health <= 0) { InCombat = false; gui.CloseBattleWindow(); } } } // Redraw gui.Render(this); }
public static void Main(string[] args) { Initialize(); int ShipTexture = AddSpriteTexture(GetResourceBitmap("Graphics.Ship.png"), System.Drawing.Color.Black, true); int EnemyTexture = AddSpriteTexture(GetResourceBitmap("Graphics.Enemy.png"), System.Drawing.Color.Black, true); int shipX, shipY; System.Random Rnd = new System.Random(); int i, j; double d; double ToRadians = Math.PI / 180; int EnemyY = Rnd.Next(100, 300); int EnemyX = Rnd.Next(600, 620); int StarX = Rnd.Next(1, 640); int StarY = Rnd.Next(10, 350); int Level = 1; int Lives = 2; int Score = 0; int HighScore = 0; bool Collision = false; bool Done = false; bool GameOver = false; bool LevelUp = false; bool RightKeyIsPressed = false; bool LeftKeyIsPressed = false; bool Left = false; bool Right = false; bool Up = false; bool Down = false; OpenConsoleWindow(4, 4, 35, 25, "Welcome to Defender!", false); WriteLine("Keys in the game:"); WriteLine(); WriteLine("RIGHT: Accelerate forwards"); WriteLine("LEFT: Accelerate backwards"); WriteLine("UP: Moves Ship up in y-axis"); WriteLine("DOWN: Moves Ship down in y-axis"); WriteLine("SPACE: Fire"); WriteLine("ESC: Close application"); WriteLine(); WriteLine("To play, press ENTER."); ReadLine(); ClearConsoleWindowArea(); LinkedList <EnemyShot> EnemyShots = new LinkedList <EnemyShot>(); LinkedList <ShipLazer> ShipLazers = new LinkedList <ShipLazer>(); LinkedList <Explosion> Explosions = new LinkedList <Explosion>(); LinkedList <Enemy> Enemies = new LinkedList <Enemy>(); LinkedList <Star> Stars = new LinkedList <Star>(); LinkedList <MountainPixel> MountainRangePixels = new LinkedList <MountainPixel>(); Ship Ship = new Ship(100, 250, 0, 0, CreateSprite(100, 250, ShipTexture)); Ship.Position = Ship; Clear(); FillRectangle(0, 0, 640, 0, Color.FromKnownColor(KnownColor.DarkGray)); SetClipArea(0, 8, 639, 480); Write("Ships: "); int LivesPos = CursorX; Write(Lives.ToString("D2")); Write(" Score: "); int ScorePos = CursorX; Write(Score.ToString("D5")); Write(" Lvl: "); int LevelPos = CursorX; Write(Level.ToString("D2")); for (double Y = 400, X = 15000; X >= -5000; Y -= Math.Cos((int)X-- / 5 & -11)) { MountainRangePixels.AddLast(new MountainPixel((int)X, (int)Y, 0, 0)); } OnUpdateModel += (sener, e) => { if (GameOver) { return; } double ElapsedSeconds = e.Seconds; if (!RightKeyIsPressed || !LeftKeyIsPressed) { foreach (Star star in Stars) { star.Draw(Star.StarColor); } foreach (MountainPixel pixel in MountainRangePixels) { pixel.Draw(MountainPixel.TerrainColor); } } if (Enemies.Count < Level) { Enemies.AddLast(new Enemy(EnemyX, EnemyY, 0, 0, CreateSprite(EnemyX, EnemyY, EnemyTexture), Ship.Position)); EnemyY = Rnd.Next(100, 300); EnemyX = Rnd.Next(600, 620); } if (Stars.Count < 50) { Stars.AddLast(new Star(StarX, StarY, 0, 0)); StarX = Rnd.Next(1, 640); StarY = Rnd.Next(10, 350); } foreach (Enemy enemy in Enemies) { foreach (MountainPixel pixel in MountainRangePixels) { if (pixel.X == enemy.X) { enemy.VelocityY = Math.Sign((pixel.Y - 70) - enemy.Y); } } enemy.MoveStep(); if (MovingObject.CheckCollision(enemy.X, enemy.Y, 18, 16, Ship.X, Ship.Y, 36, 12)) { Enemies.Remove(enemy); enemy.DisposeSprite(); for (i = 0; i <= 15; i++) { d = Random() * 360 * ToRadians; j = Random(10, 200); Explosions.AddLast(new Explosion(enemy.X, enemy.Y, enemy.VX + Math.Cos(d) * j, enemy.VY + Math.Sin(d) * j, Blend(Color.LimeGreen, Color.Yellow, Rnd.Next(3)), 1)); } Score += 150; GotoXY(ScorePos, 0); Write(Score.ToString("D5")); } if (enemy.X < -18) { Enemies.Remove(enemy); enemy.DisposeSprite(); } if (EnemyShots.Count < 1 /*Enemies.Count*/ || enemy.EnemyFire) { enemy.EnemyFire = false; enemy.StartTiming(); enemy.Fire(EnemyShots); } } if (RightKeyIsPressed) { Star.VelocityX = -3; MountainPixel.VelocityX = -4; foreach (Star star in Stars) { star.Draw(Color.Black); star.Move(ElapsedSeconds); star.Draw(Star.StarColor); } foreach (MountainPixel pixel in MountainRangePixels) { pixel.Draw(Color.Black); pixel.Move(ElapsedSeconds); pixel.Draw(MountainPixel.TerrainColor); } } else if (LeftKeyIsPressed) { Star.VelocityX = 3; MountainPixel.VelocityX = 4; foreach (Star star in Stars) { star.Draw(Color.Black); star.Move(ElapsedSeconds); star.Draw(Star.StarColor); } foreach (MountainPixel pixel in MountainRangePixels) { pixel.Draw(Color.Black); pixel.Move(ElapsedSeconds); pixel.Draw(MountainPixel.TerrainColor); } } foreach (Explosion particle in Explosions) { particle.Draw(Color.Black); particle.Move(ElapsedSeconds); particle.Draw(particle.color); } foreach (EnemyShot shot in EnemyShots) { shot.Draw(Color.Black); shot.Move(ElapsedSeconds); shot.Draw(Color.White); if (shot.p <= 0) { EnemyShots.Remove(shot); } if (shot.Y >= 479 || shot.Y <= 20 || shot.X <= 0) { shot.Draw(Color.Black); EnemyShots.Remove(shot); } if (MovingObject.CheckCollision(Ship.X, Ship.Y, 36, 12, shot.X, shot.Y, 3, 3)) { Collision = true; shot.Draw(Color.Black); EnemyShots.Clear(); } } foreach (ShipLazer lazer in ShipLazers) { lazer.Draw(Color.Black); lazer.Move(ElapsedSeconds); lazer.Draw(Color.Red); if (lazer.X <= 0) { lazer.Draw(Color.Black); ShipLazers.Remove(lazer); } } LinkedListNode <Enemy> EnemyNode = Enemies.First; LinkedListNode <ShipLazer> ShotNode = ShipLazers.First; ShipLazer CurrentShot; Enemy CurrentEnemy; while (ShotNode != null) { CurrentShot = ShotNode.Value; while (EnemyNode != null) { CurrentEnemy = EnemyNode.Value; if (MovingObject.CheckCollision(CurrentEnemy.X, CurrentEnemy.Y, 18, 16, CurrentShot.X, CurrentShot.Y, 20, 2)) { Enemies.Remove(EnemyNode); CurrentEnemy.DisposeSprite(); ShipLazers.Remove(ShotNode); CurrentShot.Draw(Color.Black); for (i = 0; i <= 15; i++) { d = Random() * 360 * ToRadians; j = Random(10, 200); Explosions.AddLast(new Explosion(CurrentEnemy.X, CurrentEnemy.Y, CurrentEnemy.VX + Math.Cos(d) * j, CurrentEnemy.VY + Math.Sin(d) * j, Blend(Color.LimeGreen, Color.Yellow, Rnd.Next(3)), 1)); } Score += 150; GotoXY(ScorePos, 0); Write(Score.ToString("D5")); } else { EnemyNode = EnemyNode.Next; } } ShotNode = ShotNode.Next; } if ((Collision) && (Lives > 0)) { Collision = false; Ship.DisposeSprite(); for (i = 0; i <= 120; i++) { d = Random() * 360 * ToRadians; j = Random(10, 200); Explosions.AddLast(new Explosion(Ship.X, Ship.Y, Ship.VX + Math.Cos(d) * j, Ship.VY + Math.Sin(d) * j, Color.White, 2)); } Lives--; GotoXY(LivesPos, 0); Write(Lives.ToString("D2")); if (Lives > 0) { Ship = new Ship(100, 250, 0, 0, CreateSprite(100, 250, ShipTexture)); Ship.Position = Ship; } } else if (Lives == 0) { GameOver = true; } if ((Score == 2250 && Level == 1) || (Score == 5250 && Level == 2) || (Score == 9000 && Level == 3)) { ClearRaster(); Ship.DisposeSprite(); LevelUp = true; } }; OnKeyDown += (sener, e) => { switch (e.Key) { case Key.Escape: Done = true; break; case Key.Left: Left = true; shipX = Ship.X; shipY = Ship.Y; LeftKeyIsPressed = true; if (Right) { Right = false; RightKeyIsPressed = false; UpdateSpriteTexture(ShipTexture, GetResourceBitmap("Graphics.ReversedShip.png"), new Point(0, 0), Color.Black, true); } Ship.Left(); break; case Key.Right: Right = true; RightKeyIsPressed = true; if (Left) { Left = false; LeftKeyIsPressed = false; UpdateSpriteTexture(ShipTexture, GetResourceBitmap("Graphics.Ship.png"), new Point(0, 0), Color.Black, true); } Ship.Right(); break; case Key.Up: Up = true; Ship.Up(); break; case Key.Down: Down = true; Ship.Down(); break; case Key.Space: Ship.Fire(ShipLazers); break; } }; OnKeyUp += (sener, e) => { switch (e.Key) { case Key.Left: LeftKeyIsPressed = false; Ship.NoLeftRight(); break; case Key.Right: RightKeyIsPressed = false; Ship.NoLeftRight(); break; case Key.Up: Up = false; if (Down) { Ship.Down(); } else { Ship.NoUpDown(); } break; case Key.Down: Down = false; if (Up) { Ship.Up(); } else { Ship.NoUpDown(); } break; } }; while (!Done) { while (!GameOver && !Done && !LevelUp) { Sleep(1000); } if (!Done && !LevelUp) { foreach (Enemy enemy in Enemies) { enemy.DisposeSprite(); } ClearRaster(); OpenConsoleWindow(4, 4, 35, 25, "Game Over!", false); WriteLine(); Write("Score: "); WriteLine(Score.ToString("D5")); Write("Level: "); WriteLine(Level.ToString("D2")); if (Score > HighScore) { WriteLine("New HighScore!"); HighScore = Score; } WriteLine(); WriteLine("To close application, press ESC"); WriteLine("To play again, press ENTER."); ReadLine(); ClearConsoleWindowArea(); Clear(); EnemyShots.Clear(); ShipLazers.Clear(); Explosions.Clear(); Enemies.Clear(); MountainRangePixels.Clear(); Level = 1; Lives = 2; Score = 0; GameOver = false; Ship = new Ship(100, 250, 0, 0, CreateSprite(100, 250, ShipTexture)); Ship.Position = Ship; for (double Y = 400, X = 15000; X >= -5000; Y -= Math.Cos((int)X-- / 5 & -11)) { MountainRangePixels.AddLast(new MountainPixel((int)X, (int)Y, 0, 0)); } Write("Ships: "); Write(Lives.ToString("D2")); Write(" Score: "); Write(Score.ToString("D5")); Write(" Lvl: "); Write(Level.ToString("D2")); } else if (!Done && !GameOver) { foreach (Enemy enemy in Enemies) { enemy.DisposeSprite(); } OpenConsoleWindow(4, 4, 35, 25, "ATTACK WAVE " + Level, true); GotoXY((ConsoleWindowWidth - 9) / 2, 0); WriteLine("COMPLETED"); Thread.Sleep(3000); ClearConsoleWindowArea(); Clear(); EnemyShots.Clear(); ShipLazers.Clear(); Explosions.Clear(); Enemies.Clear(); MountainRangePixels.Clear(); LevelUp = false; GameOver = false; Lives++; Level++; Ship = new Ship(100, 250, 0, 0, CreateSprite(100, 250, ShipTexture)); Ship.Position = Ship; for (double Y = 400, X = 15000; X >= -5000; Y -= Math.Cos((int)X-- / 5 & -11)) { MountainRangePixels.AddLast(new MountainPixel((int)X, (int)Y, 0, 0)); } Write("Ships: "); Write(Lives.ToString("D2")); Write(" Score: "); Write(Score.ToString("D5")); Write(" Lvl: "); Write(Level.ToString("D2")); } } Terminate(); }
public override void UnPauseEnemyComponentExcution() { CurrentEnemy.UnPauseEnemyComponentExcution(); }
public void DealDamage() { CurrentEnemy.GetDamage(DamagePerClick); }