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

目录

过程说明:

主函数

键盘控制

创建类

01、飞机基类

02、子弹基类

03、 Hero飞机类

04、enemy飞机类

源代码及素材 


 

Python—飞机大作战游戏(附源代码及素材)_第1张图片

过程说明:

应用到的库:
        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()
            pass
        elif 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()
                pass
            pass
        pass
    pass

 

创建类

01、飞机基类

class BasePlane(object):
    def __init__(self,screen,imagePath):
        self.screen=screen
        self.image=pygame.image.load(imagePath)
        self.bullentList=[]
        pass
    def 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=screen
        self.type=bulletType
        #判断飞机类型-再初始化子弹坐标
        if self.type=='hero':
            self.x=x+13
            self.y=y-20
            self.imagePath='./feiji/bullet.png'
        elif self.type=='enemy':
            self.x=x
            self.y=y+10
            self.imagePath='./feiji/bullet1.png'
            pass
        self.image=pygame.image.load(self.imagePath)
        pass
    #判断飞机类型-再根据类型决定子弹走向
    def move(self):
        if self.type=='hero':
            self.y-=2
        elif self.type=='enemy':
            self.y+=2
        pass
    def display(self):
        self.screen.blit(self.image,(self.x,self.y))
        pass
    def judge(self):
        if self.y>=500 or self.y<=0:
            return True
        else:
            return False
    pass

03、 Hero飞机类

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

04、enemy飞机类

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

源代码及素材 

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

你可能感兴趣的:(python,游戏,python,游戏,p2p)