Search code examples
pythontkinterwindowtkinter-canvas

tkinter windows won't open now


i'm trying to make an AI that beat the snake so i decided to make the game and it worked but then i added some calculations and the tkinter windows won't open there is no errors my code is not perfect but it is here: (i worked on setoutput before it didn't work, avance is the main function and the function refresh refresh the screen)

from tkinter import*
from random import*
pp=0
neuron=[]
step=0
k=[]
score=0
n=[]
w=[]
for j in range (5):
    for i in range (5):
        n.append(0)
        for k in range (5):
            w.append([randint(-100000,100000)/1000000,randint(-100000,100000)/1000000])
print(n)
print(w)
highscore=0
fen=Tk()
fen.title('IA')
grille=[0 for i in range(100)]
canvas=Canvas(fen,width=1000,height=500,bg="white")
canvas.pack()
color=['blue','red','orange','yellow']
color2=['black','white']
def check(neuron):
    global grille
    return grille[neuron]
def setinput(a):
    global grille
    premiers=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
              101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
              211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293,
              307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397,
              401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499,
              503, 509, 521, 523, 541]
    tt=1
    val=0
    for i in range (0+25*a,25+25*a):
        val+=1
        tt=tt*premiers[val]**grille[i]
    return tt

def setoutput():
    global n,w
    output=0
    inp=setinput(0)
    layer2=[]
    for i in range (5):
        for z in range(4):
            inp=setinput(z)
            v=w[i]
            fac=v[0]
            b=v[1]
            print (fac)
            print(b)
            print(inp)
            layer2.append(max(0,(float(inp)*float(fac)+float(b))))
    print(layer2)
    layer3=[]
    for i in range(5,10):
        for e in list(layer2):
            v=w[i]
            fac=v[0]
            b=v[1]
            layer3.append(max(0,(float(inp)*float(fac)+float(b))))
d=0
début=1
pos=44
stop=0
long=[]
grille[pos]=1

def refresh():
    global grille
    val=0
    canvas.delete('all')
    for y in range (10):
        for x in range (10):
            canvas.create_rectangle(x*500/10,y*500/10,x*500/10+500/10,y*(500/10)+500/10,fill=color[grille[val]],outline='black')
            val+=1
def refresh2():
    global a,color,tt,k,grille
    val=0
    canvas.create_text(550,100,text=('step:',step),fil='blue')
    canvas.create_text(750,200,text=('input:',setinput(0)),fil='blue')
    canvas.create_text(750,300,text=('input:',setinput(1)),fil='blue')
    canvas.create_text(750,400,text=('input:',setinput(2)),fil='blue')
    canvas.create_text(750,500,text=('input:',setinput(3)),fil='blue')
def restart():
    global grille,pos,long,d,val,stop,début,step
    d=0
    step=0
    pos=44
    if début==0:
        long=[pos]
        
    grille=[0 for i in range(100)]
    grille[pos]=1
    val=0
    stop=1
    canvas.delete('all')
    if début==0:
        pomme()
    if début==1:
        début=0
        avance()
def fin():
    global stop,grille
    stop=0
    restart()
def haut(event):
    global pos,long,grille
    grille[pos]=2
    long.append(pos)
    pos=pos-10
    if pos<-99:
        pos+=100
    if grille[pos]==2:
        fin()
    if grille[pos]==3:
        avanceup(1)
    grille[pos]=1
    refresh()

def bas(event):
    global pos,long,grille
    grille[pos]=2
    long.append(pos)
    pos=pos+10
    if pos>99:
        pos-=100
    if grille[pos]==2:
        fin()
    if grille[pos]==3:
        avanceup(1)
    grille[pos]=1
    refresh()

def gauche(event):
    global pos,long,grille
    grille[pos]=2
    long.append(pos)
    pos=pos-1
    if pos%10==9:
        pos+=10
    if pos<0:
        pos+=100
    if grille[pos]==2:
        fin()
    if grille[pos]==3:
        avanceup(1)
    grille[pos]=1
    refresh()
def droit(event):
    global pos,long,grille
    grille[pos]=2
    long.append(pos)
    pos=pos+1
    if pos%10==0:
        pos-=10
    if pos>0:
        pos-=100
    if grille[pos]==2:
        fin()
    if grille[pos]==3:
        avanceup(1)
    grille[pos]=1
    refresh()

    pass
def changeh(event):
    global d,grille
    d=2
def changeb(event):
    global d,grille
    d=0
def changed(event):
    global d,grille
    d=1
def changeg(event):
    global d,grille
    d=3
def avanceup(event):
    global d,long,grille,step
    step=0
    if d==0:
        bas(1)
    if d==1:
        droit(1)
    if d==2:
        haut(1)
    if d==3:
        gauche(1)
    fen.bind('z',changeh)
    fen.bind('s',changeb)
    fen.bind('d',changed)
    fen.bind('q',changeg)
    grille[long[0]]=0
    pomme()
def pomme():
    global grille,pp
    pp=randint(0,99)
    while grille[pp]==1 or grille[pp]==2:
        pp=randint(0,99)
    grille[pp]=3
    if grille[pp]!=3:
        fen.after(1,pomme)
def avance():
    global d,long,grille,step,score,highscore,pp,grille

    score=len(long)
    fen.after(100,avance)
    step+=1
    refresh2()
    if score<highscore:
        highscore=score
    if stop==1:
        if d==0:
            bas(1)
        if d==1:
            droit(1)
        if d==2:
            haut(1)
        if d==3:
            gauche(1)
        fen.bind('z',changeh)
        fen.bind('s',changeb)
        fen.bind('d',changed)
        fen.bind('q',changeg)
        grille[long[0]]=0
        del long[0]
        if grille[pp]!=3:
            grille[pp]=3
        score=len(long)
        setinput(0)
    if step>100:
        fin()
    refresh2()
    setoutput()
pomme()
restart()
val=0
setoutput()
fen.bind
fen.mainloop()

i tried to restart python, change the if conditions in avance() and change the order of functiun call at the end of the code.


Solution

  • You don't use this python filename.py. Just comment out all the prints.

    Screenshot:

    enter image description here