zoukankan      html  css  js  c++  java
  • 用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     #更新屏幕
  • 相关阅读:
    python迭代器
    初识html
    跨域(jsonp)方法
    闭包
    pycharm软件配置
    插槽slot
    git常用操作
    在mac中使用Charles抓包操作
    防止网页被嵌入框架
    H5唤起APP
  • 原文地址:https://www.cnblogs.com/huxiaoyi/p/8987618.html
Copyright © 2011-2022 走看看