public void Battle(ref BattleBot battleBot) { if (!blnIsBattleSoundPlaying) { battleSound.PlayLooping(); blnIsBattleSoundPlaying = true; } if (battleBot.Fuel > 0 && battleBot.HP > 0) { intBattleStartTime = intTimeSinceGameStart; string computerWeapon = WEAPONS[rGen.Next(WEAPONS.Length)]; Console.ForegroundColor = GetColorForWeapon(battleBot.Weapon); Console.WriteLine("███████████████████████████"); SpeakingConsole.WriteLine("\n\t" + battleBot.Weapon + " "); Console.ForegroundColor = ConsoleColor.White; SpeakingConsole.WriteLine("\n\t----- VS ----- "); Console.ForegroundColor = GetColorForWeapon(computerWeapon); SpeakingConsole.WriteLine("\n\t" + computerWeapon); // Pokemon Console.WriteLine("███████████████████████████"); Console.ForegroundColor = ConsoleColor.White; //SpeakingConsole.WriteLine("\nYou are being attacked by a " + computerWeapon + ". What do you do?"); bool blnValidAction = false; char charReadKey = '\0'; while (!blnValidAction) { bool blnCheatCodeWorked = false; SpeakingConsole.WriteLine("\nAttack, Defend, or Retreat"); for (int i = 0; i < KONAMI_CODE.Length; i++) { ConsoleKeyInfo key = Console.ReadKey(); charReadKey = key.KeyChar; if (key.Key != KONAMI_CODE[i]) { break; } if (i == KONAMI_CODE.Length - 1) { battleBot.addScore(20); SpeakingConsole.WriteLine("\nYou have cheated, trainer!! But you will get 20 extra points because that's just how the world is (unfair)"); blnCheatCodeWorked = true; } } if (blnCheatCodeWorked) { continue; } string strAction = SpeakingConsole.SpeakAndReturn(charReadKey + Console.ReadLine()); switch (strAction.Trim().ToLower()) { case "attack": blnValidAction = true; if (CanBeat(battleBot.Weapon, computerWeapon)) { if (IsCriticalTo(battleBot.Weapon, computerWeapon)) { battleBot.addScore(rGen.Next(6, 11)); SpeakingConsole.WriteLine("You have critically destroyed your opponent!!"); } else { battleBot.addScore(5); SpeakingConsole.WriteLine("You have destroyed your opponent!!"); } } else { if (IsCriticalTo(battleBot.Weapon, computerWeapon)) { battleBot.HPDown(rGen.Next(6, 11)); SpeakingConsole.WriteLine("You have tragically lost!!"); } else { battleBot.HPDown(5); SpeakingConsole.WriteLine("You have lost!!"); } } battleBot.FuelDown(2 * intTimeElapsed); break; case "defend": blnValidAction = true; if (CanBeat(battleBot.Weapon, computerWeapon)) { battleBot.addScore(2); SpeakingConsole.WriteLine("You have defended yourself like a noble man!!"); } else { if (IsCriticalTo(battleBot.Weapon, computerWeapon)) { battleBot.HPDown(rGen.Next(3, 5)); SpeakingConsole.WriteLine("Whoops, your shield has completely failed!!"); } else { battleBot.HPDown(2); SpeakingConsole.WriteLine("Whoops, your shield has failed!!"); } } battleBot.FuelDown(intTimeElapsed); break; case "retreat": blnValidAction = true; if (rGen.Next(0, 4) == 0) { SpeakingConsole.WriteLine("Unfortunately, you couldn't escape in time!!"); battleBot.HPDown(7); } else { SpeakingConsole.WriteLine("You have succesfully escaped from the battle like a coward!! No points for you!!"); } battleBot.FuelDown(3 * intTimeElapsed); break; case "absorb": if (battleBot.Weapon == computerWeapon) { blnValidAction = true; SpeakingConsole.WriteLine("You have succesfully absorbed the opponent's power!! This tastes yummy OwO"); Console.WriteLine("Professor Oak<> MMMMMmmmm... Fried " + battleBot.Weapon); battleBot.Refuel(10); battleBot.Heal(10); } break; } if (blnValidAction) { GetSoundForWeapon(battleBot.Weapon).PlaySync(); battleSound.Play(); } } Thread.Sleep(1000); SpeakingConsole.WriteLine("\nBot stats:\nName: " + battleBot.Name + "\nWeapon: " + battleBot.Weapon + "\nHP: " + battleBot.HP + "\nPower Points Left: " + battleBot.Fuel + "\nTurn Time: " + intTimeElapsed + "\nTotal Battle Time: " + intTimeSinceGameStart + "\nPoints: " + battleBot.Score + "\nHighest Score: " + battleBot.HighestScore); Thread.Sleep(1000); Battle(ref battleBot); } else { battleBot.UpdateHighScore(battleBot.Score); SpeakingConsole.WriteLine("Your bot has lost. Do you want to play again?"); string strInput = ""; if ((strInput = SpeakingConsole.ReadLine()) != "" && strInput.Trim().ToLower()[0] == 'y') { battleBot = PromptUserForBot(battleBot.HighestScore); Battle(ref battleBot); } } }
public void Battle(ref BattleBot battleBot) { if (!blnIsBattleSoundPlaying) { BattleSFX.PlayLooping(); blnIsBattleSoundPlaying = true; } if (battleBot.FuelLevel > 0 && battleBot.ConditionLevel > 0) { intBattleStartTime = intTimeSinceGameStart; string computerWeapon = WEAPONS[rGen.Next(WEAPONS.Length)]; ////////////////////////////////// Console.ForegroundColor = GetColorForWeapon(battleBot.Weapon); Console.WriteLine("███████████████████████████"); SpeakingConsole.WriteLine("\n\t\t" + battleBot.Weapon + " "); Console.ForegroundColor = ConsoleColor.White; SpeakingConsole.WriteLine("\n\t\t----- VS ----- "); Console.ForegroundColor = GetColorForWeapon(computerWeapon); SpeakingConsole.WriteLine("\n\t\t" + computerWeapon); // Pokemon Console.WriteLine("███████████████████████████"); Console.ForegroundColor = ConsoleColor.White; ////////////////////////////////// //SpeakingConsole.WriteLine("\nYou are being attacked by a " + computerWeapon + ". What do you do?"); bool blnValidAction = false; char charReadKey = '\0'; while (!blnValidAction) { bool blnCheatCodeWorked = false; SpeakingConsole.WriteLine("\nAttack, Defend, or Retreat"); for (int i = 0; i < KONAMI_CODE.Length; i++) { ConsoleKeyInfo key = Console.ReadKey(); charReadKey = key.KeyChar; if (key.Key != KONAMI_CODE[i]) { break; } if (i == KONAMI_CODE.Length - 1) { battleBot.GainPoints(20); SpeakingConsole.WriteLine("\nYou have cheated, trainer!! But you will get 20 extra points because that's just how the world is (unfair)"); PokeBallOpenSFX.PlaySync(); blnCheatCodeWorked = true; BattleSFX.PlayLooping(); } } if (blnCheatCodeWorked) { continue; } string strAction = SpeakingConsole.SpeakAndReturn(charReadKey + Console.ReadLine()); switch (strAction.Trim().ToLower()) { case "attack": blnValidAction = true; if (CanBeat(battleBot.Weapon, computerWeapon)) { if (IsCriticalTo(battleBot.Weapon, computerWeapon)) { battleBot.GainPoints(rGen.Next(6, 11)); SpeakingConsole.WriteLine("Professor Oak: You have critically destroyed your opponent!!"); ////////////////////////////////// /////////////////////////////////// ///////////////////////////////// } else { battleBot.GainPoints(5); SpeakingConsole.WriteLine("Professor Oak: You have destroyed your opponent!!"); } } else { if (IsCriticalTo(battleBot.Weapon, computerWeapon)) { battleBot.HandleDamage(rGen.Next(6, 11)); SpeakingConsole.WriteLine("Professor Oak: You have tragically lost!!"); } else { battleBot.HandleDamage(5); SpeakingConsole.WriteLine("Professor Oak: You have lost!!"); } } battleBot.ConsumeFuel(2 * intTimeElapsed); break; case "defend": blnValidAction = true; if (CanBeat(battleBot.Weapon, computerWeapon)) { battleBot.GainPoints(2); SpeakingConsole.WriteLine("Professor Oak: You have defended yourself like a noble man!!"); } else { if (IsCriticalTo(battleBot.Weapon, computerWeapon)) { battleBot.HandleDamage(rGen.Next(3, 5)); SpeakingConsole.WriteLine("Professor Oak: Whoops, your shield has completely failed!!"); } else { battleBot.HandleDamage(2); SpeakingConsole.WriteLine("Professor Oak: Whoops, your shield has failed!!"); } } battleBot.ConsumeFuel(intTimeElapsed); break; case "retreat": blnValidAction = true; if (rGen.Next(0, 4) == 0) { SpeakingConsole.WriteLine("Professor Oak: Unfortunately, you couldn't escape in time!!"); battleBot.HandleDamage(7); } else { SpeakingConsole.WriteLine("Professor Oak: You have succesfully escaped from the battle like a coward!! No points for you!!"); } battleBot.ConsumeFuel(3 * intTimeElapsed); break; case "absorb": if (battleBot.Weapon == computerWeapon) { blnValidAction = true; SpeakingConsole.WriteLine("You have succesfully absorbed the opponent's power!! This tastes yummy OwO"); SpeakingConsole.WriteLine("Professor Oak: Mmmmm... Fried " + computerWeapon); battleBot.Refuel(10); battleBot.Heal(10); } break; } if (blnValidAction) { GetSoundForWeapon(battleBot.Weapon).PlaySync(); BattleSFX.Play(); } } Thread.Sleep(1000); SpeakingConsole.WriteLine("\nBot stats:"); if (battleBot.Name == "PokeBall") { Console.WriteLine("────────▄███████████▄────────"); Console.WriteLine("─────▄███▓▓▓▓▓▓▓▓▓▓▓███▄─────"); Console.WriteLine("────███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███────"); Console.WriteLine("───██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██───"); Console.WriteLine("──██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██──"); Console.WriteLine("─██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██─"); Console.WriteLine("██▓▓▓▓▓▓▓▓▓███████▓▓▓▓▓▓▓▓▓██"); Console.WriteLine("██▓▓▓▓▓▓▓▓██░░░░░██▓▓▓▓▓▓▓▓██"); Console.WriteLine("██▓▓▓▓▓▓▓██░░███░░██▓▓▓▓▓▓▓██"); Console.WriteLine("███████████░░███░░███████████"); Console.WriteLine("██░░░░░░░██░░███░░██░░░░░░░██"); Console.WriteLine("██░░░░░░░░██░░░░░██░░░░░░░░██"); Console.WriteLine("██░░░░░░░░░███████░░░░░░░░░██"); Console.WriteLine("─██░░░░░░░░░░░░░░░░░░░░░░░██─"); Console.WriteLine("──██░░░░░░░░░░░░░░░░░░░░░██──"); Console.WriteLine("───██░░░░░░░░░░░░░░░░░░░██───"); Console.WriteLine("────███░░░░░░░░░░░░░░░███────"); Console.WriteLine("─────▀███░░░░░░░░░░░███▀─────"); Console.WriteLine("────────▀███████████▀────────"); } SpeakingConsole.WriteLine("Trainers Name: " + battleBot.Name + ","); // Color Desiders if (battleBot.Weapon == "Pickachu") { Console.ForegroundColor = ConsoleColor.Yellow; } else if (battleBot.Weapon == "Geodude") { Console.ForegroundColor = ConsoleColor.Gray; } else if (battleBot.Weapon == "Squirtle") { Console.ForegroundColor = ConsoleColor.Blue; } else if (battleBot.Weapon == "Swadloon") { Console.ForegroundColor = ConsoleColor.Green; } else if (battleBot.Weapon == "Charmander") { Console.ForegroundColor = ConsoleColor.DarkRed; } SpeakingConsole.WriteLine("Pokemon: " + battleBot.Weapon + ","); Console.ForegroundColor = ConsoleColor.White; SpeakingConsole.WriteLine("Condition Level: " + battleBot.ConditionLevel + ","); SpeakingConsole.WriteLine("Power Points:" + battleBot.FuelLevel + ",\nTurn Time: " + intTimeElapsed + ",\nTotal Battle Time: " + intTimeSinceGameStart + ",\nPoints: " + battleBot.Score + ",\nHighest Score: " + battleBot.HighScore); SpeakingConsole.WriteLine("\n Health Left: ##"); SpeakingConsole.WriteLine("\n Power Left: "); //Console.WriteLine("\n Next Move: "); Thread.Sleep(1000); Battle(ref battleBot); } else { battleBot.UpdateHighScore(battleBot.Score); SpeakingConsole.WriteLine("Your pokemon has lost. Do you want to play again?"); if (SpeakingConsole.ReadLine().Trim().ToLower()[0] == 'y') { battleBot = PromptUserForBot(battleBot.HighScore); Battle(ref battleBot); } } }