Trying to force turtle back to beginning of maze after collides with wall

baujacob at gmail.com baujacob at gmail.com
Sun Oct 13 18:26:03 EDT 2013


Hi everyone, I'm trying to create a simple maze program. When the user finishes the maze, I want to print in big letters "You Win!" and when the user hits a wall, I want the user to go back to the beginning of the maze. The problem is "collision detection" which is an advanced topic and I'm only in a beginning programming class. Is there anyway I can force the user back to the starting point when the turtle hits the wall? Thank you in advance.

I've tried writing:
   if userTurtle.xcor(-30) and userTurtle.ycor(60):
      userTurtle.goto(-30,180)
      userTurtle.setheading(-90)

and

   if userTurtle.pos(-30,60):
      userTurtle.goto(-30,180)
      userTurtle.setheading(-90)

So basically I have one turtle that draws the maze at the beginning and then another turtle(userTurtle) that completes the maze. When the userTurtle hits any point on the wall, I want to force userTurtle back to the start of the maze. 
 Here it is: 

import turtle 
userTurtle = turtle.Turtle() 
draw = turtle.Turtle() 
scr = turtle.Screen() 

def drawMaze(): 
    draw.pencolor("gold") 
    draw.pensize(3) 
    draw.penup() 
    draw.goto(0,-180) 
    draw.pendown() 
    draw.speed(10) 
    draw.setheading(180) 
    draw.fd(180) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.setheading(0) 
    draw.fd(120) 
    draw.backward(120) 
    draw.setheading(90) 
    draw.fd(300) 
    draw.setheading(0) 
    draw.fd(120) 
    draw.setheading(-90) 
    draw.fd(120) 
    draw.setheading(180) 
    draw.fd(60) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.setheading(-90) 
    draw.fd(120) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.setheading(0) 
    draw.fd(120) 
    draw.setheading(-90) 
    draw.fd(60) 
    draw.setheading(0) 
    draw.fd(60) 
    draw.setheading(-90) 
    draw.fd(60) 
    draw.backward(60) 
    draw.setheading(0) 
    draw.fd(60) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.penup() 
    draw.setheading(180) 
    draw.fd(60) 
    draw.pendown() 
    draw.setheading(90) 
    draw.fd(60) 
    draw.setheading(180) 
    draw.fd(60) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.setheading(0) 
    draw.fd(120) 
    draw.setheading(-90) 
    draw.fd(60) 
    draw.backward(60) 
    draw.setheading(0) 
    draw.fd(60) 
    draw.setheading(-90) 
    draw.fd(240) 
    draw.setheading(180) 
    draw.fd(60) 
    draw.setheading(-90) 
    draw.fd(60) 
    draw.setheading(180) 
    draw.fd(120) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.setheading(180) 
    draw.fd(60) 
    draw.setheading(90) 
    draw.fd(60) 
    draw.backward(60) 
    draw.setheading(180) 
    draw.fd(60) 
    draw.penup() 
    draw.setheading(0) 
    draw.fd(300) 
    draw.pendown() 
    draw.setheading(-90) 
    draw.fd(120) 
    draw.setheading(180) 
    draw.fd(120) 
    draw.ht() 
    
    userTurtle.penup() 
    userTurtle.goto(-30,180) 
    userTurtle.setheading(-90) 
    
def mazeGame(): 
    scr.bgcolor("#0070ff") 

def m1(): 
    userTurtle.setheading(90) 
    userTurtle.fd(30) 
    userTurtle.pos() 
    print(userTurtle.pos()) 

def m2(): 
    userTurtle.setheading(180) 
    userTurtle.fd(30) 
    userTurtle.pos() 
    print(userTurtle.pos()) 

def m3(): 
    userTurtle.setheading(360) 
    userTurtle.fd(30) 
    userTurtle.pos() 
    print(userTurtle.pos()) 

def m4(): 
    userTurtle.setheading(-90) 
    userTurtle.fd(30) 
    userTurtle.pos() 
    print(userTurtle.pos()) 

scr.onkeypress(m1, "Up") 
scr.onkeypress(m2, "Left") 
scr.onkeypress(m3, "Right") 
scr.onkeypress(m4, "Down") 
    
scr.listen() 
        
drawMaze() 
mazeGame()



More information about the Python-list mailing list