为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2023-09-05 17:31:20
你好,我正在使用 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)


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信