使用Python实现飞机大战斗笔记(更新中)

——简介

   最近学习了一份小游戏,实现了一些简单的游戏功能:
  1. 实现游戏背景的制作以及反复移动的功能
  2. 玩家飞机的制作以及子弹发射过程
  3. 敌人飞机的生成以及碰撞的过程

——流程介绍

  1. 背景设置与导入
  2. 玩家飞机的制作、移动、发射子弹
  3. 敌机的加入,碰撞的过程

主程序

class Main:
    # 常量,不变
    SCREEN_WIDTH = 512
    SCREEN_HEIGHT = 800

    # 1.主程序,运行游戏入口
    # TODO 2.运行程序入口
    def run(self):
        # 4.执行窗体初始化
        self.frame_init()
        # 调用背景图片展示
        self.mode_init()

        while True:
            # 初始化窗口后,反复的刷新窗口,就可以实现窗口出现在屏幕上了
            pygame.display.update()

            self.event_init()
            # 使图片反复垂直移动
            self.background.move()
            self.background.display()

            '''
            self.enemy.display() # 将敌机显示在窗体中
            self.enemy.move() # 敌机上下移动
            '''
            # 实现敌机显示在窗体中,敌机上下移动
            for enemy in self.enemys:
                enemy.move()
                enemy.display()
            # 实现玩家加入到窗体中
            self.player.display(self.enemys)

    # TODO 3.初始化游戏窗体
    def frame_init(self):
        # 初始化一个游戏窗口的大小
        self.screen = pygame.display.set_mode((Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT), 0, 0)
        # 将窗体对象传入到模型类中去
        Model.screen = self.screen
        # 窗体表头的小图形
        img = pygame.image.load(APP_H)  # 加载图标为图片对象
        pygame.display.set_icon(img)    # 设置窗体的右上角图标为图片
        # 设置窗体的头标题
        pygame.display.set_caption('飞机大战')
        # print("游戏窗口")

    # 定义事件的处理方法
    def event_init(self):
        # 取事件,判断当前事件是否是关闭按钮,并退出系统
        for envent in pygame.event.get():
            if envent.type == pygame.locals.QUIT:
                sys.exit()
            # 获取鼠标的监听移动事件
            if envent.type == pygame.locals.MOUSEMOTION:
                # 获取当前鼠标的坐标,返回为元祖类型
              
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值