Pygame按键时如何“放置”图像

时间:2014-02-05 21:02:48

标签: python pygame

import pygame, random, time

class Game(object):
    def main(self, screen):
        bg = pygame.image.load('data/bg.png')
        select = pygame.image.load('data/select.png')
        block1 = pygame.image.load('data/enemy1.png')
        clock = pygame.time.Clock()

        while 1:
            clock.tick(30)

            spriteList = []

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return
            if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                spriteList.append(block1, (0, 0))

            mouse = pygame.mouse.get_pos()
            print(mouse)
            screen.fill((200, 200, 200))
            screen.blit(bg, (0, 0))
            screen.blit(select, (mouse))
            for sprite in spriteList:
                screen.blit(sprite[0], sprite[1])

            pygame.display.flip()

if __name__ == '__main__':
    WINDOWWIDTH = 640
    WINDOWHEIGHT = 480
    pygame.init()
    screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
    pygame.display.set_caption('Sandbox')
    Game().main(screen)

我试图这样做,所以在你移动鼠标的地方跟着它。然后,当您单击空格键时,"放置"您按下空间然后将其留在那里并能够将其他图像放在其他位置而不影响第一个图像的图像。我尝试使用spriteList,但我对从哪里开始感到困惑。 当我运行它时,我收到一条错误消息:.append() takes one argument (2 given)

1 个答案:

答案 0 :(得分:1)

在列表中添加元组。此外,存储鼠标位置,而不是(0,0)。变化

spriteList.append(block1, (0, 0))

spriteList.append((block1, mouse))

另外,你可以重写

for sprite in spriteList:
            screen.blit(sprite[0], sprite[1])

for (img, pos) in spriteList:
            screen.blit(img, pos)