Skip to content

Commit 2fce484

Browse files
authored
Merge pull request #10 from juanzq10dev/POKEMON-Clean-battles-turn-code
Pokemon clean battles turn code
2 parents b14bc63 + d9c6db5 commit 2fce484

File tree

4 files changed

+62
-67
lines changed

4 files changed

+62
-67
lines changed

reference-vault/projects/pokemon/src/app/game/battle.py

Lines changed: 26 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -5,83 +5,68 @@
55

66

77
class Battle:
8-
def __init__(self):
9-
self.trainer1 = Pokemon_Trainer(
10-
"Player 1", [Pokemon("Pikachu", 100), Pokemon("Raychu", 200)]
11-
)
12-
self.trainer2 = Pokemon_Trainer(
13-
"Player 2", [Pokemon("Charizard", 100), Pokemon("Bulbasaur", 200)]
14-
)
15-
self.pokemon1 = self.trainer1.pokemon_team[0]
16-
self.pokemon2 = self.trainer2.pokemon_team[0]
17-
self.players_turn = self.pokemon2
18-
self.not_players_turn = self.pokemon1
8+
def __init__(self, trainer1: Pokemon_Trainer, trainer2: Pokemon_Trainer):
9+
self.trainer1 = trainer1
10+
self.trainer2 = trainer2
11+
self.players_turn = self.trainer2
12+
self.not_players_turn = self.trainer1
1913
pass
2014

2115
def change_turn(self):
22-
if self.players_turn == self.pokemon1:
23-
self.players_turn = self.pokemon2
24-
self.not_players_turn = self.pokemon1
16+
if self.players_turn == self.trainer1:
17+
self.players_turn = self.trainer2
18+
self.not_players_turn = self.trainer1
2519
else:
26-
self.players_turn = self.pokemon1
27-
self.not_players_turn = self.pokemon2
28-
29-
30-
def update_pokemon(self):
31-
if self.players_turn is self.pokemon1:
32-
self.pokemon1 = self.trainer1.choose_pokemon()
33-
else:
34-
self.pokemon2 = self.trainer2.choose_pokemon()
35-
20+
self.players_turn = self.trainer1
21+
self.not_players_turn = self.trainer2
3622

3723
def game_loop(self):
3824
game_finished = False
3925
while not game_finished:
4026
self.show_health_bars()
41-
self.action()
27+
self.action(self.players_turn, self.not_players_turn)
4228
game_finished = self.check_game_finished()
4329
self.change_turn()
4430

4531
self.show_health_bars()
4632

4733
def check_game_finished(self) -> bool:
48-
if self.pokemon1.hp <= 0:
49-
display_message.show_winner(self.pokemon2.name)
34+
if self.trainer1.get_pokemon_in_battle().hp <= 0:
35+
display_message.show_winner(self.trainer2.name)
5036
return True
5137

52-
if self.pokemon2.hp <= 0:
53-
display_message.show_winner(self.pokemon1.name)
38+
if self.trainer2.get_pokemon_in_battle().hp <= 0:
39+
display_message.show_winner(self.trainer1.name)
5440
return True
5541

5642
return False
5743

58-
def action(self):
59-
display_message.choose_action(self.players_turn.name)
44+
def action(self, attacker: Pokemon_Trainer, defender: Pokemon_Trainer):
45+
display_message.choose_action(attacker.name)
6046

6147
user_input_int = io.read_input_int("Select action: ")
6248

6349
if user_input_int is None:
6450
display_message.invalid_action()
6551
self.action()
6652

53+
attacker_pokemon = attacker.get_pokemon_in_battle()
54+
defender_pokemon = defender.get_pokemon_in_battle()
55+
6756
match user_input_int:
6857
case 1:
69-
self.use_movement()
58+
display_message.choose_movement(attacker_pokemon.moves)
59+
attacker_pokemon.use_move(attacker.choose_attack(), defender_pokemon)
7060
case 2:
71-
self.players_turn.heal()
61+
attacker_pokemon.heal()
7262
case 3:
73-
self.update_pokemon()
63+
attacker.choose_pokemon()
7464
case _:
7565
display_message.invalid_action()
7666
self.action()
7767

7868
self.players_turn
7969

80-
def use_movement(self):
81-
display_message.choose_movement(self.players_turn.moves)
82-
user_input_int = io.read_input_int("Select an option: ")
83-
self.players_turn.use_move(user_input_int, self.not_players_turn)
84-
8570
def show_health_bars(self):
86-
display_message.show_pokemon_healthbar(self.pokemon1)
87-
display_message.show_pokemon_healthbar(self.pokemon2)
71+
display_message.show_pokemon_healthbar(self.trainer1.get_pokemon_in_battle())
72+
display_message.show_pokemon_healthbar(self.trainer2.get_pokemon_in_battle())

reference-vault/projects/pokemon/src/app/game/trainer.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,32 @@ class Pokemon_Trainer:
88
def __init__(self, name: str, pokemon_team: List["Pokemon"]):
99
self.name = name
1010
self.pokemon_team = pokemon_team
11-
self.pokemon_in_battle = pokemon_team[0]
11+
self.pokemon_in_battle_index = 0
1212

13-
def choose_pokemon(self) -> "Pokemon":
13+
def get_pokemon_in_battle(self) -> "Pokemon":
14+
return self.pokemon_team[self.pokemon_in_battle_index]
15+
16+
def choose_attack(self) -> int:
17+
user_input_int = io.read_input_int("Select an option")
18+
if (
19+
user_input_int is None
20+
or user_input_int < 0
21+
or user_input_int >= len(self.get_pokemon_in_battle().moves)
22+
):
23+
self.choose_attack()
24+
25+
return user_input_int
26+
27+
def choose_pokemon(self) -> None:
1428
display_messages.select_pokemon(self.pokemon_team)
1529
user_input_int = io.read_input_int("Select action: ")
1630

17-
if user_input_int < 0 or user_input_int > len(self.pokemon_team):
31+
if (
32+
user_input_int is None
33+
or user_input_int < 0
34+
or user_input_int >= len(self.pokemon_team)
35+
or user_input_int == self.pokemon_in_battle_index
36+
):
1837
self.choose_pokemon()
1938

20-
return self.pokemon_team[user_input_int]
39+
self.pokemon_in_battle_index = user_input_int
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
import app.game.battle as battle
2+
from app.lib.pokemon import Pokemon
3+
from app.game.trainer import Pokemon_Trainer
4+
25

36
def main() -> None:
4-
battle.Battle().game_loop()
7+
trainer1 = Pokemon_Trainer(
8+
"Player 1", [Pokemon("Pikachu", 100), Pokemon("Raychu", 200)]
9+
)
10+
trainer2 = Pokemon_Trainer(
11+
"Player 2", [Pokemon("Charizard", 100), Pokemon("Bulbasaur", 200)]
12+
)
513

14+
battle.Battle(trainer1, trainer2).game_loop()
15+
16+
617
if __name__ == "__main__":
7-
main()
18+
main()

reference-vault/projects/pokemon/src/app/ui/battle_simulation.py

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)