欢迎来到懒人模板!我们专注移动互联网,所有模板永久免费下载!
  • 首 页
  • 当前位置:主页 > 微测试 > Python >

    python飞机大战小游戏源代码免费下载

    2019-07-11 16:10 来源/作者:懒人模板 分类:Python  « »
    发射子弹
    1.在英雄飞机类中定义一个fire的方法用来发射子弹,在检测到空格事件后,调用飞机的fire方法
    2.定义一个子弹类,属性,display ,move 改变子弹的y -= 5
    3.在fire方法中 先创建子弹对象 注意子弹x, y计算
    4.给飞机多加了一个bullets列表属性,用来保存所有发射过的子弹
    5.在贴完飞机图后,再重新贴所有的子弹图,遍历英雄飞机对象中的子弹列表属性,取到每一个子弹,去重复贴图和移动

    敌机移动
    1.定义敌机类, 属性 和 display , move
    2.在创建英雄飞机的后面创建敌机对象
    3.无限循环中贴敌机图, 让敌机移动
    '''
    1. 创建窗口
    2.加载图片
    3. 贴图
    4. 刷新界面
    5:英雄飞机:方法:飞机显示,飞机移动
    6:键盘事件
    7:英雄飞机发射子弹方法--fire:
        子弹类
            属性
            方法:显示、向上发射
     
    8:销毁子弹超出部分---删除子弹
            删除子弹方法
     
     
    '''
    import pygame
    from pygame.locals import *
    from sys import exit
    import time
    width = 512
    height = 768
     
    class Bullet:
        '''子弹类'''
        def __init__(self,img_path,x,y,window):
            self.img = pygame.image.load(img_path)
            self.x = x
            self.y = y
            self.window = window
     
        def display(self):
            '''子弹显示'''
            self.window.blit(self.img,(self.x,self.y))
     
        def move_up(self):
            self.y -= 5
     
     
     
     
    class Hero_Plane:
        '''英雄飞机'''
        def __init__(self,img_path,x,y,window):
            #加载英雄飞机图
            self.img = pygame.image.load(img_path)
            #初始化位置
            self.x = x
            self.y = y
            self.window = window
            self.bullets = []
     
        def display(self):
            #贴图英雄飞机
            self.window.blit(self.img,(self.x,self.y))
     
        def move_left(self):
            if self.x >= 0:
                self.x -= 5
     
        def move_right(self):
            if self.x <= 512 - 120:
                self.x += 5
     
        def fire(self):
            '''开火方法'''
            bullet = Bullet("./res/bullet_9.png",self.x+50,self.y-31,self.window)
            '''创建子弹类'''
            #bullet.display()
            self.bullets.append(bullet)#存储子弹
     
        def display_bullet(self):
            #bullet_list = self.bullets #去除所有子弹
            del_bullets = [] #定义要删除子弹
            for bullet in self.bullets:
                if bullet.y >= -31:
                    bullet.display()
                    bullet.move_up()
                else:
                    del_bullets.append(bullet)#记录将要删除的子弹
     
            for bullet in del_bullets:
                self.bullets.remove(bullet)
            print("len=",len(self.bullets))
     
    def main():
        #创建窗口
        window = pygame.display.set_mode((width,height))
        #标题
        pygame.display.set_caption("飞机大战")
        #加载背景图片
        image = pygame.image.load("./res/img_bg_level_1.jpg")
     
        #创建英雄飞机类
        hero_plane = Hero_Plane("./res/hero2.png",196,600,window)
        while True:
            # 贴图(指定路径,将图片绘制到窗口)
            window.blit(image, (0, 0))
            #调用英雄飞机方法,显示飞机
            hero_plane.display()
            '''
            #显示飞机如果有子弹直接可以发射
            # bullet_list = hero_plane.bullets#去除所有子弹
            # for bullet in bullet_list:
            #     bullet.display()
            #     bullet.move_up()
            '''
            hero_plane.display_bullet()
     
            # 更新
            pygame.display.update()
            #获取事件
            for event in pygame.event.get():
                #鼠标点击关闭窗口事件
                if event.type == QUIT:
                    print('退出窗口')
                    exit()
            #键盘事件
            if event.type == KEYDOWN:
                if event.key == K_SPACE:
                    print("space")
                    '''调用英雄飞机开火方法'''
                    hero_plane.fire()
     
            #长安键盘事件
            pressed_key = pygame.key.get_pressed()
            if pressed_key[K_a] or pressed_key[K_LEFT]:
                hero_plane.move_left()
     
            if pressed_key[K_d] or pressed_key[K_RIGHT]:
                hero_plane.move_right()
     
            time.sleep(0.05)
     
     
     
     
     
     
     
     
     
    if __name__ == '__main__':
        main()

    点击扫描效果预览 免费下载 免登陆网盘下载
    S
    * 懒人模板承诺:本站所有资源免费下载,无病毒,无弹窗,无干扰链接! 提点建议