ich habe jetzt an meinem Würfelspiel etwas weitergemacht und vom Prinzip her funktioniert es auch schon. Aber irgendwie scheinen die Würfel nicht exakt die Kantenlänge zu haben, die ich vorgebe. Weiss jemand woran das liegt?
Code: Alles auswählen
import tkinter as tk
import random
class MainWindow(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.kantenlaenge_wuerfel = 100
self.durchmesser_wuerfelauge = 20
self.radius_wuerfelauge = self.durchmesser_wuerfelauge/2
self.cancel_id_wuerfeln = None
self.rahmen_1 = tk.Frame(self, width=200, height=100, relief="sunken", bd=1)
self.rahmen_1.pack(padx=10, pady=10)
self.label_spieler_1 = tk.Label(self.rahmen_1, text="Spieler 1: 0", fg="blue", font="Helvetica 12 bold")
self.label_spieler_1.pack(ipadx=20, ipady=0, side="left")
self.label_spieler_2 =tk.Label(self.rahmen_1, text="Spieler 2: 0", fg="red", font="Helvetica 12 bold")
self.label_spieler_2.pack(ipadx=20, ipady=0, side="left")
self.rahmen_2 = tk.Frame(self, width=200, height=100, relief="sunken", bd=1)
self.rahmen_2.pack(padx=10, pady=10)
self.canvas_1 = tk.Canvas(self.rahmen_2, bg = "blue", height = self.kantenlaenge_wuerfel, width = self.kantenlaenge_wuerfel, bd="1")
self.canvas_1.pack(padx=10, pady=10, side="left")
self.canvas_1.create_rectangle(5, 5, self.kantenlaenge_wuerfel-5, self.kantenlaenge_wuerfel-5, fill="white")
self.canvas_2 = tk.Canvas(self.rahmen_2, bg="red", height=self.kantenlaenge_wuerfel, width=self.kantenlaenge_wuerfel)
self.canvas_2.create_rectangle(5, 5, self.kantenlaenge_wuerfel - 5, self.kantenlaenge_wuerfel - 5, fill="white")
self.canvas_2.pack(padx=10, pady=10, side="left")
self.rahmen_3 = tk.Frame(self, width=200, height=100, relief="sunken", bd=0)
self.rahmen_3.pack(padx=10, pady=10)
self.ergebnislabel = tk.Label(self.rahmen_3, text=" ", font="Helvetica 16 bold")
self.ergebnislabel.pack(ipadx=10, ipady=10, side="top")
self.rahmen_4 = tk.Frame(self, width=300, height=200, relief="sunken", bd=1)
self.rahmen_4.pack(padx=10, pady=10)
self.startbutton = tk.Button(self.rahmen_4, text="Start", state=tk.NORMAL, command=self.wuerfeln)
self.startbutton.pack(ipadx=10, ipady=10, padx=10, pady=10, side="left")
self.stopbutton = tk.Button(self.rahmen_4, text="Stop", state=tk.DISABLED, command=self.cancel)
self.stopbutton.pack(ipadx=10, ipady=10, padx=10, pady=10, side="left")
def cancel(self):
self.startbutton["state"] = tk.NORMAL
self.stopbutton["state"] = tk.DISABLED
if self.zufallszahl_1 > self.zufallszahl_2:
self.ergebnislabel["text"] = "Spieler 1 hat gewonnen"
self.ergebnislabel["fg"] = "blue"
elif self.zufallszahl_1 < self.zufallszahl_2:
self.ergebnislabel["text"] = "Spieler 2 hat gewonnen"
self.ergebnislabel["fg"] = "red"
else:
self.ergebnislabel["text"] = "Unentschieden"
self.ergebnislabel["fg"] = "black"
if self.cancel_id_wuerfeln is not None:
self.after_cancel(self.cancel_id_wuerfeln)
self.cancel_id_wuerfeln = None
def wuerfeln(self):
self.ergebnislabel["text"] = ""
self.startbutton["state"] = tk.DISABLED
self.stopbutton["state"] = tk.NORMAL
self.zufallszahl_1 = random.randint(1, 6)
self.zufallszahl_2 = random.randint(1, 6)
self.zeichne_wuerfelaugen(self.zufallszahl_1, self.canvas_1)
self.zeichne_wuerfelaugen(self.zufallszahl_2, self.canvas_2)
self.label_spieler_1["text"] = "Spieler 1: {}".format(self.zufallszahl_1)
self.label_spieler_2["text"] = "Spieler 2: {}".format(self.zufallszahl_2)
self.cancel_id_wuerfeln = self.after(100, self.wuerfeln)
def zeichne_wuerfelaugen(self, zufallszahl, canvas):
kantenmitte = self.kantenlaenge_wuerfel / 2
kantendrittel = self.kantenlaenge_wuerfel / 3
canvas.create_rectangle(5, 5, self.kantenlaenge_wuerfel - 5, self.kantenlaenge_wuerfel - 5, fill="white")
if zufallszahl == 1:
canvas.create_oval(kantenmitte-self.radius_wuerfelauge,kantenmitte-self.radius_wuerfelauge,
kantenmitte+self.radius_wuerfelauge,kantenmitte+self.radius_wuerfelauge, fill="black")
elif zufallszahl == 2:
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2*kantendrittel - self.radius_wuerfelauge, 2*kantendrittel - self.radius_wuerfelauge,
2*kantendrittel + self.radius_wuerfelauge, 2*kantendrittel + self.radius_wuerfelauge,fill="black")
elif zufallszahl == 3:
canvas.create_oval(2*kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
2*kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge,fill="black")
canvas.create_oval(kantenmitte - self.radius_wuerfelauge, kantenmitte - self.radius_wuerfelauge,
kantenmitte + self.radius_wuerfelauge, kantenmitte + self.radius_wuerfelauge, fill="black")
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, 2*kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, 2*kantendrittel + self.radius_wuerfelauge, fill="black")
elif zufallszahl == 4:
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2 * kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
2 * kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, 2 * kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, 2 * kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2*kantendrittel - self.radius_wuerfelauge, 2*kantendrittel - self.radius_wuerfelauge,
2*kantendrittel + self.radius_wuerfelauge, 2*kantendrittel + self.radius_wuerfelauge,fill="black")
elif zufallszahl == 5:
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2 * kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
2 * kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, 2 * kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, 2 * kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2*kantendrittel - self.radius_wuerfelauge, 2*kantendrittel - self.radius_wuerfelauge,
2*kantendrittel + self.radius_wuerfelauge, 2*kantendrittel + self.radius_wuerfelauge,fill="black")
canvas.create_oval(kantenmitte-self.radius_wuerfelauge,kantenmitte-self.radius_wuerfelauge,
kantenmitte+self.radius_wuerfelauge,kantenmitte+self.radius_wuerfelauge, fill="black")
elif zufallszahl == 6:
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2 * kantendrittel - self.radius_wuerfelauge, kantendrittel - self.radius_wuerfelauge,
2 * kantendrittel + self.radius_wuerfelauge, kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, 2 * kantendrittel - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, 2 * kantendrittel + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2*kantendrittel - self.radius_wuerfelauge, 2*kantendrittel - self.radius_wuerfelauge,
2*kantendrittel + self.radius_wuerfelauge, 2*kantendrittel + self.radius_wuerfelauge,fill="black")
canvas.create_oval(kantendrittel - self.radius_wuerfelauge, kantenmitte - self.radius_wuerfelauge,
kantendrittel + self.radius_wuerfelauge, kantenmitte + self.radius_wuerfelauge, fill="black")
canvas.create_oval(2*kantendrittel - self.radius_wuerfelauge, kantenmitte - self.radius_wuerfelauge,
2*kantendrittel + self.radius_wuerfelauge, kantenmitte + self.radius_wuerfelauge, fill="black")
def main():
root = MainWindow()
root.mainloop()
if __name__ == '__main__':
main()