我对侏儒和蟒蛇菜鸟完全陌生,但我正在尝试在设定的时间间隔内为我的"dot" "spawn"食物。我在这里错过了什么?


from random import randint
import pyglet
from pyglet import shapes, clock
from time import sleep
window = pyglet.window.Window(960, 540)
batch = pyglet.graphics.Batch()
...
dot = shapes.Circle(dot_rng_pos_x, dot_rng_pos_y, 5, color=rng_color, batch = batch)

这只是为了生成食物圈

def foods(num_food):
for i in range(num_food):
food_pos_x = randint(0, window.width-10)
food_pos_y = randint(0, window.height-10)
gen_food = shapes.Circle(food_pos_x, food_pos_y, 3, color=(255, 0, 0), batch = None)
return gen_food
food = foods(50)

在这里我不知道该怎么做才能得到我想要的结果:

def spawn_food(dt):
food.draw()

@window.event
def on_draw():

window.clear()
batch.draw()

pyglet.clock.schedule_interval(rng_move, 1/120)
pyglet.clock.schedule_interval(spawn_food, 2)
pyglet.app.run()

我可以画";食物;在";_ draw";函数,但只画一个圆

你的食物可能被垃圾收集了吗?我看不到你把形状存储在任何列表、dict或类中。

试着让你的函数生成一个圆。返回时,将其添加到列表中。然后,您可以循环您想要创建的任意数量的圆。

类似这样的东西:

def get_food():
food_pos_x = randint(0, window.width-10)
food_pos_y = randint(0, window.height-10)
gen_food = shapes.Circle(food_pos_x, food_pos_y, 3, color=(255, 0, 0), batch = batch)
return gen_food
all_food = [get_food() for i in range(50)]

编辑:你的gen_food也有batch=None。它需要在您的批次(batch=batch(中才能显示。

最新更新