Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

some:tic_tac_toe_spiel

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()
some/tic_tac_toe_spiel.txt · Zuletzt geändert: 2020/03/27 13:43 von benbaute