在两个图像之间来回切换

时间:2013-01-11 09:43:20

标签: python image import pygame

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

我尝试使用0-10之间的随机整数变量自己做。如果整数小于5,则将图片设置为bat。如果整数大于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))

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

基本上我可以让图像改变,但只能快速一秒。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

bomb_img = 0
...

你应该把那条线拉出你的圈子。