用pygame实现打飞机游戏-6-显示敌机
1 #coding=utf-8 2 import pygame 3 #导入pygame模块 4 from pygame.locals import * 5 #导入检测键盘的子模块 6 import time 7 class AircraftCoordinate(object): 8 def __init__(self,screen): 9 #设置飞机默认的位置 10 self.x = 250 11 self.y = 600 12 self.screen =screen 13 #设置要显示的内容的窗口 14 self.imagePath = "./feiji/hero.gif" 15 self.aircraftImageFile = pygame.image.load(self.imagePath).convert() 16 self.aircraftBullet = [] 17 #在默认值中定义一个aircraftBullet列表 18 def display(self): 19 self.screen.blit(self.aircraftImageFile,(self.x,self.y)) 20 needDelBullet = [] 21 for i in self.aircraftBullet: 22 if i.judge(): 23 needDelBullet.append(i) 24 for i in needDelBullet: 25 self.aircraftBullet.remove(i) 26 for bullet in self.aircraftBullet: 27 bullet.display() 28 bullet.move() 29 #无限显示子弹,即按空格就显示子弹 30 def moveLeft(self): 31 self.x -= 20 32 def moveRight(self): 33 self.x += 20 34 def moveUp(self): 35 self.y -= 20 36 def moveDown(self): 37 self.y += 20 38 def shoot(self): 39 newBullet = BulletCoordinate(self.x,self.y,self.screen) 40 #定义一个newBullet变量,传x,y,screen到BulletCoordinate类中 41 self.aircraftBullet.append(newBullet) 42 #在aircraftBullet中创建新子弹 43 class BulletCoordinate(object): 44 def __init__(self,x,y,screen): 45 #定义默认值,接收从飞机类中传过来的参数 46 self.x = x+40 47 self.y = y-20 48 self.screen = screen 49 self.imagePath = "./feiji/bullet-3.gif" 50 self.bulletImageFile = pygame.image.load(self.imagePath).convert() 51 def move(self): 52 self.y -= 2 53 def display(self): 54 self.screen.blit(self.bulletImageFile,(self.x,self.y)) 55 def judge(self): 56 if self.y<0: 57 return True 58 else: 59 return False 60 class EnemyAircraft(object): 61 def __init__(self,screen): 62 self.x = 250 63 self.y = 0 64 self.screen = screen 65 self.imagePath = "./feiji/enemy-1.gif" 66 self.image = pygame.image.load(self.imagePath).convert() 67 self.enemyAircraftBullet = [] 68 self.direction = "right" 69 def display(self): 70 self.screen.blit(self.image,(self.x,self.y)) 71 def move(self): 72 if self.direction == "right": 73 self.x += 2 74 elif self.direction == "left": 75 self.x -= 2 76 if self.x > 480-50: 77 self.direction = "left" 78 elif self.x < 0: 79 self.direction = "right" 80 if __name__ == '__main__': 81 #__name__变量,判断该模块是作为脚本被执行,还是被调用,当直接执行的时候,就是main,在被别人调用的时候,就是name 82 screen = pygame.display.set_mode((480,980),0,32) 83 #设置屏幕,0,32是默认值 84 bgImageFile = './feiji/background.png' 85 #导入图片 86 background = pygame.image.load(bgImageFile).convert() 87 #背景用background保存 88 aircraft = AircraftCoordinate(screen) 89 enamy = EnemyAircraft(screen) 90 #aircraftImageFile = './feiji/hero.gif' 91 #导入飞机图片 92 #aircraft = pygame.image.load(aircraftImageFile).convert() 93 #飞机图用aircraft保存 94 95 while True: 96 screen.blit(background,(0,0)) 97 #设置背景在屏幕的坐标,0.0是左上角的坐标。 98 #screen.blit(aircraft,(x,y)) 99 #设置飞机在屏幕的坐标 100 aircraft.display() 101 enamy.display() 102 enamy.move() 103 for event in pygame.event.get(): 104 #在发生的事件当中循环,意思可以等同于获取所有的键盘操作 105 if event.type == QUIT: 106 #判断是否是按下了关闭键 107 print("exit") 108 exit() 109 #退出程序 110 elif event.type ==KEYDOWN: 111 #判断是否按下了按键 112 if event.key == K_a or event.key == K_LEFT: 113 #判断是否按下了a键或者左键 114 print('左') 115 aircraft.moveLeft() 116 elif event.key == K_d or event.key == K_RIGHT: 117 #判断是否按下了d键或者右键 118 print('右') 119 aircraft.moveRight() 120 elif event.key == K_w or event.key == K_UP: 121 #判断是否按下了w键或者上键 122 print('上') 123 aircraft.moveUp() 124 elif event.key == K_s or event.key == K_DOWN: 125 #判断是否按下了s键或者下键 126 print('下') 127 aircraft.moveDown() 128 elif event.key == K_SPACE: 129 #判断是否按下了空格键 130 print('射子弹') 131 aircraft.shoot() 132 time.sleep(0.01) 133 pygame.display.update() 134 #更新屏幕
www.wzxdm.com