Как заставить двух или более черепах выполнять задание одновременно? - PullRequest
1 голос
/ 28 мая 2020

Моей целью для этой программы было привыкнуть к встроенному в python методу "черепахи". Моя цель состояла в том, чтобы запрограммировать четырех черепах (ниндзя), чтобы они ходили одновременно по квадрату. Хотя в моей программе не было абсолютных ошибок, я хотел, чтобы программа показывала, как черепахи идут одновременно (а не сталкиваются друг с другом). Сначала я попытался разделить четыре переменные запятыми в одной строке, но это ничего не изменило. В качестве альтернативы я использовал «+» для разделения каждой переменной - что не работает. Затем я посмотрел, как переместить двух черепах одновременно. Однако, поскольку большинство из этих программ связано с гонками, некоторые методы не работали.

import turtle

leonardo = turtle.Turtle()
rafael = turtle.Turtle()
michelangelo = turtle.Turtle()
donatello = turtle.Turtle()

leonardo.shape("turtle")
rafael.shape("turtle")
michelangelo.shape("turtle")
donatello.shape("turtle")

michelangelo.left(90)
donatello.right(90)
leonardo.forward(250)
rafael.backward(250)
donatello.forward(250)
michelangelo.forward(250)

# Better if I could make all four turtles turn at the same time
michelangelo.left(45), leonardo.left(135), rafael.right(45), donatello.left(135)

turtle_speed = 1

angle = float(input("Which angle would you like the turtles to face? "))

for i in range(1):

    leonardo.speed(1)

    leonardo.pencolor("light green")

    leonardo.forward(353.5533905932738)
    leonardo.left(angle)
    leonardo.forward(353.5533905932738)
    leonardo.left(angle)
    leonardo.forward(353.5533905932738)
    leonardo.left(angle)
    leonardo.forward(353.5533905932738)
    leonardo.left(angle)

    rafael.pencolor("gold")

    rafael.forward(353.5533905932738)
    rafael.left(angle)
    rafael.forward(353.5533905932738)
    rafael.left(angle)
    rafael.forward(353.5533905932738)
    rafael.left(angle)
    rafael.forward(353.5533905932738)
    rafael.left(angle)

    michelangelo.pencolor("turquoise")

    michelangelo.left(90)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)

    donatello.pencolor("white")

    donatello.forward(353.5533905932738)
    donatello.left(angle)
    donatello.forward(353.5533905932738)
    donatello.left(angle)
    donatello.forward(353.5533905932738)
    donatello.left(angle)
    donatello.forward(353.5533905932738)
    donatello.left(angle)


turtle.done()

1 Ответ

2 голосов
/ 28 мая 2020

Вам просто нужно, чтобы каждая черепаха двигалась понемногу за раз. Я внес несколько изменений, которые показывают, как это делать с движением:

import turtle

leonardo = turtle.Turtle()
rafael = turtle.Turtle()
michelangelo = turtle.Turtle()
donatello = turtle.Turtle()

ninjas = [ leonardo, rafael, michelangelo, donatello ]

angle = 0

for t in ninjas:
  t.shape("turtle") 
  t.right(angle)
  t.forward(250)
  angle += 90


turtle_speed = 1
leonardo.pencolor("light green")
rafael.pencolor("gold")
michelangelo.pencolor("turquoise")
donatello.pencolor("white")

angle = float(input("Which angle would you like the turtles to face? "))

turns = 4
while turns>0:
  turns -= 1  
  move = 350
  while move>0:
    for t in ninjas:
      t.forward(5)
    move -= 5

  for t in ninjas:
    t.left(angle)

turtle.done()
...