für die Schule muss ich ein kleines Spiel programmieren: zwei zufällige Zahlen werden angezeigt und müssen multipliziert werden, wofür man 15 Sekunden Zeit hat. Bei jeder richtigen Rechnung erhöht sich der Punktstand um 1, bei einer falschen Eingabe oder bei Ablauf der Zeit wird er auf 0 zurückgesetzt. Der folgende Quelltext funktioniert leider nicht so, wie er sollte, aber ich finde auch keinen Fehler... Ich hoffe, mir kann jemand helfen und ich bedanke mich schonmal im Voraus!
Code: Alles auswählen
from tkinter import *
from random import randint
tkFenster = Tk()
tkFenster.title('Spiel')
tkFenster.geometry('400x350')
bildhg=PhotoImage(file="tafel.gif")
canvasHintergrund=Canvas(master=tkFenster)
canvasHintergrund.place(x=0, y=0, width=410, height=510)
canvasHintergrund.create_image(0, 0, image=bildhg, anchor='nw')
ergebnis=None
vltErgeb=None
rueckmeldung=None
m=0
p=None
def RechnungUeber():
if vltErgeb==ergebnis:
rueckmeldung='Richtig!'
rueck=Label(master=canvasHintergrund, text=rueckmeldung, bg='#1FD97F', font=('Arial', 90))
rueck.place(x=20, y=90, width=365, height=80)
m=m+1
p=1
tkFenster.after(3000, spiel)
if vltErgeb!=ergebnis:
rueckmeldung='Falsch!'
rueck=Label(master=canvasHintergrund, text=rueckmeldung, bg='#D91F1F', font=('Arial', 90))
rueck.place(x=20, y=90, width=365, height=80)
m=0
p=1
tkFenster.after(3000, spiel)
def Zeitum():
rueckmeldung='Vorbei!'
rueck=Label(master=canvasHintergrund, text=rueckmeldung, bg='#D91F1F', font=('Arial', 90))
rueck.place(x=20, y=90, width=365, height=80)
m=0
tkFenster.after(3000, spiel)
if p!=1:
tkFenster.after(15000, Zeitum)
def spiel():
p=0
zufall1=randint(2,20)
zufall2=randint(2,20)
ueberschrift = Label(master=canvasHintergrund, text='Speed-Rechnen', fg='#A9282D', bg= '#4F9F4B', font=('Arial', 42))
ueberschrift.place(x=40, y=5, width=320, height=50)
rechnung1 = Label(master=canvasHintergrund, text= zufall1, bg='#4B76CD', font=('Arial', 90))
rechnung1.place(x=20, y=90, width=130, height=80)
rechnung2 = Label(master=canvasHintergrund, text= 'x', bg='#4B76CD', font=('Arial', 90))
rechnung2.place(x=145, y=90, width=50, height=80)
rechnung3 = Label(master=canvasHintergrund, text= zufall2, bg='#4B76CD', font=('Arial', 90))
rechnung3.place(x=195, y=90, width=100, height=80)
rechnung4 = Label(master=canvasHintergrund, text= '=', bg='#4B76CD', font=('Arial', 90))
rechnung4.place(x=295, y=90, width=90, height=80)
highscore= Label(master=canvasHintergrund, text='Punktzahl:', bg='#F4E800')
highscore.place(x=20, y=250, width=70, height=25)
mm=Label(master=canvasHintergrund, text=m, bg='#F4E800')
mm.place(x=90, y=250, height=25)
buttonbest = Button(master=canvasHintergrund, text='Okay', command=RechnungUeber)
buttonbest.place(x=300, y=250)
entryergeb = Entry(master=canvasHintergrund)
entryergeb.place(x=230, y=250, width=70)
vltErgeb = entryergeb.get()
ergebnis = (zufall1*zufall2)
tkFenster.after(0, spiel)
tkFenster.mainloop()