Quellcode durchsuchen

Make Game and Sibling objects

master
Noëlle vor 2 Jahren
Ursprung
Commit
b7f10499de
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
1 geänderte Dateien mit 163 neuen und 0 gelöschten Zeilen
  1. 163
    0
      brontes.py

+ 163
- 0
brontes.py Datei anzeigen

@@ -0,0 +1,163 @@
from random import randint, shuffle

class Sibling:
def __init__(self):
self.tragedy = 0
self.masterpiece = 0
self.brother = 0
self.brother_count = 0
self.brother_ok = True
self.alive = True
self.rounds = 0
self.success = False

def round_check(self):
if self.tragedy >= 10:
self.alive = False
return False
self.rounds += 1
if self.tragedy < 0:
self.tragedy = 0
if self.masterpiece < 0:
self.masterpiece = 0
if self.brother < 0:
self.brother = 0
if self.masterpiece >= 5:
success = self.publication_attempt()
if success:
self.success = True
return True
else:
self.masterpiece = 0
if self.brother_ok and self.brother >= 5:
self.brother_count += 1
if self.brother_count >= 3:
self.brother_ok = False
self.brother = 0
self.masterpiece = 0

def publication_attempt(self):
if randint(1,6) == 6:
return True
return False

def __str__(self):
out_str = f"This sibling lasted {self.rounds} rounds. Their final scores were: Tragedy: {self.tragedy}, Masterpiece: {self.masterpiece}, Brother: {self.brother} (with {self.brother_count} resets)."
if self.success:
out_str += " They were successful in publishing their manuscript!"
return out_str

class Game:
def __init__(self, siblings=None, common_brother=None, brother_count=None):
self.num_siblings = int(siblings) if siblings else 3
self.common_brother = bool(common_brother) if common_brother else False
self.brother_count = int(brother_count) if brother_count else self.num_siblings
self.siblings = []
for _ in range(self.num_siblings):
self.siblings.append(Sibling())
if self.common_brother:
self.brother_ok = True

def is_brother_ok(self, sibling):
if self.common_brother and self.brother_ok:
return True
elif sibling.brother_ok and not self.common_brother:
return True
return False

def bronte_event(self, sibling):
event_type = randint(1,6)
if event_type <= 2:
self.quiet_day(sibling)
elif event_type <= 5:
self.walk_moors(sibling)
else:
sibling.masterpiece += 1

def quiet_day(self, sibling):
day_type = randint(1,6)
if day_type == 1:
sibling.tragedy += 1
if self.is_brother_ok(sibling):
sibling.brother += 1
elif day_type == 2:
sibling.masterpiece -= 1
elif day_type == 3:
if self.is_brother_ok(sibling):
sibling.brother += 3
elif day_type == 4:
sibling.masterpiece -= 3
elif day_type == 5:
sibling.masterpiece += 2
elif day_type == 6:
sibling.tragedy += 1
if self.is_brother_ok(sibling):
sibling.brother += 2

def walk_moors(self, sibling):
walk_type = randint(1,6)
if walk_type == 1:
sibling.tragedy += 1
elif walk_type == 2:
if self.is_brother_ok(sibling):
sibling.brother += 2
elif walk_type == 3:
sibling.tragedy += 2
elif walk_type == 4:
sibling.masterpiece += 1
elif walk_type == 5:
if self.is_brother_ok(sibling):
sibling.brother += 2
elif walk_type == 6:
sibling.tragedy += 1

def turn(self, sibling):
self.bronte_event(sibling)
check = sibling.round_check()
if check:
return True
return False

def round(self):
for sibling in self.siblings:
if sibling.alive:
break
else:
print("Everyone has died.")
for sibling in self.siblings:
print(sibling)
return False
temp_sibs = self.siblings[:]
shuffle(temp_sibs)
for current_sibling in temp_sibs:
cur_sib_num = self.siblings.index(current_sibling) + 1
if current_sibling.alive:
success = self.turn(current_sibling)
if success:
print(f"Sibling #{cur_sib_num} has published their masterpiece!")
for sibling in self.siblings:
print(sibling)
return False
if self.common_brother and self.brother_ok and not current_sibling.brother_ok:
self.brother_count -= 1
if self.brother_count <= 0:
self.brother_ok = False
return True

def play_game(self):
continue_playing = True
while continue_playing:
continue_playing = self.round()

if __name__ == "__main__":
# scores = {"Tragedy": {"Results": 0, "Brother OK": 0}, "Masterpiece": {"Results": 0, "Brother OK": 0}}
# for _ in range(100000):
# result, brother = play_brontes()
# scores[result]["Results"] = scores[result]["Results"] + 1
# if brother:
# scores[result]["Brother OK"] = scores[result]["Brother OK"] + 1

game = Game()
game.play_game()

# print(scores)

Laden…
Abbrechen
Speichern