#!/usr/bin/env python import random class Segel: def __init__(self, name, artikel, fall:int=0, schot:int=0): self.name = name self.artikel = artikel self.fall = fall self.schot = schot def hissen(self): self.fall += 1 def reffen(self): self.fall -=1 def fieren(self): self.schot +=1 def dichtholen(self): self.schot -=1 class Ruder: def __init__(self, name, artikel='das', kurs:int=0): self.name = name self.artikel = artikel self.kurs = kurs def backbord(self): self.kurs -= 1 def steuerbord(self): self.kurs += 1 class Matrose: def __init__(self, name, isBoss:bool=False): self.name = name self.aufgabe = None self.isBoss = isBoss def addAufgabe(self, aufgabe): self.aufgabe = aufgabe def delAufgabe(self): self.aufgabe = None class Smutje: def __init__(self, matrose, gericht): self.matrose = matrose self.gericht = gericht class Schiff: gerichte = ['Kiymali Menemen', 'Bratnudeln', 'Tiramisu', 'Erbsensuppe'] wind = set([ 'Flaute bei 0 Beaufort', 'schwachen Wind von 1 Bft', 'schwachen Wind mit 2 Bft', 'schwachen Wind bei 3 Bft', 'mäßigen Wind mit 4 Bft', 'frischen Wind bei 5 Bft', 'starken Wind (6 Bft)', 'starken Wind (7 Bft)', 'Sturm bei 8 Beaufort', 'Sturm mit 9 Beaufort', 'schweren Sturm mit 10 Bft', 'orkanartigen Sturm mit 11 Bft', 'einen Orkan mit 12 Bft' ]) def __init__(self, name): self.name = name self.boss = Matrose('Ahab', isBoss=True) self.matrosen = set([ Matrose('Karl'), Matrose('John'), Matrose('Noah'), Matrose('Liam'), Matrose('Pete'), Matrose('Eric'), Matrose('Ryan'), Matrose('Hans'), Matrose('Marc'), ]) self.smutjes = set([Smutje(*mg) for mg in zip(random.sample(self.matrosen, len(self.gerichte)), self.gerichte)]) self.aufgaben = set([ Segel('Fock', 'die'), Segel('Gross', 'das'), Segel('Besan', 'den'), Ruder('Ruder', 'das'), ]) self.aufgabenVerteilen() def aufgabenVerteilen(self): for matrose in self.matrosen: matrose.delAufgabe() for idx, matrose in enumerate(random.sample(self.matrosen, len(self.aufgaben))): matrose.addAufgabe(list(self.aufgaben)[idx]) def printPlan(self): aufgaben = dict() for matrose in self.matrosen: if matrose.aufgabe: aufgaben[matrose.aufgabe.name] = matrose.name header = f'Willkommen auf der "{self.name}" unter Kapitän {self.boss.name}' print(header) print('=' * len(header)) print('Die Aufgaben für heute:') for aufgabe in self.aufgaben: print(f' - {aufgaben[aufgabe.name]} bedient {aufgabe.artikel} {aufgabe.name}.') smutje = random.choice(list(self.smutjes)) print(f' {smutje.matrose.name} ist Smutje und kocht {smutje.gericht}.') print(f' Wir erwarten {random.choice(list(self.wind))}.\n') if __name__ == '__main__': # Windows-User müssen das irgendwie anders machen... with open('/dev/random', 'rb') as ifh: random.seed(ifh.read(20)) s = Schiff('Andrea Doria') s.printPlan() for i in range(3): s.aufgabenVerteilen() s.printPlan()