Mar-05-2018, 02:19 AM
I have been working on this code for a while now and I can not seem to get these turtle to move at all. I can get them to the starting positions but I cant get them to randomly choose a heading and move 40 pix in that direction(random direction for each turtle between 2 and 4) and then continue to do so until tone of the turtles crosses a red line. My code is below.
""" The goal of this program is to have up to 4 turtles and as little as 2
turtles start out on the green line and race to the red line going in
random directions until one turtle crosses the line. anytime the turtles
hit the top or bottom edge they are to be tranported to a set position
on the grid to restart"""
import turtle as t
import random
def Grid(p):
p.hideturtle()
p.speed(50)
p.penup()
p.setposition(a,b)
p.pendown()
p.setposition(a,d)
p.penup()
p.setposition(a+40,b)
p.pendown()
p.setposition(a+40,d+40)
p.penup()
p.setposition(a+80,b)
p.pendown()
p.setposition(a+80,d+40)
p.penup()
p.setposition(a+120,b)
p.pendown()
p.setposition(a+120,d+40)
p.penup()
p.setposition(a+160,b)
p.pendown()
p.setposition(a+160,d+40)
p.penup()
p.setposition(a+200,b)
p.pendown()
p.setposition(a+200,d+40)
p.penup()
p.setposition(a+240,b)
p.pendown()
p.setposition(a+240,d+40)
p.penup()
p.setposition(a+280,b)
p.pendown()
p.setposition(a+280,d+40)
p.penup()
p.setposition(a+320,b)
p.pendown()
p.setposition(a+320,d+40)
p.penup()
p.setposition(a+360,b)
p.pendown()
p.setposition(a+360,d+40)
p.penup()
p.setposition(a+400,b)
p.pendown()
p.setposition(a+400,d+40)
p.penup()
p.setposition(a+440,b)
p.pendown()
p.setposition(a+440,d+40)
p.penup()
p.setposition(a+480,b)
p.pendown()
p.setposition(a+480,d+40)
p.penup()
p.setposition(a+520,b)
p.pendown()
p.setposition(a+520,d+40)
p.penup()
p.setposition(a+560,b)
p.pendown()
p.setposition(a+560,d+40)
p.penup()
p.setposition(a+600,b)
p.pendown()
p.setposition(a+600,d+40)
p.setposition(a,d+40)
p.setposition(a,b)
p.setposition(a+640,b)
p.setposition(a+640,b+40)
p.setposition(a,b+40)
p.setposition(a,b+80)
p.setposition(a+640,b+80)
p.setposition(a+640,b+120)
p.setposition(a,b+120)
p.setposition(a,b+160)
p.setposition(a+640,b+160)
p.setposition(a+640,b+200)
p.setposition(a,b+200)
p.setposition(a,b+240)
p.setposition(a+640,b+240)
p.setposition(a+640,b+280)
p.setposition(a,b+280)
p.setposition(a,b+320)
p.setposition(a+640,b+320)
p.setposition(a+640,b+360)
p.setposition(a,b+360)
p.setposition(a,b+400)
p.setposition(a+640,b+400)
p.setposition(a+640,b+440)
p.setposition(a,b+440)
p.setposition(a,b+480)
p.setposition(a+640,b+480)
p.setposition(a+640,b+520)
p.setposition(a,b+520)
p.setposition(a,b+560)
p.setposition(a+640,b+560)
p.setposition(a+640,b+600)
p.setposition(a,b+600)
p.setposition(a,b+640)
p.setposition(a+640,b+640)
p.setposition(a+640,b)
p.penup()
p.pencolor('green')
p.pensize(5)
p.setposition(a+40,b)
p.pendown()
p.setposition(a+40,d+40)
p.penup()
p.pencolor('red')
p.pensize(5)
p.setposition(a+600,b)
p.pendown()
p.setposition(a+600,d+40)
p.penup()
p.setposition(-75,20)
p.penup()
p.setposition(a+80,b-40)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+120,b-40)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+160,b-40)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+200,b-40)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+240,b-40)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+280,b-40)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+320,b-40)
p.pendown()
p.write("70",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+360,b-40)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+400,b-40)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+440,b-40)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+480,b-40)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+520,b-40)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+560,b-40)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+80,d+60)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+120,d+60)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+160,d+60)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+200,d+60)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+240,d+60)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+280,d+60)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+320,d+60)
p.pendown()
p.write("70",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+360,d+60)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+400,d+60)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+440,d+60)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+480,d+60)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+520,d+60)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+560,d+60)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
def atTopEdge(turtle,h):
if turtle.xcor()==d+40:
return True
else:
return False
def atBottomEdge(turtle,b):
if turtle.xcor()==d:
return True
else:
return False
def atRightEdge(turtle,w):
if turtle.ycor==a+640:
return True
else:
return False
def atLeftEdge(turtle,a):
if turtle.ycor()==a:
return True
else:
return False
def startPoints(start):
route=[0,90,180,270]
direction=random.choice(route)
if turtles ==2:
t.penup()
start.penup()
mutants[0].goto(a+40,b+200)
mutants[0].fillcolor(colorX[x])
mutants[0].setheading(directionA)
mutants[0].pencolor(colorX[x])
mutants[0].pendown()
mutants[1].goto(a+40,d-160)
mutants[1].fillcolor(colorQ[q])
mutants[1].setheading(directionB)
mutants[1].pencolor(colorQ[q])
mutants[1].pendown()
elif turtles ==3:
start.penup()
mutants[0].setposition(a+40,b+40)
mutants[0].fillcolor(colorX[x])
mutants[0].setheading(directionA)
mutants[0].pencolor(colorX[x])
mutants[0].pendown()
mutants[1].setposition(a+40,d)
mutants[1].fillcolor(colorQ[q])
mutants[1].setheading(directionB)
mutants[1].pencolor(colorQ[q])
mutants[1].pendown()
mutants[2].setposition(a+40,20)
mutants[2].fillcolor(colorG[g])
mutants[2].setheading(directionC)
mutants[2].pencolor(colorG[g])
mutants[2].pendown()
else:
start.penup()
mutants[0].setposition(a+40,b+80)
mutants[0].fillcolor(colorX[x])
mutants[0].setheading(directionA)
mutants[0].pencolor(colorX[x])
mutants[0].pendown()
mutants[1].setposition(a+40,b+240)
mutants[1].fillcolor(colorQ[q])
mutants[1].setheading(directionB)
mutants[1].pencolor(colorQ[q])
mutants[1].pendown()
mutants[2].setposition(a+40,d-40)
mutants[2].fillcolor(colorG[g])
mutants[2].setheading(directionC)
mutants[2].pencolor(colorG[g])
mutants[2].pendown()
mutants[3].setposition(a+40,d-200)
mutants[3].fillcolor(colorP[p])
mutants[3].setheading(directionD)
mutants[3].pencolor(colorP[p])
mutants[3].pendown()
return startPoints
def createTurtles(turtles):
route=[0,90,180,270]
direction=random.choice(route)
mutants=[]
while turtles <2 or turtles >4:
turtles=int(input('Please enter a number between 2 and 4 for the amount of turtles for simulation: '))
else:
for k in range(0,turtles):
new_turtle=t.Turtle()
new_turtle.penup()
new_turtle.shape('turtle')
new_turtle.color(colorP[x])
new_turtle.speed(50)
mutants.append(new_turtle)
return mutants
w=800
h=600
a=-w/2
b=-h/2
c=w/2
d=h/2
f=a+640
t.setup(w,h)
win=t.Screen()
win.title("Turtle Race")
tt=t.getturtle()
q=random.randint(0,1)
g=random.randint(0,1)
p=random.randint(0,1)
x=random.randint(0,1)
y=random.randint(0,3)
colorX=["black","red"]
colorQ=["pink","blue"]
colorG=["orange","gold"]
colorP=["magenta","brown"]
turtles=int(input('Enter a number between 2 and 4 for the amount of turtles for simulation: '))
mutants=createTurtles(turtles)
route=[0,90,180,270]
directionA=random.choice(route)
directionB=random.choice(route)
directionC=random.choice(route)
directionD=random.choice(route)
directionE=random.choice(route)
list_color=[]
Grid(tt)
startPoints(tt)
t.exitonclick()
terminate=False
while not terminate:
direction=random.choice(route)
direct=random.randrange(0,2)
for k in range(0,len(mutants)):
if direct==0:
mutants[k].right(90)
else:
mutants[k].left(90)
mutants[k].forward(40)
if atTopEdge(mutants[k],d+40):
mutants[k].setposition(a+40,d)
elif atBottomEdge(mutants[k],b):
mutants[k].setposition(a+40,d)
elif atLeftEdge(mutants[k],a):
mutants[k].setposition(a+40,d)
elif atRightEdge(mutants[k],a+600):
terminate=True
print("Turtle",mutants[k],"Wins!!")
""" The goal of this program is to have up to 4 turtles and as little as 2
turtles start out on the green line and race to the red line going in
random directions until one turtle crosses the line. anytime the turtles
hit the top or bottom edge they are to be tranported to a set position
on the grid to restart"""
import turtle as t
import random
def Grid(p):
p.hideturtle()
p.speed(50)
p.penup()
p.setposition(a,b)
p.pendown()
p.setposition(a,d)
p.penup()
p.setposition(a+40,b)
p.pendown()
p.setposition(a+40,d+40)
p.penup()
p.setposition(a+80,b)
p.pendown()
p.setposition(a+80,d+40)
p.penup()
p.setposition(a+120,b)
p.pendown()
p.setposition(a+120,d+40)
p.penup()
p.setposition(a+160,b)
p.pendown()
p.setposition(a+160,d+40)
p.penup()
p.setposition(a+200,b)
p.pendown()
p.setposition(a+200,d+40)
p.penup()
p.setposition(a+240,b)
p.pendown()
p.setposition(a+240,d+40)
p.penup()
p.setposition(a+280,b)
p.pendown()
p.setposition(a+280,d+40)
p.penup()
p.setposition(a+320,b)
p.pendown()
p.setposition(a+320,d+40)
p.penup()
p.setposition(a+360,b)
p.pendown()
p.setposition(a+360,d+40)
p.penup()
p.setposition(a+400,b)
p.pendown()
p.setposition(a+400,d+40)
p.penup()
p.setposition(a+440,b)
p.pendown()
p.setposition(a+440,d+40)
p.penup()
p.setposition(a+480,b)
p.pendown()
p.setposition(a+480,d+40)
p.penup()
p.setposition(a+520,b)
p.pendown()
p.setposition(a+520,d+40)
p.penup()
p.setposition(a+560,b)
p.pendown()
p.setposition(a+560,d+40)
p.penup()
p.setposition(a+600,b)
p.pendown()
p.setposition(a+600,d+40)
p.setposition(a,d+40)
p.setposition(a,b)
p.setposition(a+640,b)
p.setposition(a+640,b+40)
p.setposition(a,b+40)
p.setposition(a,b+80)
p.setposition(a+640,b+80)
p.setposition(a+640,b+120)
p.setposition(a,b+120)
p.setposition(a,b+160)
p.setposition(a+640,b+160)
p.setposition(a+640,b+200)
p.setposition(a,b+200)
p.setposition(a,b+240)
p.setposition(a+640,b+240)
p.setposition(a+640,b+280)
p.setposition(a,b+280)
p.setposition(a,b+320)
p.setposition(a+640,b+320)
p.setposition(a+640,b+360)
p.setposition(a,b+360)
p.setposition(a,b+400)
p.setposition(a+640,b+400)
p.setposition(a+640,b+440)
p.setposition(a,b+440)
p.setposition(a,b+480)
p.setposition(a+640,b+480)
p.setposition(a+640,b+520)
p.setposition(a,b+520)
p.setposition(a,b+560)
p.setposition(a+640,b+560)
p.setposition(a+640,b+600)
p.setposition(a,b+600)
p.setposition(a,b+640)
p.setposition(a+640,b+640)
p.setposition(a+640,b)
p.penup()
p.pencolor('green')
p.pensize(5)
p.setposition(a+40,b)
p.pendown()
p.setposition(a+40,d+40)
p.penup()
p.pencolor('red')
p.pensize(5)
p.setposition(a+600,b)
p.pendown()
p.setposition(a+600,d+40)
p.penup()
p.setposition(-75,20)
p.penup()
p.setposition(a+80,b-40)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+120,b-40)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+160,b-40)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+200,b-40)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+240,b-40)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+280,b-40)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+320,b-40)
p.pendown()
p.write("70",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+360,b-40)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+400,b-40)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+440,b-40)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+480,b-40)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+520,b-40)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+560,b-40)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+80,d+60)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+120,d+60)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+160,d+60)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+200,d+60)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+240,d+60)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+280,d+60)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+320,d+60)
p.pendown()
p.write("70",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+360,d+60)
p.pendown()
p.write("60",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+400,d+60)
p.pendown()
p.write("50",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+440,d+60)
p.pendown()
p.write("40",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+480,d+60)
p.pendown()
p.write("30",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+520,d+60)
p.pendown()
p.write("20",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
p.setposition(a+560,d+60)
p.pendown()
p.write("10",move=False,align="center",font=("Ariel",12,"normal"))
p.penup()
def atTopEdge(turtle,h):
if turtle.xcor()==d+40:
return True
else:
return False
def atBottomEdge(turtle,b):
if turtle.xcor()==d:
return True
else:
return False
def atRightEdge(turtle,w):
if turtle.ycor==a+640:
return True
else:
return False
def atLeftEdge(turtle,a):
if turtle.ycor()==a:
return True
else:
return False
def startPoints(start):
route=[0,90,180,270]
direction=random.choice(route)
if turtles ==2:
t.penup()
start.penup()
mutants[0].goto(a+40,b+200)
mutants[0].fillcolor(colorX[x])
mutants[0].setheading(directionA)
mutants[0].pencolor(colorX[x])
mutants[0].pendown()
mutants[1].goto(a+40,d-160)
mutants[1].fillcolor(colorQ[q])
mutants[1].setheading(directionB)
mutants[1].pencolor(colorQ[q])
mutants[1].pendown()
elif turtles ==3:
start.penup()
mutants[0].setposition(a+40,b+40)
mutants[0].fillcolor(colorX[x])
mutants[0].setheading(directionA)
mutants[0].pencolor(colorX[x])
mutants[0].pendown()
mutants[1].setposition(a+40,d)
mutants[1].fillcolor(colorQ[q])
mutants[1].setheading(directionB)
mutants[1].pencolor(colorQ[q])
mutants[1].pendown()
mutants[2].setposition(a+40,20)
mutants[2].fillcolor(colorG[g])
mutants[2].setheading(directionC)
mutants[2].pencolor(colorG[g])
mutants[2].pendown()
else:
start.penup()
mutants[0].setposition(a+40,b+80)
mutants[0].fillcolor(colorX[x])
mutants[0].setheading(directionA)
mutants[0].pencolor(colorX[x])
mutants[0].pendown()
mutants[1].setposition(a+40,b+240)
mutants[1].fillcolor(colorQ[q])
mutants[1].setheading(directionB)
mutants[1].pencolor(colorQ[q])
mutants[1].pendown()
mutants[2].setposition(a+40,d-40)
mutants[2].fillcolor(colorG[g])
mutants[2].setheading(directionC)
mutants[2].pencolor(colorG[g])
mutants[2].pendown()
mutants[3].setposition(a+40,d-200)
mutants[3].fillcolor(colorP[p])
mutants[3].setheading(directionD)
mutants[3].pencolor(colorP[p])
mutants[3].pendown()
return startPoints
def createTurtles(turtles):
route=[0,90,180,270]
direction=random.choice(route)
mutants=[]
while turtles <2 or turtles >4:
turtles=int(input('Please enter a number between 2 and 4 for the amount of turtles for simulation: '))
else:
for k in range(0,turtles):
new_turtle=t.Turtle()
new_turtle.penup()
new_turtle.shape('turtle')
new_turtle.color(colorP[x])
new_turtle.speed(50)
mutants.append(new_turtle)
return mutants
w=800
h=600
a=-w/2
b=-h/2
c=w/2
d=h/2
f=a+640
t.setup(w,h)
win=t.Screen()
win.title("Turtle Race")
tt=t.getturtle()
q=random.randint(0,1)
g=random.randint(0,1)
p=random.randint(0,1)
x=random.randint(0,1)
y=random.randint(0,3)
colorX=["black","red"]
colorQ=["pink","blue"]
colorG=["orange","gold"]
colorP=["magenta","brown"]
turtles=int(input('Enter a number between 2 and 4 for the amount of turtles for simulation: '))
mutants=createTurtles(turtles)
route=[0,90,180,270]
directionA=random.choice(route)
directionB=random.choice(route)
directionC=random.choice(route)
directionD=random.choice(route)
directionE=random.choice(route)
list_color=[]
Grid(tt)
startPoints(tt)
t.exitonclick()
terminate=False
while not terminate:
direction=random.choice(route)
direct=random.randrange(0,2)
for k in range(0,len(mutants)):
if direct==0:
mutants[k].right(90)
else:
mutants[k].left(90)
mutants[k].forward(40)
if atTopEdge(mutants[k],d+40):
mutants[k].setposition(a+40,d)
elif atBottomEdge(mutants[k],b):
mutants[k].setposition(a+40,d)
elif atLeftEdge(mutants[k],a):
mutants[k].setposition(a+40,d)
elif atRightEdge(mutants[k],a+600):
terminate=True
print("Turtle",mutants[k],"Wins!!")