#plan pro 需求的描述# 存在四个对象:我方飞机、敌方飞机、我方子d、敌方子d。#功能:我方飞机可以移动【根据按键来控制】 敌方飞机也可以移动【随机的自动移动】、双方飞机都可以用来发送子d。#背景音乐的添加 、 # 步骤:1、创建一个窗口。2、创建一个我方飞机,根据方向键左右的移动。 3、给我方飞机添加发射子d的功能【可以按下空格键去发送】 、4创建一个敌人飞机,5敌人飞机可以自由的移动、6敌人飞机可以自动的发射子d、import pygame#import timeimport random#随机产生一个数据对象import timefrom pygame.locals import *'''创建子d类'''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') #用来存放子d的列表 pass def display(self): self.screen.blit(self.image,(self.x,self.y)) pass def move(self): self.y-=10 def judge(self): ''' 判断子d是否越界 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)) #完善子d的展示逻辑 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() #显示子d的位置。 bullet.move() #让这个进行移动,下次再显示后就会看到子d在修改后的位置。 pass #发射子d(这里现在还看不懂) 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 #显示敌机以及位置子d的信息。 def display(self): self.screen.blit(self.image,(self.x,self.y)) #完善子d的展示逻辑 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() #显示子d的位置。 bullet.move() #让这个进行移动,下次再显示后就会看到子d在修改后的位置。 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): ''' 敌机随机的发射子d 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 #创建敌机的子d类。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') #用来存放子d的列表 pass def display(self): self.screen.blit(self.image,(self.x,self.y)) pass def move(self): self.y+=2 def judge(self): ''' 判断子d是否越界 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() #敌机随机发射子d enemyplane.sheBullet() key_control(hero) #进行更新 pygame.display.update() #time.sleep(0.1) pygame.time.Clock().tick(5) pass if __name__=='__main__': main()
总结 以上是内存溢出为你收集整理的Python-飞机大战游戏全部内容,希望文章能够帮你解决Python-飞机大战游戏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)