self.masunten = box(frame=self, pos=(0,-50,0), size=(100,.5,.5), axis=axis, color=color) class maßbandy(frame): def __init__(self, pos, axis, color=color.black): frame.__init__(self, pos=pos, axis=axis) self.pos = pos self.axis = axis self.color = color self.masunten = box(frame=self, pos=(0,50,0), size=(.5,100,.5), axis=axis, color=color) if __name__ == "__main__": my1 = maßbandy((0,0,0), (0,1,0)) my2 = maßbandy((25,0,0), (0,1,0)) my3 = maßbandy((50,0,0), (0,1,0)) my4 = maßbandy((75,0,0), (0,1,0)) my5 = maßbandy((100,0,0), (0,1,0)) mx1 = maßbandx((0,0,0), (1,0,0)) mx2 = maßbandx((0,25,0), (1,0,0)) mx3 = maßbandx((0,50,0), (1,0,0)) mx4 = maßbandx((0,75,0), (1,0,0)) mx5 = maßbandx((0,100,0), (1,0,0)) s = Spielbrett() s.animation()
def spielstart(self): # Spielroutine "Hauptmethode, steuert Spiel und Zugroutinen" self.listeKontinente.sort(key=self.sort_k) # Kontinente werden nach Name sortiert root=Tk() while True: # Anfangsschleife für S hinzufügen try: # veruche folgendes def spieler_einfuegen(event): "Methode um S einzufügen" spielername.config(state=DISABLED) name = spielername.get() # Speichere aktuelle Eingabe unter Name if name == "": # Wenn keine Eingabe spielerl.insert(END, "Bitte Name eingeben!\n") # bitte Eingabe erscheint im Fenster return # Ende der Fkt if name.count(" ") == len(name): # Wenn nur Leerzeichen (HaHaHa) spielerl.insert(END, "Bitte gültigen Namen eingeben!\n") # bitte korrekte Eingabe erscheint im Fenster spielername.delete(0,END) # Eingabe wird entfernt return # Ende der Fkt. farbe_waehlen() def kulanz_test(name, farbe): aktname = None aktnamezahl = 0 for i in self.listeSpieler: if i.name == name: aktnamezahl += 1 else: pass if aktnamezahl >= 1: spielerl.insert(END, "Name bereits vergeben!\n") else: self.listeSpieler.append(Spieler(name=name, farbe=farbe)) spielerl.insert(END, "Spieler "+name+" hinzugefügt!\n") def weiter(): "Wenn keine Spieler mehr eingefügt werden sollen" if len(self.listeSpieler) > 0: # wenn mehr als ein S vorhanden sind root.destroy() # Fenster wird zerstört (sehr brutal) else: # wenn kein S vorhanden spielerl.insert(END, "Vor Start bitte Name eingeben!\n") # Bitte S hinzufügen erscheint im Fenster def farbe_waehlen(): global rot global blau global gruen global gelb global lila global weiss rot = Button(root, text="Rot wählen", command = farbe_zuweisen_rot, width=20, background="red") rot.grid(row=2, sticky=W) blau = Button(root, text="Blau wählen", command = farbe_zuweisen_blau, width=20, background="blue") blau.grid(row=2, sticky=E) gruen = Button(root, text="Grün wählen", command = farbe_zuweisen_gruen, width=20, background="green") gruen.grid(row=3, sticky=W) gelb = Button(root, text="Gelb wählen", command = farbe_zuweisen_gelb, width=20, background="yellow") gelb.grid(row=3, sticky=E) lila = Button(root, text="Lila wählen", command = farbe_zuweisen_lila, width=20, background="purple") lila.grid(row=4, sticky=W) weiss = Button(root, text="Weiss wählen", command = farbe_zuweisen_weiss, width=20, background="white") weiss.grid(row=4, sticky=E) spielerl.insert(END, "Bitte Farbe wählen!\n") def farbe_zuweisen_rot(): aktname = spielername.get() # Speichere aktuelle Eingabe unter Name kulanz_test(aktname, color.red) farbe_ende() def farbe_zuweisen_blau(): aktname = spielername.get() # Speichere aktuelle Eingabe unter Name kulanz_test(aktname, color.blue) farbe_ende() def farbe_zuweisen_gruen(): aktname = spielername.get() # Speichere aktuelle Eingabe unter Name kulanz_test(aktname, color.green) farbe_ende() def farbe_zuweisen_gelb(): aktname = spielername.get() # Speichere aktuelle Eingabe unter Name kulanz_test(aktname, color.yellow) farbe_ende() def farbe_zuweisen_lila(): aktname = spielername.get() # Speichere aktuelle Eingabe unter Name kulanz_test(aktname, color.magenta) farbe_ende() def farbe_zuweisen_weiss(): aktname = spielername.get() # Speichere aktuelle Eingabe unter Name kulanz_test(aktname, color.white) farbe_ende() def farbe_ende(): spielerl.see(END) starten.config(state=NORMAL) rot.destroy() blau.destroy() gruen.destroy() gelb.destroy() lila.destroy() weiss.destroy() spielername.config(state=NORMAL) spielername.delete(0,END) # Eingabe wird entfernt Label(root, text="Name eingeben:").grid(row=1, sticky=W) # Schriftzug neben dem Eingabefeld spielerl = Text(root, height=5, width=40) # Ausgabefenster spielerl.grid(row=0) # wird positioniert spielername = Entry(root) # Eingabefeld spielername.bind("<Return>", spieler_einfuegen) # wird an Eingabetaste gebunden spielername.grid(row=1, sticky=E) # und positioniert starten = Button(root, text="Spiel starten", command = weiter, width=20, state=DISABLED) # Startbutton, ist an weiter() gebunden starten.grid(row=5, sticky=W) ende = Button(root, text="Spiel beenden", command = exit, width=20) # Endebutton, beendet Spiel ende.grid(row=5, sticky=E) root.mainloop() # Fenster wird erstellt (mit allen Knöpfen Eingabe/Ausgabefeldern etc. , muss immer am Ende stehen except TclError: # wenn Fehler das Fenster nicht mehr existiert (nach Fenster zerstören, siehe weiter()) break # breche Schleife ab, gehe weiter im Programm zaehler = 0 # definition Zähler self.karte = Spielbrett() # Spielbrett ist karte des Controllers self.gui = Konsole() # Konsole ist GUI des Controllers while True: # Hauptschleife, Spiel an sich self.karte.animation() # coole Zoom/Schwenkanimation zaehler = zaehler+1 # Zähler + 1 aktuellerSpieler = self.listeSpieler[zaehler%(len(self.listeSpieler))-1] # aktueller S wird bestimmt if zaehler == 1: # erste Runde aktuellerSpieler.land_erobern() # land_erobern wird ausgeführt (Testzweck) self.karte.land_waehlen() # Methode um bestimmtes L auszuwählen aktuellerSpieler.kontinent_bekommen() # kontinent_bekommen wird ausgeführt (fest) aktuellerSpieler.armeen_setzten(29, brasilien) # 29 Figuren werden in Brasilien positioniert aktuellerSpieler.armeen_setzten(100, neuguinea) # 100 Figuren werden in Neu-Guinea positioniert print(aktuellerSpieler) # Ausgabe aktueller S aktuellerSpieler.armeen_bekommen() # aktueller S bekommt A aktuellerSpieler.karten_eintauschen() # aktueller S kann Karten tauschen ( in entwicklung) self.karte.animation_back() # coole Animation rückwärts if zaehler == 6: # nach 6 Spielzügen bricht das Spiel ab break