Python Programmierung Spiel mit Benutzeroberfläche von
Selzer-McKenzie
Author D.Selzer-McKenzie
Heute zeige ich Ihnen, wie Sie ganz einfach eine
Benutzeroberfläche für ein Spiel und mit deren Inhalt programmieren können. Den
Source-Code können Sie bei
herauskopieren und gleich anwenden. Dies ist eben nur ein
kleines Beispiel für die vielfältigen Anwendungsmöglichkeiten.
Der SourceCode:
import time, random, glob, sqlite3, \
tkinter,
tkinter.messagebox
def auswertung():
if status !=
"main":
return
# Zeit berechnen
endzeit =
time.time()
differenz =
endzeit - startzeit
# Auswertung
richtig = 0
for i in range(5):
try:
# Falsche
Eingabe abfangen
if
int(enliste[i].get()) == ergliste[i]:
richtig = richtig + 1
except:
pass
# Kein Highscore
if richtig < 5:
tkinter.messagebox.showinfo("Keine Eingaben gemacht",
"Leider keine Eingaben gemacht ")
main.destroy()
return
if not
glob.glob("gui_highscore.db"):
con =
sqlite3.connect("gui_highscore.db")
cursor =
con.cursor()
sql =
"CREATE TABLE daten(name TEXT, zeit FLOAT)"
cursor.execute(sql)
con.close()
con =
sqlite3.connect("gui_highscore.db")
cursor =
con.cursor()
sql = "INSERT
INTO daten VALUES('" \
+
lbname["text"] + "'," + str(differenz) + ")"
cursor.execute(sql)
con.commit()
con.close()
con =
sqlite3.connect("gui_highscore.db")
cursor =
con.cursor()
sql = "SELECT
* FROM daten ORDER BY zeit LIMIT 10"
cursor.execute(sql)
ausgabe =
""
i = 1
for dsatz in cursor:
ausgabe +=
str(i) + ". " + dsatz[0] + " " \
+
str(round(dsatz[1],2)) + " sec.\n"
i = i+1
tkinter.messagebox.showinfo("Highscore", ausgabe)
con.close()
main.destroy()
def endeneu():
global startzeit,
status
lbname["text"] = enname.get()
startzeit =
time.time()
status =
"main"
neu.destroy()
# Hauptprogramm
main = tkinter.Tk()
# Titel
lbtitel = tkinter.Label(main, text="Kopfrechnen")
lbtitel.grid(row=0, column=0, columnspan=6)
# Name
lbname = tkinter.Label(main, text="Spielername")
lbname.grid(row=1, column=0, columnspan=6)
# Aufgaben
enliste = [] #
Liste der Entries
ergliste = [] #
Liste der richtigen Ergebnisse
for i in range(5):
# Aufgabe mit
Ergebnis
a = random.randint(1276,2598)
b =
random.randint(1276,2598)
ergliste.append(a
+ b)
# Aufgabenstellung
tkinter.Label(main, text=str(i+1)+"."). \
grid(row=i+2,
column=0)
tkinter.Label(main, text=a).grid(row=i+2, column=1)
tkinter.Label(main, text="+").grid(row=i+2, column=2)
tkinter.Label(main, text=b).grid(row=i+2, column=3)
tkinter.Label(main, text="=").grid(row=i+2, column=4)
# Eingabefeld
en =
tkinter.Entry(main)
en.grid(row=i+2,
column=5)
enliste.append(en)
# Ergebnis
b = tkinter.Button(main, text="Fertig", \
command=auswertung)
b.grid(row=7, column=0, columnspan=6)
# Fenster zur Namenseingabe
neu = tkinter.Toplevel(main)
tkinter.Label(neu, text="Ihr Name:").pack()
enname = tkinter.Entry(neu)
enname.pack()
tkinter.Button(neu, text="Start",
command=endeneu).pack()
status="neu"
main.mainloop()
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.