Skip to content

Commit 4573eff

Browse files
committed
Revisited App7 TalkPython Jumpstarter course notes on classes.
Updates...
1 parent e96cb3b commit 4573eff

File tree

2 files changed

+46
-19
lines changed

2 files changed

+46
-19
lines changed
Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
import random
22

33

4-
class Wizard:
4+
class Creature:
55

66
def __init__(self, name, the_level):
77
self.name = name
8-
self.level = the_level
8+
self.level = the_level
9+
10+
def __repr__(self):
11+
return f"Creature {self.name} of level {self.level}"
12+
13+
def get_defensive_roll(self):
14+
return random.randint(1, 12) * self.level
15+
16+
17+
class Wizard(Creature):
18+
19+
def __init__(self, name, the_level):
20+
super().__init__(name, the_level)
21+
922

1023
def attack(self, creature):
1124
print(f'The wizard {self.name} attacks {creature.name}!')
1225

13-
my_roll = random.randint(1, 12) * self.level
14-
creature_roll = random.randint(1, 12) * self.level
26+
#my_roll = random.randint(1, 12) * self.level
27+
my_roll = creature.get_defensive_roll()
28+
# creature_roll = random.randint(1, 12) * self.level
29+
creature_roll = creature.get_defensive_roll()
1530

1631
print(f'You roll {my_roll}')
1732
print(f'{creature.name} rolls {creature_roll}')
@@ -25,19 +40,27 @@ def attack(self, creature):
2540
print()
2641

2742

43+
class SmallAnimal(Creature):
2844

29-
class Creature:
30-
# level
31-
# name
45+
def get_defensive_roll(self):
46+
base_roll = super().get_defensive_roll()
47+
return base_roll / 2
48+
49+
class Dragon(Creature):
50+
51+
def __init__(self, name, level, scaliness, breathes_fire):
52+
super().__init__(name, level)
53+
self.breathes_fire = breathes_fire
54+
self.scaliness = scaliness
55+
56+
def get_defensive_roll(self):
57+
base_roll = super().get_defensive_roll()
58+
fire_modifier = 5 if self.breathes_fire else 1
59+
scale_modifier = self.scaliness / 10
60+
61+
return base_roll * fire_modifier * scale_modifier
3262

33-
# need to generate instance attributes or instance variables
3463

35-
# add a magic method as
3664

37-
def __init__(self, name, the_level):
38-
self.name = name
39-
self.level = the_level
4065

41-
def __repr__(self):
42-
return f"Creature {self.name} of level {self.level}"
4366

days/13-15-text-games/my_code/wizard_game/program.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import random
33
import time
44

5-
from actors import Wizard, Creature
5+
from actors import Wizard, Creature, SmallAnimal, Dragon
66

77

88
def main():
@@ -20,11 +20,11 @@ def print_header():
2020
def game_loop():
2121

2222
creatures = [
23-
Creature('Toad', 1),
23+
SmallAnimal('Toad', 1),
2424
Creature('Tiger', 12),
25-
Creature('Bat', 3),
26-
Creature('Dragon', 50),
27-
Creature('Evil Wizard', 1000),
25+
SmallAnimal('Bat', 3),
26+
Dragon('Dragon', 50, 75, True),
27+
Wizard('Evil Wizard', 1000),
2828
]
2929

3030
# print(creatures)
@@ -58,6 +58,10 @@ def game_loop():
5858
print('OK... exiting game')
5959
break
6060

61+
if not creatures:
62+
print(f'You have defeated all the creatures, well done!')
63+
break
64+
6165
print()
6266

6367

0 commit comments

Comments
 (0)