-
Notifications
You must be signed in to change notification settings - Fork 0
/
PyRPGCombat.py
70 lines (54 loc) · 1.79 KB
/
PyRPGCombat.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# RPG Combat illustrating passing functions
import random
# Player
class Player:
def __init__(self,name,skill,stamina,weapon,armor):
self.name = name
self.skill = skill
self.stamina = stamina
self.weapon = weapon
self.armor = armor
print(f"Created player {self.name} with skill {self.skill} and stamina {self.stamina}")
print(f"Armed with {self.weapon.__name__}, and armored with {self.armor.__name__}")
def isDead(self):
return self.stamina <= 0
def hitOpponent(self):
return random.randint(1,12) <= self.skill
def takeHit(self,weapon):
damage = self.armor(weapon)
if damage < 0:
self.stamina = self.stamina + damage
print(f"Player {self.name} took {0-damage} damage")
# Weapons
class Weapons:
def dagger():
return random.randint(1,4)
def sword():
return random.randint(1,8)
def club():
return random.randint(1,6)
def greatsword():
return random.randint(1,10)
# Armor
class Armors:
def none(func):
return 0-func()
def padded(func):
return random.randint(1,6) - func()
def chain(func):
return random.randint(1,8) - func()
# Main Loop
playerA = Player("A",random.randint(1,12),random.randint(1,12),Weapons.sword,Armors.chain)
playerB = Player("B",random.randint(1,12),random.randint(1,12),Weapons.club,Armors.padded)
done = False
while done==False:
if playerA.hitOpponent():
playerB.takeHit(playerA.weapon)
if playerB.hitOpponent():
playerA.takeHit(playerB.weapon)
if playerA.isDead():
print(f"Player {playerA.name} was slain")
done = True
if playerB.isDead():
print(f"Player {playerB.name} was slain")
done = True