用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     #更新屏幕
原文地址:https://www.cnblogs.com/huxiaoyi/p/8987618.html