你好,我正在使用 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
提交
取消