猿问

在pygame中将对象放置在随机位置

你好,我正在使用 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 的情况下使食物位置随机的方法。


您知道如何进行这项工作吗?


蝴蝶刀刀
浏览 144回答 1
1回答

呼啦一阵风

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)
随时随地看视频慕课网APP

相关分类

Python
我要回答