from gpanel import * # leeres Feld dim = 10 # Anzahl Felder winlen = 5 # Anzahl fuer Gewinn feld = [[0 for y in range(dim)] for x in range(dim)] player = 1 filled = 0 winner = 0 # Startpunkt x,y # Vektor vx,vy def testLine(x,y,vx,vy,feld): global winlen,dim what = feld[x][y] count = 1 if what>0 else 0 while True: x+=vx y+=vy if x<0 or y<0 or x>=dim or y>=dim: break if feld[x][y]==what: count+=1 else: what = feld[x][y] count=1 if what>0 else 0 if feld[x][y]==0: count = 0 if count==winlen: return what return 0 def win(feld): for x in range(dim): combos = [[x,0,0,1],\ [0,x,1,0],\ [0,x,1,1],\ [x,0,1,1],\ [x,dim-1,1,-1],\ [0,x,1,-1]] for combo in combos: winner = testLine(combo[0], combo[1], combo[2], combo[3],feld) if winner>0: return winner return 0 def ausgabe(feld): clear() # Fenster loeschen dim = len(feld) for i in range(1,dim): # Raster line(0,i,dim,i) line(i,0,i,dim) for x in range(dim): for y in range(dim): if (feld[x][y]==1): line(x+0.1, y+0.1, x+0.9,y+0.9) line(x+0.1, y+0.9, x+0.9,y+0.1) elif (feld[x][y]==2): move(x+0.5, y+0.5) circle(0.4) def onMousePressed(x, y): global feld global player global filled global winner global dim x = int(x) y = int(y) if winner>0 or filled == dim*dim: feld = [[0 for y in range(dim)] for x in range(dim)] player = 1 filled = 0 winner = 0 elif feld[x][y]==0: filled+=1 feld[x][y] = player player = 3-player ausgabe(feld) winner = win(feld) if (winner>0): print("Spieler %d hat gewonnen!" % winner) elif (filled == dim*dim): print("Unentschieden...") makeGPanel(0,dim-0.001, 0,dim-0.001,mousePressed = onMousePressed) lineWidth(5) ausgabe(feld)