-
Notifications
You must be signed in to change notification settings - Fork 0
/
main_term.py
156 lines (128 loc) · 4.34 KB
/
main_term.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import random
class World:
def __init__(self):
self.families = []
self.resources = {"food": 100, "water": 100, "faith": 0}
self.regions = []
def update(self):
for family in self.families:
family.update()
# Random events
if random.random() < 0.1:
self.resources["food"] += 10
print("A bountiful harvest has increased the food supply by 10!")
if random.random() < 0.1:
self.resources["faith"] += 10
print("A religious event has increased the faith of the people by 10!")
def add_family(self, family):
self.families.append(family)
class Family:
def __init__(self, world, region):
self.world = world
self.region = region
self.characters = []
# Add at least 2 characters
for i in range(2):
self.add_character()
def update(self):
for character in self.characters:
character.update()
# Add a new character randomly
if random.random() < 0.1:
self.add_character()
def add_character(self):
character = Character(self)
self.characters.append(character)
class Region:
def __init__(self, name):
self.name = name
class Character:
def __init__(self, family):
self.family = family
self.hunger = 0
self.thirst = 0
self.age = 0
self.faith = 0
def update(self):
self.hunger += 1
self.thirst += 1
self.age += 1
self.faith -= 1
if self.hunger >= 100:
self.die()
if self.thirst >= 100:
self.die()
def die(self):
self.family.characters.remove(self)
def eat(self, food):
self.hunger -= food
def drink(self, water):
self.thirst -= water
def worship(self, faith):
self.faith += faith
class Player:
def __init__(self, world):
self.world = world
def create_family(self):
region = random.choice(self.world.regions)
family = Family(self.world, region)
self.world.add_family(family)
def feed_family(self, family, food):
if self.world.resources["food"] >= food:
for character in family.characters:
character.eat(food)
self.world.resources["food"] -= food
def give_water_to_family(self, family, water):
if self.world.resources["water"] >= water:
for character in family.characters:
character.drink(water)
self.world.resources["water"] -= water
def inspire_faith(self, family, faith):
for character in family.characters:
character.worship(faith)
self.world.resources["faith"] += faith
# Create a new world and player
world = World()
player = Player(world)
# Create some regions
world.regions.append(Region("Desert"))
world.regions.append(Region("Jungle"))
world.regions.append(Region("Mountains"))
# Main game loop
while True:
# Update the world
world.update()
# Print the current state of the world
print("Resources:")
print(" Food:", world.resources["food"])
print(" Water:", world.resources["water"])
print(" Faith:", world.resources["faith"])
print("Families:")
for i, family in enumerate(world.families):
print(f" Family {i}:")
print(" Region:", family.region.name)
print(" Characters:")
for j, character in enumerate(family.characters):
print(f" Character {j}:")
print(" Hunger:", character.hunger)
print(" Thirst:", character.thirst)
print(" Age:", character.age)
print(" Faith:", character.faith)
# Let the player take an action
action = input("What do you want to do? (create/feed/water/faith) ")
if action == "create":
player.create_family()
elif action == "feed":
family_index = int(input("Which family do you want to feed? (Enter the family's index) "))
food = int(input("How much food do you want to give? "))
player.feed_family(world.families[family_index], food)
elif action == "water":
family_index = int(input("Which family do you want to give water to? (Enter the family's index) "))
water = int(input("How much water do you want to give? "))
player.give_water_to_family(world.families[family_index], water)
elif action == "faith":
family_index = int(input("Which family do you want to inspire? (Enter the family's index) "))
faith = int(input("How much faith do you want to inspire? "))
player.inspire_faith(world.families[family_index], faith)
else:
print("Invalid action")