View difference between Paste ID: mCKkmZZM and eTCg1mNd
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')