SHOW:
|
|
- or go back to the newest paste.
1 | from random import randint, choice | |
2 | ||
3 | ||
4 | class Character: | |
5 | def __init__(self): | |
6 | self.name = "" | |
7 | self.life = 1 | |
8 | self.max_life = 1 | |
9 | ||
10 | def do_attack(self, enemy): | |
11 | ||
12 | attack = randint(0, 3) | |
13 | ||
14 | if attack == 0: | |
15 | print(f"{enemy.name} dodges {self.name}'s attack.") | |
16 | else: | |
17 | print(f"{self.name} attacks {enemy.name}, dealing {attack} damage.") | |
18 | enemy.life -= attack | |
19 | ||
20 | ||
21 | class Enemy(Character): | |
22 | def __init__(self, player): | |
23 | super().__init__() | |
24 | self.name = choice(['Goblin', 'Skeleton', 'Zombie']) | |
25 | self.life = randint(1, player.life) | |
26 | ||
27 | ||
28 | class Player(Character): | |
29 | def __init__(self): | |
30 | super().__init__() | |
31 | self.life = 10 | |
32 | self.max_life = 10 | |
33 | self.name = input('Enter player name: ') | |
34 | ||
35 | def rest(self): | |
36 | self.life += 1 | |
37 | if self.life > self.max_life: | |
38 | self.life = self.max_life | |
39 | print(f'{self.name} is resting, life: {self.life}/{self.max_life}') | |
40 | ||
41 | def combat(self, enemy): | |
42 | combat = True | |
43 | while combat: | |
44 | print(f'Player\'s life: {self.life}') | |
45 | print(f'{enemy.name}\'s life: {enemy.life}') | |
46 | combat_action = input('Action (attack, run): ') | |
47 | if combat_action == 'attack': | |
48 | self.do_attack(enemy) | |
49 | if enemy.life <= 0: | |
50 | print(f'{self.name} defeats {enemy.name}') | |
51 | return True | |
52 | enemy.do_attack(self) | |
53 | elif combat_action == 'run': | |
54 | print(f'{self.name} runs') | |
55 | enemy.do_attack(self) | |
56 | combat = False | |
57 | else: | |
58 | print('Unknown action') | |
59 | ||
60 | if self.life <= 0: | |
61 | print(f'{self.name} dies') | |
62 | return False | |
63 | return True | |
64 | ||
65 | ||
66 | player = Player() | |
67 | game = True | |
68 | while game: | |
69 | action = input('Action (explore, rest): ') | |
70 | ||
71 | if action == 'explore': | |
72 | if randint(0, 1) == 0: | |
73 | print(f'{player.name} found a cave') | |
74 | else: | |
75 | enemy = Enemy(player) | |
76 | print(f'{player.name} stumbled upon a {enemy.name}') | |
77 | game = player.combat(enemy) | |
78 | elif action == 'rest': | |
79 | player.rest() | |
80 | else: | |
81 | print('Unknown action') |