取值方法_「EV3进阶课」制作小游戏:数据取值体系要统一(三)

博客讲述了在制作LEGO EV3小游戏过程中遇到的问题,即snake无法吃到apple,原因是两者坐标取值方式不同。作者强调了数据体系统一的重要性,并提出将apple的坐标取值改为10的倍数以匹配snake,解决了问题。同时提到,选择合适的取值范围和标准坐标对于简化计算和避免边缘效应也很关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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


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

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

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

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

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

e37d335b35eaac0ea08b1289cbb4970b.png

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

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

再看一下apple的取值。

dc0350006d610a9a1339a1e9b9b31429.png

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

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

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

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


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

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

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

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

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

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

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

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

广告

半小时漫画中国史1+中国史2+中国史3+世界史(套装共4册,作者签章版)

作者:陈磊(笔名:二混子) 著 / 读客文化 出品

当当


我们的程序特意使用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。

517b052dd899819f5028cda99442711c.png

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

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


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

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

祝节日快乐哦!

全文完,你不点个赞吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值