pygame编写飞机大战(3)-搭建游戏流程

简单的游戏实现流程应该是:

1. 计算游戏中元素的坐标。也就是游戏每刷新一次,游戏中的元素,例如子弹坐标就会+1, 比如飞机的坐标计算等等;

2. 计算出了游戏中的元素,飞机或者子弹的坐标,那么就需要将飞机和子弹的图片绘制到这个坐标的位置;

3. 处理事件,游戏进行过程中,玩家会通过键盘或者鼠标点击、拖动、甚至关闭窗口等都属于事件,当玩家有这些操作的时候,我们要对玩家的操作做出响应。比如,如果玩家点击了窗口右上角的X按钮,我们就要停止游戏并且关闭窗口结束程序,如果玩家按下w键,我们就让飞机向上移动等等。

4. 碰撞检测。这个游戏核心逻辑,我们发出子弹,就要判断子弹是否和敌人飞机碰到一起,如果碰到一起我们就要消失子弹,并且消失飞机,在碰撞坐标处播放动画。如果敌人子弹击中我们,也是类似思路。碰撞检测我们主要通过判断两张图片的矩形是否相交。

5. 刷新窗口。这个最为简单,直接调用pygame.display.update()即可。

下面我们搭建流程代码如下,这里我们创建GameScene类,用于显示窗口,并负责游戏的核心逻辑及场景中各个游戏元素的管理:

import pygame


# 主场景
class MainScene(object):
    # 初始化主场景
    def __init__(self):
        # 场景尺寸
        self.mSize = (512, 768)
        # 场景对象
        self.mScene = pygame.display.set_mode([self.mSize[0], self.mSize[1]])
        # 设置标题
        pygame.display.set_caption("飞机大战-v1.0")


    # 绘制
    def draw_elements(self):
        pass

    # 动作
    def action_elements(self):
        pass

    # 处理事件
    def handle_event(self):
        pass

    # 碰撞检测
    def detect_conlision(self):
        pass

    # 主循环,主要处理各种事件
    def run_scene(self):

        while True:
            # 计算元素坐标
            self.action_elements()
            # 绘制元素图片
            self.draw_elements()
            # 处理事件
            self.handle_event()
            # 碰撞检测
            self.detect_conlision()
            # 刷新显示
            pygame.display.update()


# 入口函数
if __name__ == "__main__":
    # 创建主场景
    mainScene = MainScene()
    # 开始游戏
    mainScene.run_scene()

框架流程中的涉及到的功能函数,例如绘制、计算坐标等并没有填写内容,我们在以后具体添加功能中,再去实现。此时直接运行效果如下:

pygame编写飞机大战(3)-搭建游戏流程_第1张图片

你可能感兴趣的:(Python)