Python-飞机大战游戏
2021/5/12 12:26:48
本文主要是介绍Python-飞机大战游戏,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#plan pro 需求的描述 # 存在四个对象:我方飞机、敌方飞机、我方子弹、敌方子弹。 #功能:我方飞机可以移动【根据按键来控制】 敌方飞机也可以移动【随机的自动移动】、双方飞机都可以用来发送子弹。 #背景音乐的添加 、 # 步骤:1、创建一个窗口。2、创建一个我方飞机,根据方向键左右的移动。 3、给我方飞机添加发射子弹的功能【可以按下空格键去发送】 、4创建一个敌人飞机,5敌人飞机可以自由的移动、6敌人飞机可以自动的发射子弹、 import pygame #import time import random#随机产生一个数据对象 import time from pygame.locals import * ''' 创建子弹类 ''' class Bullet(object): def __init__(self,x,y,screen): self.x=x+13 self.y=y-23 self.screen=screen self.image=pygame.image.load(r'C:\Users\HP\Desktop\zidan.png') #用来存放子弹的列表 pass def display(self): self.screen.blit(self.image,(self.x,self.y)) pass def move(self): self.y-=10 def judge(self): ''' 判断子弹是否越界 Returns ------- None. ''' if self.y<0: return True else: return False pass ''' 1、实现飞机的显示,并且可以控制飞机的移动【面向对象】 ''' #获取键盘事件 def key_control(HerObject): eventlist=pygame.event.get() for event in eventlist: if event.type==QUIT: print('退出') exit() pass elif event.type==KEYDOWN: if event.type==K_a or event.key==K_LEFT: print('left') HerObject.moveleft() pass elif event.type==K_d or event.key==K_RIGHT: print('right') HerObject.moveright() pass elif event.type==K_w or event.key==K_UP: print('up') HerObject.moveup() elif event.type==K_x or event.key==K_DOWN: print('down') HerObject.movedown() elif event.key==K_SPACE: print('K_SPACE') HerObject.shootBullet() pass pass pass class HeroPlane(object): def __init__(self,screen): ''' 主窗体对象 Parameters ---------- sreen : TYPE DESCRIPTION. Returns ------- None. ''' #飞机的默认位置 self.x=150 self.y=450 #设置要显示内容的窗口 self.screen=screen #载入飞机的图片 self.image=pygame.image.load('D:\ppt练习\图片素材\卡通小学生的\plane.png') self.bulletList=[] pass def moveleft(self): ''' 左移动 Returns ------- None. ''' if self.x>0: self.x-=10 pass def moveright(self): ''' 右移动 Returns ------- None. ''' if self.x<250: self.x+=10 pass def moveup(self): if self.y>100: self.y-=10 pass def movedown(self): if self.y<500: self. y+=10 pass def display(self): ''' 飞机在窗口中的显示 Returns ------- None. ''' #显示飞机 self.screen.blit(self.image,(self.x,self.y)) #完善子弹的展示逻辑 needDelTtemList=[] for item in self.bulletList: if item.judge(): needDelTtemList.append(item) pass pass #重新遍历一次,把它进行删除。(这里有一点看不懂) for i in needDelTtemList: self.bulletList.remove(i) pass for bullet in self.bulletList: bullet.display() #显示子弹的位置。 bullet.move() #让这个进行移动,下次再显示后就会看到子弹在修改后的位置。 pass #发射子弹(这里现在还看不懂) def shootBullet(self): newBullet=Bullet(self.x,self.y, self.screen) self.bulletList.append(newBullet) pass pass #创建敌机类 class EnemyPlane: def __init__(self,screen): ''' 主窗体对象 Parameters ---------- sreen : TYPE DESCRIPTION. Returns ------- None. ''' #默认设置一个方向 self.direction='right' #飞机的默认位置 self.x=0 self.y=0 #设置要显示内容的窗口 self.screen=screen self.bulletList=[] #载入飞机的图片 self.image=pygame.image.load(r'C:\Users\HP\Desktop\emey.jpg') pass #显示敌机以及位置子弹的信息。 def display(self): self.screen.blit(self.image,(self.x,self.y)) #完善子弹的展示逻辑 needDelTtemList=[] for item in self.bulletList: if item.judge(): needDelTtemList.append(item) pass pass #重新遍历一次,把它进行删除。(这里有一点看不懂) for i in needDelTtemList: self.bulletList.remove(i) pass for bullet in self.bulletList: bullet.display() #显示子弹的位置。 bullet.move() #让这个进行移动,下次再显示后就会看到子弹在修改后的位置。 pass pass def move(self): if self.direction=='right': self.x+=1 elif self.direction=='left': self.x-=1 pass if self.x>350-20: self.direction='left' pass elif self.x<0: self.direction='right' pass pass def sheBullet(self): ''' 敌机随机的发射子弹 Returns ------- None. ''' num=random.randint(1, 30) if num==3: newBullet=EnemyBullet(self.x,self. y,self.screen) self.bulletList.append(newBullet) pass pass pass #创建敌机的子弹类。 class EnemyBullet(object): def __init__(self,x,y,screen): self.x=x+13 self.y=y+10 self.screen=screen self.image=pygame.image.load(r'C:\Users\HP\Desktop\zidan.png') #用来存放子弹的列表 pass def display(self): self.screen.blit(self.image,(self.x,self.y)) pass def move(self): self.y+=2 def judge(self): ''' 判断子弹是否越界 Returns ------- None. ''' if self.y>500: return True else: return False pass def main(): # 先创建一个窗口,用来显示内容 screen=pygame.display.set_mode((500,500)) background=pygame.image.load(r'C:\Users\HP\Desktop\plane.jpg') #设置一个标题 pygame.display.set_caption('飞机游戏') #添加背景音乐 pygame.mixer.init() pygame.mixer.music.load(r'C:\Users\HP\Music\I wanna be alive.mp3') pygame.mixer.music.set_volume(0.6) pygame.mixer.music.play(-1) #-1表示无限的进行循环 #创建一个飞机对象。 hero=HeroPlane(screen) #创建一个敌机对象。 enemyplane=EnemyPlane(screen) #居中显示出来 while True: screen.blit(background,(0,0)) #显示玩家飞机的图片 hero.display() #显示敌机,调用方法。 enemyplane.display() #敌机移动 enemyplane.move() #敌机随机发射子弹 enemyplane.sheBullet() key_control(hero) #进行更新 pygame.display.update() #time.sleep(0.1) pygame.time.Clock().tick(5) pass if __name__=='__main__': main()
这篇关于Python-飞机大战游戏的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识