当前位置:   article > 正文

Python—飞机大作战游戏(附源代码及素材)_python 飞机大战游戏的图片素材

python 飞机大战游戏的图片素材

目录

过程说明:

主函数

键盘控制

创建类

01、飞机基类

02、子弹基类

03、 Hero飞机类

04、enemy飞机类

源代码及素材 


 

过程说明:

应用到的库:
        import pygame
        import random

一、框架
        1、创建界面宽度
        2、背景图片
        3、标题
        4、背景音乐
二、键盘控制
        1、接收键盘控制-自己的方向和射击控制
三、创建类
1、飞机基类
            a、初始化
                    屏幕、图片装载、子弹列表
            b、显示
                    图片、子弹越界问题
2、子弹基类
            a、初始化
                    屏幕、飞机类型、图片装载
            b、移动
                    判断飞机类型移动
            c、显示
                    图片
            d、判断
                    是否越界

3、Hero飞机类-继承飞机、子弹基类
            a、初始化
                    xy坐标,继承基类
            b、左移动
            c、右移动
            d、发射子弹
                    引用子弹基类实例对象,通过列表保存

4、Enemy飞机类-继承飞机、子弹基类
            a、初始化
                    xy坐标,继承基类,初始方向-右
            b、移动    
            c、发射子弹
            通过random随机发射
            引用子弹基类实例对象,通过列表保存

主函数

  1. def main():
  2. #界面
  3. screen=pygame.display.set_mode((350,500),depth=32)
  4. background=pygame.image.load('./feiji/background.png')
  5. pygame.display.set_caption('飞机大作战')
  6. #背景音乐
  7. pygame.mixer.init()
  8. pygame.mixer.music.load('./feiji/background.mp3')
  9. pygame.mixer.music.play(-1)
  10. #实例化对象
  11. hero=HeroPlane(screen)
  12. enemy=EnemyPlane(screen)
  13. while True:
  14. screen.blit(background,(0,0))
  15. hero.display()
  16. enemy.display()
  17. enemy.move()
  18. enemy.sheBullet()
  19. keyControl(hero)
  20. pygame.display.update()
  21. pygame.time.Clock().tick(120)
  22. pass

 

键盘控制

  1. def keyControl(HeroObj):
  2. eventList=pygame.event.get()
  3. for event in eventList:
  4. if event.type==QUIT:
  5. print('退出!')
  6. exit()
  7. pass
  8. elif event.type==KEYDOWN:
  9. if event.key==K_a or event.key==K_LEFT:
  10. print('left')
  11. HeroObj.moveleft()
  12. elif event.key==K_d or event.key==K_RIGHT:
  13. print('right')
  14. HeroObj.moveright()
  15. elif event.key==K_SPACE:
  16. print('空格-发射')
  17. HeroObj.sheBullet()
  18. pass
  19. pass
  20. pass
  21. pass

 

创建类

01、飞机基类

  1. class BasePlane(object):
  2. def __init__(self,screen,imagePath):
  3. self.screen=screen
  4. self.image=pygame.image.load(imagePath)
  5. self.bullentList=[]
  6. pass
  7. def display(self):
  8. self.screen.blit(self.image,(self.x,self.y))
  9. #子弹越界删除
  10. needDelItemList=[]
  11. for item in self.bullentList:
  12. if item.judge():
  13. needDelItemList.append(item)#先保存
  14. for i in needDelItemList:
  15. self.bullentList.remove(i)#再删除
  16. #发射子弹
  17. for bullet in self.bullentList:
  18. bullet.display()
  19. bullet.move()
  20. pass

 

02、子弹基类

  1. class CommonBullet(object):
  2. def __init__(self,x,y,screen,bulletType):
  3. self.screen=screen
  4. self.type=bulletType
  5. #判断飞机类型-再初始化子弹坐标
  6. if self.type=='hero':
  7. self.x=x+13
  8. self.y=y-20
  9. self.imagePath='./feiji/bullet.png'
  10. elif self.type=='enemy':
  11. self.x=x
  12. self.y=y+10
  13. self.imagePath='./feiji/bullet1.png'
  14. pass
  15. self.image=pygame.image.load(self.imagePath)
  16. pass
  17. #判断飞机类型-再根据类型决定子弹走向
  18. def move(self):
  19. if self.type=='hero':
  20. self.y-=2
  21. elif self.type=='enemy':
  22. self.y+=2
  23. pass
  24. def display(self):
  25. self.screen.blit(self.image,(self.x,self.y))
  26. pass
  27. def judge(self):
  28. if self.y>=500 or self.y<=0:
  29. return True
  30. else:
  31. return False
  32. pass

03、 Hero飞机类

  1. class HeroPlane(BasePlane):
  2. def __init__(self,screen):
  3. super().__init__(screen,'./feiji/hero.png')
  4. self.x=150
  5. self.y=450
  6. pass
  7. def moveleft(self):
  8. if self.x>=0:
  9. self.x-=10
  10. pass
  11. def moveright(self):
  12. if self.x<=310:
  13. self.x+=10
  14. pass
  15. def sheBullet(self):
  16. newBullet=CommonBullet(self.x,self.y,self.screen,'hero')
  17. self.bullentList.append(newBullet)
  18. pass
  19. pass

04、enemy飞机类

  1. class EnemyPlane(BasePlane):
  2. def __init__(self,screen):
  3. super().__init__(screen,'./feiji/enemy0.png')
  4. self.direction='right'
  5. self.x=0
  6. self.y=0
  7. pass
  8. def move(self):
  9. if self.direction=='right':
  10. self.x+=1
  11. elif self.direction=='left':
  12. self.x-=1
  13. if self.x>=330:
  14. self.direction='left'
  15. elif self.x<=0:
  16. self.direction='right'
  17. pass
  18. def sheBullet(self):
  19. num=random.randint(1,60)
  20. if num==3:
  21. newBullet=CommonBullet(self.x,self.y,self.screen,'enemy')
  22. self.bullentList.append(newBullet)
  23. pass
  24. pass

源代码及素材 

代码及其素材: 提取码:vwk0icon-default.png?t=M0H8https://pan.baidu.com/s/12QaRLi7-Ogh1Oh93HcCH4A

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/105342
推荐阅读
相关标签
  

闽ICP备14008679号