Code: Alles auswählen
from functools import partial
import tkinter as tk
class Ticktacktoe():
def __init__(self):
self.FENSTER_TITLE = "TickTackToe Spiel"
self.FENSTER_XPOS = 1000
self.FENSTER_YPOS = 100
self.FENSTER_WIDTH = 300
self.FENSTER_HEIGHT = 200
self.KNOPF_RAHMEN_RAND = 2
self.RUNDEN=self.runden=0
self.SPIELER=self.spieler=1
self.KNOEPFE = self.knoepfe = [
["knopf1","knopf2","knopf3"],
["knopf4","knopf5","knopf6"],
["knopf7","knopf8","knopf9"]]
self.knoepfe_list = ["knopf1","knopf2","knopf3","knopf4","knopf5","knopf6","knopf7","knopf8","knopf9"]
self.KNOPF_STATUS=self.Ks=["","","","","","","","",""]
self.LEEHR = "leer.png"
self.KREIS = "kreis.png"
self.KREUZ = "kreuz.png"
self.fenster = tk.Tk()
self.fenster.title(self.FENSTER_TITLE)
self.fenster.geometry("+{}+{}".format(self.FENSTER_XPOS, self.FENSTER_YPOS))
self.fenster.geometry("{}x{}".format(self.FENSTER_WIDTH, self.FENSTER_HEIGHT))
self.img_leer = tk.PhotoImage(file=self.LEEHR)
self.img_kreis = tk.PhotoImage(file=self.KREIS)
self.img_kreuz = tk.PhotoImage(file=self.KREUZ)
self.feld_bauen()
self.fenster.mainloop()
def feld_bauen(self):
self.meldung=tk.Label( self.fenster,text="Gewinner:")
self.meldung.pack()
self.knopf_rahmen = tk.Frame(self.fenster)
self.knopf_rahmen_rand = self.KNOPF_RAHMEN_RAND
self.knopf_rahmen.pack(expand=False, padx=0, pady=0 ,side="left")
self.meine_knoepfe = list()
self.reset_Bt=tk.Button(self.fenster,text="Wiederholung?",bg="yellow",command=self.reset_comand)
for self.reihe, knopf_reihe in enumerate(self.KNOEPFE):
for self.zeile , knopf in enumerate(knopf_reihe):
self.knopf_widget = tk.Button(self.knopf_rahmen, image=self.img_leer,highlightthickness=0, command=partial(self.knopf_druck, knopf))
self.knopf_widget.grid(row=self.reihe, column=self.zeile)
self.meine_knoepfe.append(self.knopf_widget)
def a(self):
print("a")
def reset_comand(self):
self.Ks=["","","","","","","","",""]
self.runden=0
self.spieler=1
self.meldung.destroy()
self.knopf_rahmen.destroy()
self.meine_knoepfe=[]
self.reset_Bt.destroy()
self.feld_bauen()
def knopf_druck(self,knopf):
global SPIELER,runden
if self.spieler==1:
self.spieler=2
self.NEUES_BILD=self.img_kreis
self.Farbe="red"
self.Ks[int(knopf[5])-1]="kreis"
elif self.spieler==2:
self.spieler=1
self.NEUES_BILD=self.img_kreuz
self.Farbe="green"
self.Ks[int(knopf[5])-1]="kreuz"
self.meine_knoepfe[int(knopf[5])-1].configure(image= self.NEUES_BILD,command=self.a, bg=self.Farbe)
if (self.Ks[0] == self.Ks[1] == self.Ks[2]=="kreuz")or(self.Ks[3] == self.Ks[4] == self.Ks[5]=="kreuz")or(self.Ks[6] == self.Ks[7] == self.Ks[8]=="kreuz")or(self.Ks[0] == self.Ks[3] == self.Ks[6]=="kreuz")or(self.Ks[1] == self.Ks[4] == self.Ks[7]=="kreuz")or(self.Ks[2] == self.Ks[5] == self.Ks[8]=="kreuz")or(self.Ks[0] == self.Ks[4] == self.Ks[8]=="kreuz")or(self.Ks[2] == self.Ks[4] == self.Ks[6]=="kreuz"):
self.meldung.config(text="Gewinner: kreuz")
self.reset_Bt.place(y=90,x=100)
if (self.Ks[0] == self.Ks[1] == self.Ks[2]=="kreis")or(self.Ks[3] == self.Ks[4] == self.Ks[5]=="kreis")or(self.Ks[6] == self.Ks[7] == self.Ks[8]=="kreis")or(self.Ks[0] == self.Ks[3] == self.Ks[6]=="kreis")or(self.Ks[1] == self.Ks[4] == self.Ks[7]=="kreis")or(self.Ks[2] == self.Ks[5] == self.Ks[8]=="kreis")or(self.Ks[0] == self.Ks[4] == self.Ks[8]=="kreis")or(self.Ks[2] == self.Ks[4] == self.Ks[6]=="kreis"):
self.meldung.config(text="Gewinner: kreis")
self.reset_Bt.place(y=90,x=100)
self.runden+=1
#Unentschieden
if self.runden==9:
self.meldung.config(text="Unentschieden")
self.reset_Bt.place(y=90,x=100)
Ticktacktoe()