1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python—飞机大作战游戏(附源代码及素材)

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

时间:2022-04-05 21:03:01

相关推荐

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随机发射

引用子弹基类实例对象,通过列表保存

主函数

def main():#界面screen=pygame.display.set_mode((350,500),depth=32)background=pygame.image.load('./feiji/background.png')pygame.display.set_caption('飞机大作战')#背景音乐pygame.mixer.init()pygame.mixer.music.load('./feiji/background.mp3')pygame.mixer.music.play(-1)#实例化对象hero=HeroPlane(screen)enemy=EnemyPlane(screen)while True:screen.blit(background,(0,0))hero.display()enemy.display()enemy.move()enemy.sheBullet()keyControl(hero)pygame.display.update()pygame.time.Clock().tick(120)pass

键盘控制

def keyControl(HeroObj):eventList=pygame.event.get()for event in eventList:if event.type==QUIT:print('退出!')exit()passelif event.type==KEYDOWN:if event.key==K_a or event.key==K_LEFT:print('left')HeroObj.moveleft()elif event.key==K_d or event.key==K_RIGHT:print('right')HeroObj.moveright()elif event.key==K_SPACE:print('空格-发射')HeroObj.sheBullet()passpasspasspass

创建类

01、飞机基类

class BasePlane(object):def __init__(self,screen,imagePath):self.screen=screenself.image=pygame.image.load(imagePath)self.bullentList=[]passdef display(self):self.screen.blit(self.image,(self.x,self.y))#子弹越界删除needDelItemList=[]for item in self.bullentList:if item.judge():needDelItemList.append(item)#先保存for i in needDelItemList:self.bullentList.remove(i)#再删除#发射子弹for bullet in self.bullentList:bullet.display()bullet.move()pass

02、子弹基类

class CommonBullet(object):def __init__(self,x,y,screen,bulletType):self.screen=screenself.type=bulletType#判断飞机类型-再初始化子弹坐标if self.type=='hero':self.x=x+13self.y=y-20self.imagePath='./feiji/bullet.png'elif self.type=='enemy':self.x=xself.y=y+10self.imagePath='./feiji/bullet1.png'passself.image=pygame.image.load(self.imagePath)pass#判断飞机类型-再根据类型决定子弹走向def move(self):if self.type=='hero':self.y-=2elif self.type=='enemy':self.y+=2passdef display(self):self.screen.blit(self.image,(self.x,self.y))passdef judge(self):if self.y>=500 or self.y<=0:return Trueelse:return Falsepass

03、Hero飞机类

class HeroPlane(BasePlane):def __init__(self,screen):super().__init__(screen,'./feiji/hero.png')self.x=150self.y=450passdef moveleft(self):if self.x>=0:self.x-=10passdef moveright(self):if self.x<=310:self.x+=10passdef sheBullet(self):newBullet=CommonBullet(self.x,self.y,self.screen,'hero')self.bullentList.append(newBullet)passpass

04、enemy飞机类

class EnemyPlane(BasePlane):def __init__(self,screen):super().__init__(screen,'./feiji/enemy0.png')self.direction='right'self.x=0self.y=0passdef move(self):if self.direction=='right':self.x+=1elif self.direction=='left':self.x-=1if self.x>=330:self.direction='left'elif self.x<=0:self.direction='right'passdef sheBullet(self):num=random.randint(1,60)if num==3:newBullet=CommonBullet(self.x,self.y,self.screen,'enemy')self.bullentList.append(newBullet)passpass

源代码及素材

代码及其素材: 提取码:vwk0/s/12QaRLi7-Ogh1Oh93HcCH4A

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。