Als ich klein war, gab es eine Zeit, in der es mein Boom war, in kurzer Zeit mit meinen Freunden das Spiel der dreiäugigen Aufstellung zu spielen. Also habe ich beschlossen, es dieses Mal zu machen.
Machen Sie Bildschirme und Schaltflächen
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
squares = 3
class TictacApp(ttk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.create_widgets()
self.set_value()
def create_widgets(self):
for i in range(squares):
for j in range(squares):
button = ttk.Button(self, command=self.record(i, j))
button.bind('<Button-1>', self.mark)
button.grid(column=i, row=j, sticky=(N, S, E, W))
for i in range(squares):
self.columnconfigure(i, weight=1)
self.rowconfigure(i, weight=1)
self.master.columnconfigure(0, weight=1)
self.master.rowconfigure(0, weight=1)
self.grid(column=0, row=0, sticky=(N, S, E, W))
def main():
root = Tk()
root.title('〇✕ Spiel')
TictapApp(root)
root.mainloop()
if __name__ == '__main__':
main()
〇 und ✕ werden angezeigt
def mark(self, event):
if not event.widget['text']:
if self.player == 1:
event.widget['text'] = str('〇')
else:
event.widget['text'] = str('×')
Denken Sie an die Taste, die Sie gedrückt haben
def record(self, i, j):
def x():
if not self.field[i][j]:
self.field[i][j] = self.player
self.line_check()
self.change_player()
self.clear()
return x
def set_value(self):
self.player = 1
self.field = []
for i in range(squares):
self.field.append(['' for i in range(squares)])
self.finish = 0
Beurteilung, ob die dritte Zeile in einer Reihe steht
def line_check(self):
cross = 0
for i in range(squares):
horizon = 0
vertical = 0
for j in range(squares):
if self.field[i][j] == self.player:
horizon += 1
if self.field[j][i] == self.player:
vertical += 1
if self.field[i][i] == self.player:
cross += 1
if horizon == 3 or vertical == 3 or cross == 3:
self.game_end()
if self.field[0][2] == self.field[1][1] == self.field[2][0] == self.player:
self.game_end()
Informieren Sie den Sieg oder die Niederlage
def game_end(self):
if self.player == 1:
messagebox.showinfo('Glückwunsch!', 'Führender Sieg')
else:
messagebox.showinfo('Glückwunsch!', 'Zweiter Angriffssieg')
self.finish = 1
Wenn Sie sich nicht niederlassen können
def change_player(self):
if self.finish == 0:
self.player = -self.player
def clear(self):
if self.finish == 1:
self.create_widgets()
self.set_value()
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
squares = 3
class TictacApp(ttk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.create_widgets()
self.set_value()
def set_value(self):
self.player = 1
self.field = []
for i in range(squares):
self.field.append(['' for i in range(squares)])
self.finish = 0
def create_widgets(self):
for i in range(squares):
for j in range(squares):
button = ttk.Button(self, command=self.record(i, j))
button.bind('<Button-1>', self.mark)
button.grid(column=i, row=j, sticky=(N, S, E, W))
for i in range(squares):
self.columnconfigure(i, weight=1)
self.rowconfigure(i, weight=1)
self.master.columnconfigure(0, weight=1)
self.master.rowconfigure(0, weight=1)
self.grid(column=0, row=0, sticky=(N, S, E, W))
def mark(self, event):
if not event.widget['text']:
if self.player == 1:
event.widget['text'] = str('〇')
else:
event.widget['text'] = str('×')
def record(self, i, j):
def x():
if not self.field[i][j]:
self.field[i][j] = self.player
self.line_check()
self.change_player()
self.clear()
return x
def change_player(self):
if self.finish == 0:
self.player = -self.player
def line_check(self):
cross = 0
for i in range(squares):
horizon = 0
vertical = 0
for j in range(squares):
if self.field[i][j] == self.player:
horizon += 1
if self.field[j][i] == self.player:
vertical += 1
if self.field[i][i] == self.player:
cross += 1
if horizon == 3 or vertical == 3 or cross == 3:
self.game_end()
if self.field[0][2] == self.field[1][1] == self.field[2][0] == self.player:
self.game_end()
def game_end(self):
if self.player == 1:
messagebox.showinfo('Glückwunsch!', 'Führender Sieg')
else:
messagebox.showinfo('Glückwunsch!', 'Zweiter Angriffssieg')
self.finish = 1
def clear(self):
if self.finish == 1:
self.create_widgets()
self.set_value()
def main():
root = Tk()
root.title('OX-Spiel')
TictacApp(root)
root.mainloop()
if __name__ == '__main__':
main()
Ich schrieb das Programm, während ich mir "Ich habe versucht, eine GUI mit Python und Tkinter nebeneinander zu erstellen" ansah, auf das ich mich diesmal bezog, aber ich überprüfte, was ich tat. 〇✕ Ich hatte große Probleme, nur ein Spiel zu machen. Auch diesmal gab es etwas, auf das ich mich beziehen konnte, aber ich dachte, es wäre sehr schwierig, es von Grund auf neu zu machen. Von nun an beschloss ich zu studieren, damit ich es von Grund auf selbst schaffen konnte.
Ich habe versucht, GUI neben Python und Tkinter dreiäugig zu machen
https://qiita.com/TN0321/items/d0ba918eefa5d9c7e587
Das einfachste Python-Einführungsbuch Fumitaka Osawa [Autor]
Recommended Posts