最新消息:

【EV3进阶】制作小游戏:数据取值体系要统一!(三)

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

提前祝大家十一玩的开心。

 

很高兴,有很多朋友都动手做了,然后也提来了各种问题。

 

不要着急,这部分教学内容要一步步来,如果我堆出一大堆文字,反而不利于大家接收,到时候又变成“照抄”了。

 

为了大家更方便吸收,后面的课程内容,我将会把发课内容减少,发课频率提高一点。这样可能会解决很多人关于看文字看晕的现象……

 

今天我们再重申一下这部分问题,同时也是一个很重要的key point。

 


上一次的程序完成后,我们最后部分提到了一个问题。

控制的点snake和apple碰不上(吃不到),是不是?

 

这里涉及到了一个“数据体系”的问题。(数据的取值方式)

 

首先,我们来看一下snake的取值方式。

snake初识坐标为(90,60),每按键一次,移动一格,也就是10个像素。

【EV3进阶】制作小游戏:数据取值体系要统一!(三)

所以它只会取到横纵坐标的10的倍数值。

比如(60,30)或者(70,100)这样的坐标点。

 

再看一下apple的取值。

【EV3进阶】制作小游戏:数据取值体系要统一!(三)

其随机取值范围为,0~170和0~120,换言之,它的取值范围更广。

程序一开始,它的坐标可能就随机生成在(21,36)这样的位置。

 

这就导致了两个点可能一开始就“注定无缘”了……

 

我们要解决这个问题,就要让apple的横纵坐标取值方法和snake一致。

 


 

大家不要小看这一步,其实这是一个很关键的环节。

涉及到了一个很简单的算法。(再简单也叫算法!)

 

170个像素点,只取其中10、20、30……的数列,

那么其实就是取10的倍数值。

 

我们把applex和appley的随机取值改为取:0~17和0~12。

然后随机取值乘以10,这个问题才能解决。

 

apple和snake的取值都会是10的倍数产生的坐标,换句话说,就是会重合差生横纵坐标同时相等的情况了。

 

这里,我们要进一步理解下这个知识点。


我们的程序特意使用10*10的点,这是为了方便计算。

并且,标准坐标是以(0,0)为基本点的。

 

如果使用7*7的大小,另外标准坐标为(2,2)这样的位置呢?

请这样理解这个问题。

 

我们现在是以坐标(0,0)到目标为(170,120)的坐标点圈出的一个范围内出现这个随机的apple。

 

而事实上这不是一个很好的显示范围。因为太靠屏幕边缘了。

如果以(2、2)~(172,122)作为取值范围,可能效果会更好。

但这个问题会马上变复杂一些。

 

数据要取7、14、21、28……

 

所以,取值我们可以理解为是7的倍数,这个操作类似于上面的10的取值。

 

而标准坐标点,还要再加上去。

换言之,这个取值公式就会变为7n+2。

【EV3进阶】制作小游戏:数据取值体系要统一!(三)

今天的内容不多,大家可以先自行思考一下。

因为这个涉及到我们后面一步的操作。

 


十一还是要以休息为主,老丁有时间也会发课。

鉴于微信马上要改版了,喜欢本号的朋友,劳烦点一下收藏本公众号,这样才会更方便的看到我的文章。

 

祝节日快乐哦!

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