===Tic Tac Toe Spiel=== import turtle as t import numpy as np tttmatrix=np.zeros(9) tttmatrix=tttmatrix.reshape((3, 3)) kreuz = 0 Anzahl = 0 spielende = 10 siegkreuz = 0 siegkreis = 0 keinsieg = 0 start = t.Turtle() start.speed(0) def neuanfang():#Hier wird nach einem Spiel "aufgeräumt", um eine weitere Partie spielen zu können. global spielende global siegkreis global siegkreuz global keinsieg global tttmatrix global Anzahl if(spielende!=10): start.up() start.clear() start.setx(-2) start.hideturtle() start.write(siegkreuz) start.sety(start.ycor()+2) start.write(siegkreis) start.sety(start.ycor()+2) start.write(keinsieg) start.goto(0,0) tttmatrix=0 tttmatrix=np.zeros(9) tttmatrix=tttmatrix.reshape((3, 3)) spielende = 10 t.clear() Anzahl = 0 def kreismalen(t): t.up() t.right(90) t.forward(4) t.left(90) t.down() t.circle(4) def kreuzmalen(t): t.left(45) t.forward(5) t.backward(10) t.forward(5) t.left(90) t.forward(5) t.backward(10) t.forward(5) t.right(135) def tttfeld(): """ Malt ein 3x3 Feld. """ t.setworldcoordinates(0,30,30,0) spalten = t.Turtle() spalten.left(90) zeilen = t.Turtle() spalten.speed(0) zeilen.speed(0) spalten.hideturtle() zeilen.hideturtle() for i in range(4): spalten.setx(i*10) zeilen.sety(i*10) spalten.forward(30) zeilen.forward(30) spalten.sety(0) zeilen.setx(0) zeilen.goto(0,0) spalten.goto(0,0) zeilen.up() zeilen.setx(-3) zeilen.write("Siege von Kreuz:", align="right") zeilen.sety(zeilen.ycor()+2) zeilen.write("Siege von Kreis:", align="right") zeilen.sety(zeilen.ycor()+2) zeilen.write("Unentschieden:", align="right") zeilen.goto(0,0) zeilen.down() def ende():#Prüft, ob das Spiel zu Ende ist zeile = np.sum(tttmatrix, axis=1) spalte = np.sum(tttmatrix, axis=0) diagonale1 = tttmatrix[0, 0]+tttmatrix[1, 1]+tttmatrix[2, 2] diagonale2 = tttmatrix[2, 0]+tttmatrix[1, 1]+tttmatrix[0, 2] if(3 in zeile or 3 in spalte or 3==diagonale1 or 3==diagonale2): return 1 elif(-3 in zeile or -3 in spalte or -3==diagonale1 or -3==diagonale2): return -1 else: return 0 def malen(x, y):#Bei einem Klick auf das Feld wird an der passenden Stelle mittig das jeweilige Symbol gesetzt. global kreuz global Anzahl global spielende global siegkreis global siegkreuz global keinsieg global tttmatrix if(x <=10): spalte = 0 if(x >10 and x <=20): spalte = 1 if(x >20 and x <=30): spalte = 2 if(y <=10): zeile = 0 if(y >10 and y <=20): zeile = 1 if(y >20 and y <=30): zeile = 2 t.up() t.setx(spalte*10+5) t.sety(zeile*10+5) t.down() if(tttmatrix[zeile, spalte]==0 and spielende==10): Anzahl = Anzahl + 1 if(kreuz==0): kreuzmalen(t) kreuz = 1 tttmatrix[zeile, spalte]=1 if(ende()==1): t.up() t.goto(15,15) t.write("Kreuz hat gewonnen", align="center", font=("Arial", 32, "normal")) spielende = 1 siegkreuz = siegkreuz +1 t.down() else: kreismalen(t) kreuz = 0 tttmatrix[zeile, spalte]=-1 if(ende()==-1): t.up() t.goto(15,15) t.write("Kreis hat gewonnen", align="center", font=("Arial", 32, "normal")) spielende = -1 siegkreis = siegkreis +1 t.down() if(Anzahl==9 and ende()==0): t.up() t.goto(15,15) t.write("Unentschieden", align="center", font=("Arial", 32, "normal")) spielende = 0 keinsieg = keinsieg +1 t.down() tttfeld() t.speed(0) t.hideturtle() screen=t.Screen()#Hier hört die Turtle zu, sodass überhaupt was passiert screen.onclick(t.goto) screen.onclick(malen) screen.onkeypress(neuanfang, "space") screen.listen() t.mainloop()