你好,我正在使用 pygame 在 python 中编写一个简单的贪吃蛇游戏。有一件事我不太明白,那就是:如何将一个对象放在屏幕上的随机位置,而不闪烁。这是我的一些代码:class Food(object): def __init__(self): self.eaten = False def food_spawn(self): self.food_x = random.randrange(0, 800, 1) self.food_y = random.randrange(0, 800, 1) def food_drawing(self): self.food_spawn() pygame.draw.circle(win, (0, 255, 0), (self.food_x, self.food_y), 15)def window_drawing(): # Filling the window with the background color to make the block move and not to draw longer and longer stripes win.fill((0,0,0)) # Drawing the Food and the snake player.snake_drawing() apple.food_drawing() pygame.display.update()player = Snake(300, 50)apple = Food()我知道问题是我random.randrange(0,800,1)每次调用时都会调用apple.food_drawing(),因此每次迭代都会调用新位置。但是,我无法找到一种在不使用 randrange 的情况下使食物位置随机的方法。您知道如何进行这项工作吗?
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
food_spawn()在构造函数 ( ) 中调用,__init__而不是在food_drawing(). 因此food_x和food_y属性是在构造对象实例时设置的,并且它们不会每帧都更改:
class Food(object):
def __init__(self):
self.eaten = False
self.food_spawn()
def food_spawn(self):
self.food_x = random.randrange(0, 800, 1)
self.food_y = random.randrange(0, 800, 1)
def food_drawing(self):
pygame.draw.circle(win, (0, 255, 0), (self.food_x, self.food_y), 15)
添加回答
举报
0/150
提交
取消