0

前几天我和朋友很无聊,决定用 python 做一个简单的游戏。物体从显示窗口的顶部落下,用户必须控制一个盒子在它们落地之前接住它们。我们决定我们将拥有比其他对象更有价值的不同对象。我的问题是,你如何让一个物体随机切换图像的实例。

我尝试自己使用一个介于 0-10 之间的随机整数变量来执行此操作。如果整数小于5,则将图片设置为蝙蝠。如果整数大于5,则图片设置为重影。

我尝试的编码如下:

    #Detect if user has missed a bomb#

    bomb_img = 0
    bomb_y += vel_y
    if bomb_y > 500:
        bomb_x = random.randint(0, 500)
        bomb_y = -50
        bomb_img = random.randint(0,10)
        lives -= 1
        if lives == 0:
            game_lost = True

    #Detect if user has saved a bomb#
    elif bomb_y > pos_y:
        if bomb_x > pos_x and bomb_x < pos_x + 120:
            score += 10
            bomb_x= random.randint(0,500)
            bomb_y = -50
            bomb_img = random.randint(0,10)

    #Change bomb img#       
    ghost = pygame.image.load("ghost2.png").convert_alpha()
    bat = pygame.image.load("bat2.png").convert_alpha()
    bat_resize = pygame.transform.scale(bat, (133,95))
    if bomb_img <= 5:
        _display_window.blit(bat_resize, (bomb_x, bomb_y))
    else:
        _display_window.blit(ghost, (bomb_x, bomb_y))

但是,这在运行时无法按预期工作。图片确实变成了一个幽灵,但只有一瞬间,然后随着蝙蝠继续下落,它又变回了蝙蝠。

我还尝试切换以下代码行:

if bomb_img <= 5:
    _display_window.blit(ghost, (bomb_x, bomb_y))
else:
    _display_window.blit(bat_resize, (bomb_x, bomb_y))

在这种情况下,图片会在一瞬间随机变为蝙蝠,然后再变回幽灵

基本上我可以改变图像,但只是一秒钟。有什么想法吗?

4

1 回答 1

0

看起来问题是您在循环开始时重置了 bomb_img,即代码的第一行:

bomb_img = 0
...

你应该把那条线拉到你的循环之外。

于 2013-01-11T10:53:45.903 回答