2016-08-30 13 views
0
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を使用して制御できる、イメージ上の1つのスプライトのみをブリッジします。 player2.update1(keys)がコメントされている場合は、もう一方は矢印キーで制御できます。私はそれほど多くの、まだ初心者のようなものを打ち負かさないでください。Pygame:2つのスプライトを制御する

答えて

0

各プレーヤーを描画する前に、画面全体を黒で塗りつぶすのが問題です。それは、プレーヤー2が描かれたときにプレーヤー1が黒で描かれることを意味します。 def draw()から52行目のsurf.fill(黒色)を削除し、それをメインゲームループに追加して、一度だけ呼び出されるようにします。

def main(): 
    while True: 
     surf.fill(black) 
関連する問題