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

来源:互联网 发布:三枪内裤怎么样 知乎 编辑:程序博客网 时间:2024/05/21 17:16

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

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()

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


原创粉丝点击