В чём причина ошибки в коде?

Как можно улучшить код для анимации движения мячей по экрану с использованием модуля `turtle` в Python?
  • 20 февраля 2024 г. 12:59
Ответы на вопрос 2
Причина ошибки в коде заключается в том, что переменные `ball1` и `ball2` объявлены как глобальные за пределами функции `move_balls()`, поэтому они не могут быть использованы внутри функции без ключевого слова `global`.

Для улучшения кода и создания анимации движения мячей по экрану с использованием модуля `turtle` в Python, можно переписать код следующим образом:

```python
import turtle
import random

# Создание экрана
screen = turtle.Screen()
screen.title("Bouncing Balls")
screen.bgcolor("black")
screen.setup(width=800, height=600)

# Создание мячей
balls = []
colors = ["red", "blue", "green", "yellow", "orange", "purple"]

number_of_balls = 2

for _ in range(number_of_balls):
    ball = turtle.Turtle()
    ball.shape("circle")
    ball.color(random.choice(colors))
    ball.penup()
    ball.speed(0)
    ball.goto(random.randint(-300, 300), random.randint(-200, 200))
    ball.dx = random.randint(-3, 3)
    ball.dy = random.randint(-3, 3)
    balls.append(ball)

# Функция движения мячей
def move_balls():
    for ball in balls:
        ball.setx(ball.xcor() + ball.dx)
        ball.sety(ball.ycor() + ball.dy)

        # Проверка столкновения с границами экрана
        if ball.xcor() > 390 or ball.xcor() < -390:
            ball.dx *= -1
        if ball.ycor() > 290 or ball.ycor() < -290:
            ball.dy *= -1

while True:
    screen.update()
    move_balls()
```

Этот улучшенный код написан так, чтобы два мяча отскакивали от границ экрана и двигались случайным образом по экрану.
# balls.append([balls, dx, dy])
balls.append([ball, dx, dy])

# x,y = balls[i][0].positions()
x,y = balls[i][0].position()

# while True:
    # for i in range(count):
while True:
    window.update()
    for i in range(count):
Похожие вопросы