Ich bin kein Profiprogrammierer und habe ein Problem bei einer Tkinterschleife.
Der Code zum Spiel des Lebens funktioniert alles schon nur die Ausgabe nochnicht richtig.
Wer sich den ganzen Code unten nicht auschauen will, es geht mir nur um den Schluss, es sollen in Tkinter die Quadrate in der Farbe ausgegeben, die in der Liste mit 1 und 0 gespeichert sind. Das ganze klappt auch schon aber nur krieg ich es nicht hin das ganze in eine Schleife zu packen, also dass sie Generationen danach,als Simulation sozusagen, dann auch noch ausgegeben werden.
Hoffe jmd kann mir helfen
Gruß ein begeisterter Infomatikliebhaber
Code: Alles auswählen
from tkinter import *
from time import sleep
#####Definitionen#####
def kopie(welt):
kopie=[]
for zeile in welt:
kopie= kopie+[zeile[:]]
return kopie
def AnzahlNachbarn(x,y,welt,feldgröße):
lebend=0
help1=str(x)+str(y) #Koordinaten als String
x=int(x)-1 #Anfang des Durchlaufs nach links oben verschoben
y=int(y)-1
for i in range(3): #Zeilen werden durchlaufen
for j in range(3): #Spalten werden durchlaufen
x2=x+j
y2=y+i
help2=str(x2)+str(y2)
if help1!= help2: #Kontrolle, dass Koordnate nicht durchlaufen wird
if 0<=x2<=(feldgröße-1) and 0<=y2<=(feldgröße-1): #Kontrolle,dass Feldgröße nicht überschritten wird
lebend+=welt[x2][y2]
return lebend
def neueWelt(welt,feldgröße):
kopieWelt=kopie(welt)
for i in range(feldgröße):
for j in range(feldgröße):
anzahl=AnzahlNachbarn(i,j,welt,feldgröße)
if welt[i][j] == 0 and anzahl == 3:
kopieWelt[i][j]=1
elif welt[i][j] ==1 and anzahl < 2:
kopieWelt[i][j]=0
elif welt[i][j]==1 and anzahl > 3:
kopieWelt[i][j]=0
return kopieWelt
def tkfeld(feldgröße,pixelgröße,welt): #Anzahl der Felder im Quadrat
#Quadrate kreieren
for i in range(feldgröße+1):
for j in range(feldgröße+1):
#print(welt[i-(feldgröße)][j-(feldgröße-1)])
a=welt[j-(feldgröße)][i-(feldgröße)]
if a==0:
w.create_rectangle(pixelgröße+pixelgröße*(i-1),pixelgröße+pixelgröße (j-1),pixelgröße+pixelgröße*i,pixelgröße+pixelgröße*j,fill='black',outline='Red')
elif a==1:
w.create_rectangle(pixelgröße+pixelgröße*(i-1),pixelgröße+pixelgröße*(j-1),pixelgröße+pixelgröße*i,pixelgröße+pixelgröße*j,fill='green',outline='Red')
##Hauptprogramm##
welt=[[0,0,0,0,0,0],[0,1,0,0,1,0],[0,0,0,0,0,0],[1,0,0,0,0,1],[1,1,1,1,1,1],[0,0,0,0,0,0]]
feldgröße=6
master = Tk() #Grafikfenster öffnen
master.title("Spiel des Lebens ©Sebastian") # Titel des Fenster setzen
canvas_width = 100*feldgröße #Größe festlegen
canvas_height =100*feldgröße
w = Canvas(master, width=canvas_width, height=canvas_height)
w.grid(row=0, column=0, pady = 20)
print(neueWelt(welt,feldgröße))
tkfeld(feldgröße,100,welt)
welt1=neueWelt(welt,6)
z=0
while z==0:
sleep(1)
neueWelt(welt1,6)
sleep(1)
tkfeld(6,100,welt1)
welt1=neueWelt(welt1,6)
mainloop()