Skip to content

Latest commit

 

History

History
111 lines (66 loc) · 5.64 KB

File metadata and controls

111 lines (66 loc) · 5.64 KB

Pokemon Battle Program

  • Created using Object-Oriented Program

  • Was created by myself without any help or external programming resources (only referenced material was the official Pokemon stats, move stats, diologue and calculations)

  • Written in Java using VS Code

  • Main Features:

    • Allows full team, 6v6 Battling.
    • Allows move types to affect battle (Super effective, Not very effective, Does not affect).
    • Switch your active Pokemon during battle (Set switching).
    • Ability to select your Pokemon, the trainer / trainer's Pokemon, your moves each turn. (All inputs validated).
    • Checks that a user has enough PP (Power Points) to use their chosen move.
    • Advances Damage Calculation.
      • Calculations use the official damage formula.
      • Move Accuracy.
      • Speed stat determines move order. In the event of a speed tie, the order is randomly decided.
      • Move priority (such as Extreme Speed, having +2 priority, allows the user to go first regardless of speed stats).
      • STAB - Same-Type Attack Bonus.
      • Critical Hits.
      • Randomly fluctuating damage.
    • Custom victory message based on which trainer you beat (or a loss message if you fail, but hopefully not ;) ).

Features in more detail

  • UI uses the same text as the official games. Layout is as close as I can neatly get it inside the terminal:
pokemonBattle welcome message
  • OOP used to create Pokemon, Moves and Trainers
pokemonBattle oop
  • Generates Weakness Chart for both mono and dual-type Pokemon

    pokemonBattle typeChart
  • Type charts affect move damage, including immunities

pokemonBattle Super Effective
  • Allows Full 6v6 Battles
pokemonBattle Whole Team
  • Allow the user to switch Pokemon during battle. (Set switching - switching is instead of using a move).

    Set Switching
  • Checks users have nough PP to use a certain move

pokemonBattle PP chech
  • Added Dynamic Battle Screen
pokemonBattle dynamic battle screen
  • Validation on move selection
    • Choose your Pokemon
      • Choosing your pokemon changes the move pool
    • Choose the Trainer you want to face
    • Choose your move
pokemonBattle Choose Pokemon
  • All user inputs validated
pokemonBattle Validation on move selection
  • Get a different victory message based on your opponent
pokemonBattle Custom Battle
  • Various features shown below:
    • Code is modular to take advantage of reusable components
    • Fastest Pokemon moves first
    • Correct Hp shown when damage is dealt (will not drop below 0)
    • Custom message based on wether you won or lost
pokemonBattle various features
  • Battle will loop until a Pokemon faints
pokemonBattle Loops through
  • Uses Random to select the computer's moves and resolve speed ties (when both Pokemon have the same speed stat):
pokemonBattle Speed Ties
  • Includes damage multipliers such as STAB and the Physical/Special Move Split:
    • STAB - Same Type Attack Bonus: Attacks deal 1.5x damage is the Pokemon and move are of the same type.
    • Phys/Spec split uses Atk & Def/ SpAtk & SpDef to calculate move damage.
    • Randomised Damage between 0.85x and 1x overall damage
    • Attacks have a chance to miss based off the attack's accuracy
pokemonBattle stab and psysSpec pokemon randomisedDamage# pokemonBattle Attack accuracy
  • Added move priority. Metagross is slower than Garchomp, but Bullet Punch's priority allows Metagross to attack first.
pokemon Battle speed priority