随机化位置后如何自动移动对象

How to automatically move object after randomizing its position

我的目标是让红框从它们生成的随机位置沿直线向下移动。但到目前为止发生的情况是每个红色框都在向下移动,但并不像我想要的那样连续移动。我尝试以某种方式使用 enumerate 函数,但它似乎没有什么不同。

import sys
import random
import time
import turtle
import pygame

wn = turtle.Screen()
wn.bgcolor ("black")
wn.setup (width=800, height=600)

droid_box = turtle.Turtle()
droid_box.speed (0)
droid_box.shape ("square")
droid_box.color ("red")
droid_box.shapesize (stretch_wid = 1, stretch_len = 1)
droid_box.penup()

droid_pos = [random.randint (-401, 401),300]
droid_list = [droid_pos]

def update_droid_position(droid_list):
    for z, droid_pos in enumerate(droid_list):
        if droid_pos[0] >= -400 and droid_pos[1] <= 300:
            droid_pos[1] += droid_box.dy


for i in range(-401, 401):
    droid_pos = [random.randint (-401, 401),300]
    droid_list = [droid_pos]
    droid_box.goto(droid_pos)
    droid_box.dx = 0
    droid_box.dy = -15
    droid_box.setx(droid_box.xcor()+ droid_box.dx)
    droid_box.sety(droid_box.ycor()+ droid_box.dy)
    droid_list.append([droid_box.xcor(), droid_box.ycor()])
    time.sleep(1)

while True:
    wn.update()

问题是您一次处理的不是 个盒子,而是一个盒子。以下是创建和操作多个框的代码的返工:

from random import randint
from turtle import Screen, Turtle

CURSOR_SIZE = 20

DX, DY = 25, 10
DROID_COUNT = 33
WIDTH, HEIGHT = 800, 600

def update_droid_positions(droid_list):
    moved_any = False

    for droid in droid_list:
        if droid.ycor() > CURSOR_SIZE - HEIGHT/2:
            droid.setposition(droid.xcor() + randint(-DX, DX), droid.ycor() - DY)
            moved_any = True

    return moved_any

screen = Screen()
screen.bgcolor('black')
screen.setup(WIDTH, HEIGHT)
screen.tracer(False)

droid_list = []

def move():
    if len(droid_list) < DROID_COUNT:
        droid = Turtle()
        droid.hideturtle()
        droid.shape('square')
        droid.color('white', 'red')
        droid.penup()
        droid.setposition(randint(-WIDTH/2, WIDTH/2), HEIGHT/2)
        droid.showturtle()
        droid_list.append(droid)

    if update_droid_positions(droid_list):
        screen.ontimer(move, 100)

    screen.update()

move()

screen.mainloop()

这和你做的不完全一样,只是多个海龟平滑运动的例子。