Hey there! Sign in to join this conversationNew here? Join for free
    • Thread Starter
    Offline

    20
    ReputationRep:
    I am currently, learning Charles Dierbach's book, Introduction to Computer Science using Python.

    I am trying to make my turtle bounce off the canvas but it does not work. I have tried different variations but have not being able to fix it

    Here is my code:


    Code:
    Code:
    #Drunkard walk PYTHON
    
        from turtle import *
        from random import *
        
        #draw a house
        def house(t):
            pu()
            goto(270,100)
            pd()
            pensize(5)
            for i in range(4):
                fd(100)
                right(90)
            setheading(120)
            fd(100)
            setheading(240)
            fd(100)
            pu()
            goto(200,0)
            pd()
            setheading(90)
            fd(70)
            setheading(0)
            fd(40)
            setheading(270)
            fd(70)
            pu()
        
        
        #make roads
        def road(t):
            pu()
            goto(80, 280)
            pd()
            begin_fill()
            color('black')
            setheading(270)
            fd(250)
            setheading(180)
            fd(100)
            setheading(90)
            fd(250)
            setheading(0)
            fd(100)
            end_fill()
            pu()
            goto(80,25)
            pd()
            begin_fill()
            color('white')
            setheading(270)
            for i in range(4):
                fd(70)
                right(90)
                fd(100)
                right(90)
            end_fill()
            pu()
            goto(80, -45)
            pd()
            begin_fill()
            color('black')
            setheading(270)
            fd(240)
            setheading(180)
            fd(100)
            setheading(90)
            fd(240)
            setheading(0)
            fd(100)
            end_fill()
            
          #this is my code to keep turtle on canvas   
        def isInScreen(window, t):
            xmin=-299
            xmax=299
            ymin=-299
            ymax=299
        
            xTcor = t.xcor()
            yTcor = t.ycor()
            
            if xTcor<xmin or xTcor>xmax:
                new_heading = (180 - t.heading())
                return new_heading
            if yTcor<ymin or yTcor>ymax:
                new_heading = (360 - t.heading())
                return new_heading
            #house coord
            if (170<=xTcor<=200 or 200<=xTcor<=270)and yTcor==0:
                new_heading = (360 - t.heading())
                return new_heading
            if xTcor==170 and 0<=yTcor<=100:
                new_heading = (180 - t.heading())
                return new_heading
            if (170<=xTcor<=200 or 200<=xTcor<=270) and yTcor==100:
                new_heading = (360 - t.heading())
                return new_heading
            if xTcor==270 and 0<=yTcor<=100:
                new_heading = (180 - t.heading())
                return new_heading
            if 170<=xTcor<=271 and 100<=yTcor<=150:
                new_heading = (360 - t.heading())
                return new_heading
            if  200<=xTcor<=240 and yTcor ==0:
                new_heading = 0 
                return new_heading
            return  100
            
                
            
        
        #################MAIN####################
        setup(600,600)
        window=Screen()
        window.title("Drunkard walk")
        window.bgcolor("grey")
        
        
        #get the turtle and change the shape
        t=getturtle()
        t.shape('turtle')
        shapesize(2,1.2,1.2)
        
        pu()
        
        #change coords and make the ouer roads
        goto(290,290)
        pd()
        setheading(270)
        pensize(10)
        
        for i in range(4):
            fd(580)
            right(90)
        
        
        shape('circle')
        house(t)
        goto(80,0)
        road(t)
        penup()
        goto(-250,-260)
        shapesize(1,1,1)
        walking = True
        while walking:
            pendown()
            fd(10)
            color = choice(["black", "red", "yellow", "blue", "white", "green"]) 
            fillcolor(color)
            ch = randrange(2)
            if ch == 0:
                left(90)
            else:
                right(90)
            setheading(isInScreen(window, t))
        
        
        mainloop()
        exitonclick()
    Please help me how to fix it and where i went wrong?
 
 
 
  • See more of what you like on The Student Room

    You can personalise what you see on TSR. Tell us a little about yourself to get started.

  • Poll
    Brussels sprouts
  • See more of what you like on The Student Room

    You can personalise what you see on TSR. Tell us a little about yourself to get started.

  • The Student Room, Get Revising and Marked by Teachers are trading names of The Student Room Group Ltd.

    Register Number: 04666380 (England and Wales), VAT No. 806 8067 22 Registered Office: International House, Queens Road, Brighton, BN1 3XE

    Quick reply
    Reputation gems: You get these gems as you gain rep from other members for making good contributions and giving helpful advice.