jeudi 8 septembre 2022

Trying to make two turtles move randomly in a square and saying when they're close to each other

So my assignement is to:

  1. make a blue rectangle
  2. write a function that makes the turle move in a random direction within an interval of 90 degrees and move forward in a random interval of 0-25
  3. create a blue square
  4. Move the turle to a random point in the square
  5. Code so the turtle moves back inside the square if it leaves it
  6. Create an additonal turle (both should have different colors)
  7. Use the same statement to move both turtles (with the move_random function) 500 times
  8. if the turtles are closer than 50 units - print a string that counts the number of times they are 50 units close.

This is what it should look like: enter image description here

I've added some comments to explain my thought process

Also i get an error saying that "else" is invalid syntax

Any and all help is appreciated

The code:

import turtle

import random

#makes the jump function
def jump(t, x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()  

#creares a turtle at a defined place    
def make_turtle(x, y):
    t = turtle.Turtle()
    jump(t, x, y)    # Use of the function defined above
    return t

#function to create a rectangle and fill it with a color
def rectangle(x, y, width, height, color):
    t = make_turtle(x, y)
    t.speed(0)
    t.hideturtle()
    t.fillcolor(color)
    t.begin_fill()
    for dist in [width, height, width, height]:
        t.forward(dist)
        t.left(90)
    t.end_fill()
    
#function to move turtle in a random heading (90 degree interval) between 0--25 units forward
#While also making it turn around if it is outside of the square
def move_random(t):
    if abs(t.pos()[0]) >= 250 or abs(t.pos()[1]) >= 250:
        target = (0, 0)
        d =  (0,0)
    t.setheading(d)
    else:
        ini = t.heading()
        new = rd.randint(ini - 45, ini + 45)
        t.setheading(new)
        t.forward(rd.randint(0, 25))
    
 #creates the square and both turtles   
    t = make_turtle(0 , 0)
    t.color("green")
    t2 = make_turtle(0 , 0) 
    t2.color("black")
    rectangle(-250, -250, 500, 500, "lightblue")
    jump(t, rd.randint(-250, 250), rd.randint(-250, 250))
    jump(t2, rd.randint(-250, 250), rd.randint(-250, 250)) #jumps the turles randomly in the square
    meet = 0
    for i in range(1, 501): #makes the turtles move randomly as specified above
        move_random(t)
        move_random(t2)
    if t.distance(t2) < 50: 
        t.write("close")
        meet += 1

print(str(meet), "close encounter") #prints the amount of times they are close to each other



Aucun commentaire:

Enregistrer un commentaire