Pygame:控制两个精灵

时间:2016-08-30 08:27:05

标签: python-2.7 pygame

import pygame, sys
pygame.init()
surf = pygame.display.set_mode((1280, 720))
black = (0, 0, 0)
surf.fill(black)
fps_clock = pygame.time.Clock()
pygame.display.flip()

class Player(pygame.sprite.Sprite):

    def __init__(self, name, xx, yy):
        self.name = name
        self.image = pygame.Surface((22, 22))
        self.image.fill((130, 100, 200))
        self.rect = self.image.get_rect(x = xx, y = yy)
        self.x_vel = 0
        self.y_vel = 0
    def speed(self, speed):
        self.speed = speed
    def update(self, keys):
            if keys[pygame.K_DOWN]:
                self.y_vel = 3
            elif keys[pygame.K_UP]:
                self.y_vel = -3
            else:
                self.y_vel = 0   
            if keys[pygame.K_LEFT]:
                self.x_vel = -3
            elif keys[pygame.K_RIGHT]:
                self.x_vel = 3
            else:
                self.x_vel = 0
            self.rect.x += self.x_vel
            self.rect.y += self.y_vel
    def update1(self, keys):
            if keys[pygame.K_s]:
                self.y_vel = 3
            elif keys[pygame.K_w]:
                self.y_vel = -3
            else:
                self.y_vel = 0

            if keys[pygame.K_a]:
                self.x_vel = -3
            elif keys[pygame.K_d]:
                self.x_vel = 3
            else:
                self.x_vel = 0
            self.rect.x += self.x_vel
            self.rect.y += self.y_vel
    def draw(self, surface): 
        surf.fill(black)
        surface.blit(self.image, self.rect)

player = Player('Tank', 100, 300)
player2 = Player('Tank2', 200, 500)

def main():
    while True:    
        keys = pygame.key.get_pressed()
        player.draw(surf)
        player2.draw(surf)
        player.update(keys)
        player2.update1(keys)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        pygame.display.update()

        fps_clock.tick(60)

main()

尝试创建2个精灵,一个可以使用箭头键控制,另一个使用WASD键集。它只会在图像上点亮一个精灵,可以使用WASD控制。如果播放了player2.update1(键),则可以通过箭头键控制另一个。请不要那么打击我,还是一个新手。

1 个答案:

答案 0 :(得分:0)

问题是你在绘制每个玩家之前用黑色填满整个屏幕。这意味着当玩家2被吸引时,玩家将被黑色吸引。从def draw()中删除第52行surf.fill(黑色)并将其添加到主游戏循环中,以便只调用一次。

def main():
    while True:
        surf.fill(black)