0

我看过几篇关于更改精灵图像的不同帖子。对于当前的任务,我必须构建一个 packman 精灵,然后它应该跟随鼠标。那里没问题。这是那段代码:

class Packman(games.Sprite):
    """Create the packman that is conrolled by the mouse"""
    #load the packman image
    image_right = games.load_image("snap_right.png") # initial value
    image_left = games.load_image("snap_left.png")
    show_image = image_right



    def __init__(self, x=games.mouse.x, y = games.mouse.y):
        """Initialise packman"""
        super(Packman, self).__init__(image = Packman.show_image, x = games.mouse.x, y = games.mouse.y)

    def update(self):
        """Move packmans coordinates"""
        self.x = games.mouse.x
        self.y = games.mouse.y

        if self.left < 0:
            self.left = 0

        if self.right > games.screen.width:
            self.right = games.screen.width

        #change Packman's direction that he is facing`

如您所见,我尝试加载两张图像,但一次只显示一张图像。(我认为有一种方法可以只水平翻转一个图像,而不是使用两个图像。)照原样,我可以移动 Packman。现在我需要根据鼠标移动的方向添加使 Packman 面向左/右的位。我的手册给了我一个例子,用按键将图像旋转 180 度,这可行,但是 packman 只是颠倒了,他的眼睛在底部。

是否有另一种根据鼠标方向翻转 packman 的方法?(我只需要水平翻转,即左右翻转)

4

1 回答 1

1

好吧,我将 Pygame 用于我的精灵,但解决方案非常简单。

我基本上使用这样的东西。两个指向初始化图像的指针。然后是一个指向指针的指针image,我们用它来绘制精灵。

# image is the pointer that points to the pointer that points to the image being currently used
image1 = pygame.image.load('left.png')
image2 = pygame.image.load('right.png')
image = image1

然后在抽奖中我只是做

screen.blit(image, position)

现在,由于您使用鼠标来跟踪 pacman 的位置。你要做的就是这个。在每一帧,将鼠标 x 和 y 的位置存储在类变量中。称它为old_xold_y。在下一帧中,只需将鼠标 x 位置与old_x. 如果鼠标位置更大,则您的 pacman 正在尝试向右移动。image = image2如果您的鼠标位置较小,那么您的 pacman 正在向左移动。image = image1应用必要的状态更改并相应地更改您的图像。

于 2013-09-04T17:23:55.300 回答