最新消息:

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

乐高 少儿编程 2977浏览 1评论
简易贪吃蛇

在乐高的讲台上一站就是5~6年,虽然我并不是工程技术专业领域的知识分子。但十年的教师生涯,无论后来工作如何变动到管理层,也一直没离开一线。

 

因为离开,意味着很快就会不了解学生群体的思想。

 

这句话是给一些教育机构管理者的忠告,无论你曾经是多么优秀的老师,走下讲台那一刹那,你的产品一定会逐渐脱离当下,脱离学生的接受能力。

最近应该会放下一些其他工作,希望有时间的情况下,加快一下更新节奏。

 


 

今天我们要继续用案例来讲程序结构的问题。

对这个没概念,是根本不可能进步的。

 

我们会发现,所谓“高手”和普通玩家的区别,一个程序的结构一眼,就能让别人找到不同点。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

高手一般都是在结构的基础上,进行数据和逻辑的处理,最终产生一种结果。(动作模块来体现)这样就很容易让别人看程序的时候摸不着头脑。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

看上去非常复杂,甚至于打开每个“我的模块”后,全部都是数据处理。

 

然而,这种“复杂”其实才是真的不复杂。因为其中包含的逻辑是清晰的。

 

而普通玩家,仅仅只是以简单数据控制动作。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

你的程序看上去可能布局很庞大,但动作分为一块块,拆分开来,其实完全都是单独的小部分,仅仅只是一个先后顺序的编排。

 


 

既然我们现在的课程最终希望能够教会大家做一些基于EV3主机就能编写的游戏那么其复杂点,就在数据结构上了。

 

就拿上周的程序来继续分析一下。

 

我们来看一下,四个按键,对应四个数据处理的“动作”。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

这个程序看上去是没有任何问题的。

但在逻辑上,其实产生了一个问题。

 

我们每按一个按键,其实并不是要求到,将x-10或者x+10,亦或是y的对应结果。

按每个按键,其实只是产生了一个+或者-的数据而已。

 

如果把这个结果放在对应的直角坐标系上,加或者减,意味着坐标的移动。请注意,按键的动作,只是产生了一个新的数据,而不是产生了一个结果。

 

换句话说,你在按键的那个瞬间,其实产生了数据。

但这个数据并不表示它意味着这个数据的“最终用法”。

 

而我们之前的那个控制程序,无疑是定义完了数据的用法。

 

就这一步的区别,对程序本身的可拓展性,产生了无比的制约。(比如,我们的程序对于这个操作产生的数据有不止一种的用途?)

 


 

其实我们应该这样来写这个简单的程序。

 

首先,定义各个按键的数据情况。直接把坐标的对应数据变化写进去,而不是求其结果。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

向左:x为-10,y为0(即x-10,y不变);

向右:x为10,y为0;

向上:x为0,y为-10;

向下:x为0,y为10;

 

这样一来,每一次按键的操作,就不是求得一个结果值,而是提供了一套新的变量。

 


 

然后再去处理这个值。而这一步成为了这个程序的第二部分。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

我们要在程序一开头,把x和y点的坐标给明确出来。

然后用刚刚的按键产生的值,进行统一的操作。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

这样一来,按键控制点的移动,一样是完成了的。但这个程序会更有拓展性,满足我们后续做游戏的需求。


 

我们继续,来做一个随机的目标点,在贪吃蛇游戏里面,应该被叫做“苹果”。

 

这个点是随机生成在屏幕内的。所以,如下:

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

applex和appley,分别代表了这个随机点的坐标。

随机的范围,在横坐标0~170之间,纵坐标0~120之间。(精确数据这节课我们先不明确设定了)。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

生成的数据,可以直接用来作为这个点的X和Y坐标。

 

这一步也请大家先行完成。

那么今天我们就可以完成,生成控制点和目标点的工作了。

【EV3进阶】制作小游戏:理解不同的数据处理方式带来的进阶(一)

由于这两个点是共存的,所以如果我们要验证今天的这个步骤,可以把两个程序放到同一个循环下,并调整一下模块的顺序。

 

下节课,我们的主要工作,就是调整一下这两个点的各种位置关系和限制了。

 

下次见。

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

网友最新评论 (1)

  1. 100元赞助服务器,开通6个月(阅读全部内容)。
    iamastu3年前 (2021-07-01)