用OpenBlock简易编写游戏“CROSSY ROAD”之游戏主体控制系统

260 阅读3分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接: github.com/weopenproje…

上篇讲了如何用OpenBlock简易绘制游戏“CROSSY ROAD”中的车辆和人物,下面我们来看看怎么编写游戏主体控制系统吧!

创建UI状态机

2.png

UI状态机包括四个状态:游戏开始然后进入游戏过程,如果人物死亡选择复活随机扣除分数重新进入游戏过程,开始在两个状态间循环,直到分数为零或者选择游戏结束跳出循环变为游戏结束状态。

  1. 设计游戏开始界面

(1)说明游戏规则 3.png

(2)设置“开始游戏”按钮(别忘了定义函数按钮判断,这样才能够判断是否在指定区域按下按键) 4.png

5.png

  1. 创建游戏过程状态

(1)先设置收到从人物模块和车辆模块中人物与车辆状态机的坐标消息(因为人物只左右移动而车只上下移动所以只用接收人物x坐标,车辆y坐标的整数数据就可以了),然后再分别设置出它们状态机变量(别忘了还要设置分数的),最后接上它们的附加数据,就能检测人物和车辆的动态了。 9.png

(2)设置出每个角色x,y坐标的状态机变量(坐标位置一定要与人物和车辆模块的坐标相同),调用模块人物和车辆的函数使游戏进程画面绘制出人物和车辆,再设置出得分显示,最后设置刷新消息(每个角色绘制完毕后间隔每100毫秒发送消息清屏然后再生成每个角色新位置使它们出现动态变化) 6.png

7.png

8.png

10.png

(3)设置鼠标点击抬起和按下消息操控人物,再设置收到碰撞消息时人物死亡改变状态为游戏复活 11.png

  1. 创建游戏复活画面和游戏结束画面

(1)创建游戏复活页面(如下图)

12.png

设置清屏刷新页面,再创建选择复活还是游戏结束两个按键,设置按键判断使检测按下其中之一按键改变至游戏过程状态或者游戏结束状态 13.png

14.png

(2)创建游戏结束页面

15.png

创建碰撞监测状态机

检测人物与任一车辆坐标重合即发生碰撞,广播碰撞消息给整个系统停止游戏,当收到复活消息时重新开始碰撞检测。 16.png 17.png

创建得分机制状态机

设置积分的状态机变量,原始值为0;人物成功到达马路另一头的坐标时,收到消息积分通过加法使分数增加,收到复活消息则通过减法扣除随机的积分。 18.png

最后,别忘了在Start模块设置依赖模块和在Main状态机设置各角色和系统的状态机变量和创建其类型的状态机,不然整个游戏是运行不了的。

19.png

20.png 各状态机关系图 1.png

好了,这就是编写“CROSSY ROAD”小游戏的所有步骤了,你学废了嘛,大家快去试试吧!