Der Programm-Code
from gturtle import*
from time import sleep
from random import randint
CELLSIZE =40
def drawGrid():
hideTurtle()
setPenColor("gray")
x=-400
repeat (800//CELLSIZE)+1:
setPos(x,-300)
moveTo(x,+300)
x+= CELLSIZE
y=-300
repeat (600//CELLSIZE)+1:
setPos(-400,y)
moveTo(+400,y)
y+= CELLSIZE
setPos (0,0)
showTurtle()
def onClick(x,y):
turtle_x= getX()
turtle_y =getY()
hideTurtle()
setPos(x,y)
if getPixelColorStr() =="white":
setFillColor("black")
fill()
elif getPixelColorStr() == "black":
setFillColor("white")
fill()
setPos(turtle_x, turtle_y)
showTurtle()
def doStep(anzahlFelder):
hideTurtle()
forward(CELLSIZE)
x=getX()
y=getY()
if x<-400 or x>400 or y< -300 or y> 300:
msgDlg("Du hast verloren. Spiele noch einmal.")
return
elif getPixelColorStr() == "black":
back(CELLSIZE)
right(90)
elif getPixelColorStr() == "red":
showTurtle()
msgDlg("Du hast gewonnen!!!")
return
elif getPixelColorStr() == "green":
if anzahlFelder> 6:
msgDlg("Du hast verloren. Spiele noch einmal.")
return
else:
forward(0)
elif getPixelColorStr() == "navyblue":
back(CELLSIZE)
j= randint(1,2)
if j==1:
left(90)
if j==2:
right (90)
elif anzahlFelder <6:
setColor(" orange")
elif anzahlFelder > 6:
setColor("cyan")
def spiel():
makeTurtle (mouseHit = onClick)
drawGrid()
penUp()
repeat 30:
s= randint(-10,9)
t= randint (-7,7)
setPos(s*CELLSIZE + 10,t*CELLSIZE +10)
setFillColor("green")
fill()
repeat 30:
q= randint(-10,9)
w= randint(-7,7)
setPos(q*CELLSIZE+10,w*CELLSIZE+10)
setFillColor("navyblue")
fill()
repeat 7:
f= randint(-10,9)
e= randint (-7,7)
setPos (f*CELLSIZE +10, e*CELLSIZE +10)
setFillColor("darkviolet")
fill()
d= randint(-9,9)
e= randint(-7,7)
setPos(d*CELLSIZE+10, e*CELLSIZE+10)
setFillColor("red")
fill()
setPos(-400+ 5*CELLSIZE// 2, -300+5*CELLSIZE//2)
repeat 25:
if getPixelColorStr() == "green":
forward(CELLSIZE)
else:
forward(CELLSIZE)
if getPixelColorStr() == "green":
forward(CELLSIZE)
else:
back(2*CELLSIZE)
break
showTurtle()
anzahlSchritte=0
anzahlfelder=6
anzahlFelder=6
repeat 1000:
doStep(anzahlFelder)
showTurtle()
sleep(0.5)
x=getX()
y=getY()
if (x<-400) or (x>400)or y<-300 or (y>300):
break
elif getPixelColorStr() == "darkviolet":
anzahlfelder =0
anzahlFelder =0
elif getPixelColorStr() == "red" :
break
elif getPixelColorStr()== "green":
if anzahlfelder < 6:
forward(0)
else:
break
elif anzahlfelder <6:
setColor(" orange")
elif anzahlfelder > 6:
setColor("cyan")
anzahlfelder+=1
anzahlFelder+=1
msgDlg("Klicke mit der Maus um schwarze Felder zu erzeugen.\n"+
"Bringe die Schildkröte in das rote Feld ohne auf grüne\n"+
"Felder zu kommen, ausser die Schildkröte ist orange.")
spiel()
repeat:
antwort = askYesNo("Willst du noch einmal spielen?")
if antwort == True:
spiel()
else:
break
dispose()