Python-飞机大战游戏

Python-飞机大战游戏,第1张

概述#planpro需求的描述#存在四个对象:我方飞机、敌方飞机、我方子d、敌方子d。#功能:我方飞机可以移动【根据按键来控制】敌方飞机也可以移动【随机的自动移动】、双方飞机都可以用来发送子d。#背景音乐的添加、#步骤:1、创建一个窗口。2、创建一个我方飞机,根据方向
#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-飞机大战游戏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存