最新消息:

【EV3进阶】制作小游戏:清屏?还是不清屏?清屏也是逻辑中的一部分(五)

乐高 少儿编程 2960浏览 0评论
简易贪吃蛇

做到上一次课,我们就发现了,整个的程序已经很像样了。

 

能够完成的功能有:

 

1、移动snake

2、随机产生apple

3、snake和apple能够形成数据关联,判断吃掉的动作

4、通过3#的判断结果,可以实现加分动作

5、完成了snake和apple的显示范围限制

 

可以说,这已经是一个挺完整的小游戏了,对吧。

但这个跟我们的贪吃蛇游戏,还有着挺大距离。

比如,贪吃蛇是一个每吃一个apple,就会增加一格长度的。

再比如,屏幕上有很多内容都是同时显示的,如果频繁清除屏幕,那么屏幕就会不停的闪。

 

我们今天解决屏闪的问题

注意,讨论的细节只是一种解决方式,而不是最好的方法!

 


程序做到这里,会发现,整个程序当中的屏显模块,多达好几个。

【EV3进阶】制作小游戏:清屏?还是不清屏?清屏也是逻辑中的一部分(五)

我们一定要注意的是,在这个程序中,哪些是要清屏的,哪些是不用的。

 

这里有一个要领,

 

每当开始产生新数据之前,要清屏一次。

 

我们看一下之前的程序,别看那么多模块,关键性的数据全面刷新的触发条件,其实只有一个,如下图:

【EV3进阶】制作小游戏:清屏?还是不清屏?清屏也是逻辑中的一部分(五)

当我们按下某个按键的时候,整个程序的数据,会全面刷新一次。

 

这时候进行清屏,而其他所有的模块都不清屏,屏幕上显示的就会是最新的数据呈现。

 

这个是个细节,看着好像很简单,但这却是很多朋友在实际操作中给我消息留言的一个很关键的点。“屏幕为什么老是闪?为什么有些东西显示不出来?……”

我们要搞清楚整个程序的每一个流程部分的功能和逻辑。

每个动作,都是有触发条件的。

【EV3进阶】制作小游戏:清屏?还是不清屏?清屏也是逻辑中的一部分(五)

一定要明确这个触发条件在哪里,有可能是一个操作,也有可能是一种数据变化后产生的逻辑。

 

既然整个程序数据刷新的出发条件在这里,那么整个屏幕刷新的动作自然也应该是由这个点来触发的。

 


但如上文所说,这样做完后,虽然效果可能会有所体现,但绝对不是最好的解决方式。

 

例如,程序按照做到现在的阶段,有很多固定不动的点,也会因为每一次的屏幕刷新而闪烁。那么如何解决这个问题呢?

 

这就需要我们之后进一步来理解屏显问题了。

 

我们的显示模块的清除功能,是清除整个屏幕上显示的内容的。

那可不可以只清除需要清除的部分,而保留不需要清除的部分呢

 

这个问题,我们后面再来优化和思考。

 

这里还会产生一个问题,就是,能否只用一个显示模块,吧所有数据都显示上去呢?

 

同样我们下周接着来思考和解决这个问题。

下次见!

您必须 登录 才能发表评论!