** * Bitte lesen Sie diese Seite, da das Mikrofon nicht verwendet werden kann. Es tut uns leid! ** ** **
Die letzte Aufgabe bestand darin, ein Spiel zu erstellen, um Junk gegen einen Computer zu spielen, wobei der im Zahlenschätzspiel erlernte Code verwendet wurde. Von nun an werde ich die einfachste Version dieses Spiels vorstellen und die, die gut aussieht.
Es sieht aus wie das: Wenn Sie beginnen, wird der auf dem linken Foto gezeigte Bildschirm angezeigt. Wenn Sie die Taste drücken, werden Sie über das auf dem rechten Foto gezeigte Popup über den Gewinn oder Verlust (oder die Auslosung) informiert. Durch Drücken von OK wird das Popup geschlossen, das Spielfenster bleibt jedoch geöffnet.
Als nächstes werde ich den Code dieses Spiels vorstellen. Verwenden Sie zunächst den folgenden Code.
import random
import tkinter as tk
import tkinter.messagebox as tmsg
** Code Bedeutung: **
import random
Lassen Sie den Computer einen zufälligen Wert auswählen
Fügen Sie import tkinter as tk
tkinter ein
tkinter.messagebox als tmsg importieren
tkinter popup einfügen
Verwenden Sie dann den folgenden Code.
root=tk.Tk()
root.geometry("600x400")
root.title("Rock Paper Scissors")
label=tk.Label(root,text="Pick One",font=("Helvetica",30))
label.place(x=200,y=20)
** Code Bedeutung: **
root = tk.Tk ()
Benennen Sie das Fenster als root
root.geometry("600x400") root.title ("Rock Paper Scissors")
Geben Sie die Fenstergröße und den Titel an
label=tk.Label(root,text="Pick One",font=("Helvetica",30)) label.place (x = 200, y = 20)
Geben Sie das Zeichen, die Schriftart und die Position des Fensters an
Verwenden Sie dann den folgenden Code.
button0=tk.Button(root, text="rock", font=("Helvetica",20), command=ButtonClick0)
button0.place(x=100, y=60)
** Code Bedeutung: **
** button0 = tk.Button
**(root, text = "rock", font = ("Helvetica", 20), command = ButtonClick0)
Make button0 tk.Button soll als Button funktionieren
button0 = tk.Button
(root, text = "rock", font = ("Helvetica", 20), command = ButtonClick0)
Erstellen Sie button0 im Fenster, Zeichen, Größe, Befehl Geben Sie an (ButtonClick0)
Erstellen Sie den obigen Code für jede Schaltfläche. Die endgültige Form dieses Teils ist wie folgt.
button0=tk.Button(root, text="rock", font=("Helvetica",20), command=ButtonClick0)
button0.place(x=100, y=60)`
`button1=tk.Button(root, text="paper", font=("Helvetica",20), command=ButtonClick1)
button1.place(x=200, y=60)`
`button2=tk.Button(root, text="scissors", font=("Helvetica",20), command=ButtonClick2)
button2.place(x=300, y=60)
Erstellen Sie abschließend einen Befehl, der ausgeführt wird, wenn die Taste gedrückt wird. Der Code für einen Befehl lautet wie folgt.
def ButtonClick0():
player_number = 0
comp = random.randint(0,2)
if player_number == comp:
tmsg.showinfo("Results", "tie")
elif player_number == 0 and comp == 1:
tmsg.showinfo("Results", "player chose rock, computer chose paper: computer wins")
elif player_number == 0 and comp == 2:
tmsg.showinfo("Results", "player chose rock, computer chose scissors: player wins")
** Code Bedeutung: **
def ButtonClick0 ():
Gibt das Verhalten des Befehls ButtonClick0 an
player_number = 0
Setzen Sie den Player-Wert auf 0, wenn diese Taste gedrückt wird
comp = random.randint (0,2)
Wenn diese Taste gedrückt wird, wählt der Computer eine Zufallszahl zwischen 0-2
if player_number == comp:
elif player_number == 0 and comp == 1:
elif player_number == 0 and comp == 2:
Geben Sie den Befehl für jede Bedingung an (wenn die Spielernummer (0) mit der des Computers übereinstimmt und der Computerwert 1 oder 2 beträgt).
tmsg.showinfo("Results", "____")
Geben Sie den Titel und den Text des Popups an, das unter den einzelnen Bedingungen angezeigt wird
Schreiben Sie den obigen Code für alle Werte, die der Spieler auswählen kann.
Der vollständige Code lautet wie folgt.
Es sieht aus wie das:
Fügen wir zunächst ein Foto mit from PIL import ImageTk, Image
ein.
Da sich alle einzufügenden Bilder in derselben Datei befinden, erstellen Sie die Zeichenfolge dir =" / Users / satokamimura / Desktop / school / uni / Computerübung / newgame / "
. Auf diese Weise können Sie beim Einfügen von Bildern "dir + filename.png " verwenden.
Ändern Sie als Nächstes den Code von label
in den folgenden Code, um das Zeichen des Fensters zu ändern.
title = ImageTk.PhotoImage(Image.open(dir+"text.png "))
titletext = tk.Label(root, image= title).place(x=100,y=20)
** Code Bedeutung: **
title = ImageTk.PhotoImage
Geben Sie den Bildnamen als Titel an
titletext = tk.Label
Benennen Sie den nächsten Label-Titletext
(root, image = title) .place (x = 100, y = 20)
Im Root-Fenster anzeigen, das Bild auf den zuvor angegebenen Titel setzen und die Position im Fenster angeben.
Ändern Sie als Nächstes den Code der Schaltfläche wie folgt.
img = ImageTk.PhotoImage(Image.open(dir+"rock.png "))
button0=tk.Button(root, command=ButtonClick0, image = img).place(x=150, y=150)
** Code Bedeutung: **
img = Image.Tk.PhotoImage
Geben Sie den Bildnamen als img an
button0 = tk.Button
Geben Sie den Namen der Schaltfläche als button0 an
(root, command = ButtonClick0, image = img) .place (x = 150, y = 150)
Im Root-Fenster anzeigen, den Befehl angeben, wenn auf ButtonClick0 geklickt wird, das Bild als vorherige img-Schaltfläche angeben Geben Sie den Speicherort von an
Wenn Sie dasselbe für die beiden anderen Schaltflächen tun, sind alle Schaltflächen Bilder der jeweiligen Janken.
Erstellen Sie als Nächstes ein Fenster, in dem die Ergebnisse angezeigt werden. Geben Sie hier nur den Teil des Fensterformats an, der sich mit keinem Ergebnis ändert.
def popup():
global win
win=tk.Toplevel()
win.geometry("500x200")
win.title('Results')
tk.Button(win, text='Ok', command=win.destroy).place(x=190,y=172)
tk.Button(win, text='End Game', command=root.destroy).place(x=250,y=172)
** Code Bedeutung: **
global win
Geben Sie ein neues Fenster 'win'globally an (indem Sie dieses einschließen, können Sie' win 'in anderen Teilen des Codes verwenden, was in dem Teil des Codes nützlich ist, der das Ergebnis beschreibt. Werden.)
Erstellen Sie ein neues Fenster mit dem Namen "win = tk.Toplevel ()" win
win.geometry
, win.title
Geben Sie die Fenstergröße und den Titel an
tk.Button (win, text = 'Ok', command = win.destroy) .place (x = 190, y = 172)
Gibt die OK-Schaltfläche und ihre Position an, um ein neues Fenster zu schließen, wenn gedrückt wird
tk.Button (win, text = 'End Game', command = root.destroy) .place (x = 250, y = 172)
Wenn diese Taste gedrückt wird, wird auch das Spielfenster geschlossen. Geben Sie die Schaltfläche End Game und deren Position an
Ändern Sie dann den Schaltflächenbefehl.
Gibt den folgenden Code an: if, elif für alle Befehle, um das zuvor aus tmsg.showinfo
erstellte neue Fenster anzuzeigen, und ein Bild mit den Ergebnissen.
ex.:
def ButtonClick0():
player_number = 0
comp = random.randint(0,2)
popup()
** Code Bedeutung: **
popup ()
Unabhängig vom Ergebnis erhalten Sie zuerst ein Popup, um das Ergebnis anzuzeigen
Versuchen Sie dann, für jedes mögliche Muster das richtige Ergebnis anzuzeigen. Der Code ist bis auf den Musternamen und den Bildnamen alle gleich, daher wird hier nur ein Beispiel angegeben.
if player_number == comp:
rocktie= ImageTk.PhotoImage(Image.open(dir+"rocktie.png "))
tk.Label(win, image=rocktie).place(x=0, y=0)
popup.pack()
** Code Bedeutung: **
rocktie = ImageTk.PhotoImage
Geben Sie den Namen des Bildes als rocktie an
tk.Label (win, image = rocktie) .place (x = 0, y = 0)
Zeigen Sie das Bild im Fenster an und geben Sie den Ort an
popup.pack ()
Code, der benötigt wird, damit ein Popup-Fenster mit einem Bild angezeigt wird
Erstellen Sie ein Bild aller resultierenden Muster und geben Sie den obigen Code für alle Muster an. Die verwendeten Bilder sind insgesamt 9 Bilder für alle Muster.
Der vollständige Code lautet wie folgt.
import random
import tkinter as tk
from PIL import ImageTk, Image
dir = "/Users/satokamimura/Desktop/school/uni/Computerübung/newgame/"
root=tk.Tk()
root.geometry("600x400")
root.title("Rock Paper Scissors")
def popup():
global win
win=tk.Toplevel()
win.geometry("500x200")
win.title('Results')
tk.Button(win, text='Ok', command=win.destroy).place(x=190,y=172)
tk.Button(win, text='End Game', command=root.destroy).place(x=250,y=172)
def ButtonClick0():
player_number = 0
comp = random.randint(0,2)
popup()
if player_number == comp:
rocktie= ImageTk.PhotoImage(Image.open(dir+"rocktie.png "))
tk.Label(win, image=rocktie).place(x=0, y=0)
popup.pack()
elif player_number == 0 and comp == 1:
rocklose= ImageTk.PhotoImage(Image.open(dir+"rocklose.png "))
tk.Label(win, image=rocklose).place(x=0, y=0)
popup.pack()
elif player_number == 0 and comp == 2:
rockwin= ImageTk.PhotoImage(Image.open(dir+"rockwin.png "))
tk.Label(win, image=rockwin).place(x=0, y=0)
popup.pack()
def ButtonClick1():
player_number = 1
comp = random.randint(0,2)
popup()
if player_number == comp:
papertie= ImageTk.PhotoImage(Image.open(dir+"papertie.png "))
tk.Label(win, image=papertie).place(x=0,y=0)
popup.pack()
elif player_number == 1 and comp == 0:
paperwin= ImageTk.PhotoImage(Image.open(dir+"paperwin.png "))
tk.Label(win, image=paperwin).place(x=0,y=0)
popup.pack()
elif player_number == 1 and comp == 2:
paperlose= ImageTk.PhotoImage(Image.open(dir+"paperlose.png "))
tk.Label(win, image=paperlose).place(x=0,y=0)
popup.pack()
def ButtonClick2():
player_number = 2
comp = random.randint(0,2)
popup()
if player_number == comp:
scissorstie= ImageTk.PhotoImage(Image.open(dir+"scissorstie.png "))
tk.Label(win, image=scissorstie).place(x=0,y=0)
popup.pack()
elif player_number == 2 and comp == 0:
scissorslose= ImageTk.PhotoImage(Image.open(dir+"scissorslose.png "))
tk.Label(win, image=scissorslose).place(x=0,y=0)
popup.pack()
elif player_number == 2 and comp == 1:
scissorswin= ImageTk.PhotoImage(Image.open(dir+"scissorswin.png "))
tk.Label(win, image=scissorswin).place(x=0,y=0)
popup.pack()
title = ImageTk.PhotoImage(Image.open(dir+"text.png "))
tk.Label(root, image= title).place(x=100,y=20)
img = ImageTk.PhotoImage(Image.open(dir+"rock.png "))
button0=tk.Button(root, command=ButtonClick0, image = img).place(x=150, y=150)
img1 = ImageTk.PhotoImage(Image.open(dir+"paper.png "))
button1=tk.Button(root, command=ButtonClick1, image=img1).place(x=270, y=150)
img2 = ImageTk.PhotoImage(Image.open(dir+"scissors.png "))
button2=tk.Button(root, command=ButtonClick2, image=img2).place(x=390, y=150)
root.mainloop()
Ich wollte das Aussehen des resultierenden Popups ändern, aber die Showinfo von tkinter hat nur sehr begrenzte Änderungen, sodass ich ein neues Fenster erstellt habe, das wie ein Popup aussieht. Zu dieser Zeit wusste ich nicht, wie man ein neues Fenster erstellt, also war das der schwierigste Teil. Auch das Einfügen des Bildes war zunächst etwas schwierig. Als ich dieses Spiel zum ersten Mal gemacht habe, habe ich ein neues Fenster für alle resultierenden Muster angegeben, also war es eine enorme Anzahl von Codezeilen. Ich habe den Basiscode des Popups zusammengefasst, um ihn wegzulassen, aber zuerst war es schwierig, weil ich nicht wie erwartet mit dem Code für die Anzeige des Bildes zusammenarbeiten konnte.
https://stackoverflow.com/questions/45228664/tkinter-nameerror-name-toplevel-is-not-defined https://stackoverflow.com/questions/41574168/how-to-i-position-buttons-in-tkinter/41575504 https://stackoverflow.com/questions/10052410/tkinter-button-does-not-appear-on-toplevel https://stackoverflow.com/questions/16242782/change-words-on-tkinter-messagebox-buttons https://stackoverflow.com/questions/32060837/remove-border-of-tkinter-button-created-with-an-image https://www.geeksforgeeks.org/pyqt5-add-image-icon-on-a-push-button/?ref=rp https://stackoverflow.com/questions/25703446/whats-the-main-difference-between-if-and-else-if https://docs.python-guide.org/scenarios/imaging/