前提・実現したいこと
pygameでシューティングゲームを作っています。
発生している問題・エラーメッセージ
クラス継承で自機と敵機の動きを設定しているのですが、敵機は動くのに自機は動きません。
同じように暮らす継承しているはずなのですがなぜ自機だけ動かないのでしょうか?
該当のソースコード
Python3
1import pygame 2from pygame.locals import * 3import sys 4 5SCREEN = Rect(0, 0, 700, 500) 6 7 8#Player and Enemy 9class Flyer(pygame.sprite.Sprite): 10 def __init__(self, filename, x, y, vx, vy): 11 pygame.sprite.Sprite.__init__(self) 12 self.image = pygame.image.load(filename).convert_alpha() 13 w = self.image.get_width() 14 h = self.image.get_height() 15 self.rect = Rect(x, y, w, h) 16 self.vx = vx 17 self.vy = vy 18 def draw(self, screen): 19 screen.blit(self.image, self.rect) 20 21class Player(Flyer): 22 def __init__(self, filename, x, y, vx, vy): 23 super().__init__(filename, x, y, vx, vy) 24 def move(self): 25 pressed_key = pygame.key.get_pressed() 26 if pressed_key[K_LEFT]: 27 player.rect.move_ip(-self.vx, 0) 28 if pressed_key[K_RIGHT]: 29 player.rect.move_ip(self.vx, 0) 30 if pressed_key[K_UP]: 31 player.rect.move_ip(0, -self.vy) 32 if pressed_key[K_DOWN]: 33 player.rect.move_ip(0, self.vy) 34 self.rect = self.rect.clamp(SCREEN) 35 36class Enemy(Flyer): 37 def __init__(self, filename, x, y, vx, vy): 38 super().__init__(filename, x, y, vx, vy) 39 def move(self): 40 self.rect.move_ip(self.vx, self.vy) 41 self.rect = self.rect.clamp(SCREEN) 42 43#Main 44def main(): 45 pygame.init() 46 screen = pygame.display.set_mode((700, 500)) 47 pygame.display.set_caption("Shooting") 48 player = Player("player.jpg", 350, 400, 5, 5) 49 enemy1 = Enemy("enemy.jpg", 100, 100, 5, 0) 50 clock = pygame.time.Clock() 51 52 while 1: 53 clock.tick(30) 54 screen.fill((0, 0, 0)) 55 56 enemy1.move() 57 player.draw(screen) 58 enemy1.draw(screen) 59 60 pygame.display.update() 61 62 for event in pygame.event.get(): 63 if event.type == QUIT: 64 pygame.quit() 65 sys.exit() 66 if event.type == KEYDOWN: 67 if event.key == K_ESCAPE: 68 pygame.quit() 69 sys.exit() 70 71if __name__ == "__main__": 72 main() 73 74 75
補足情報(FW/ツールのバージョンなど)
pygame:最新版
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/02 03:40