不要着急,这部分教学内容要一步步来,如果我堆出一大堆文字,反而不利于大家接收,到时候又变成“照抄”了。
为了大家更方便吸收,后面的课程内容,我将会把发课内容减少,发课频率提高一点。这样可能会解决很多人关于“看文字看晕”的现象……
今天我们再重申一下这部分问题,同时也是一个很重要的key point。
上一次的程序完成后,我们最后部分提到了一个问题。
被控制的点snake和apple碰不上(吃不到),是不是?
这里涉及到了一个“数据体系”的问题。(数据的取值方式)
首先,我们来看一下snake的取值方式。
snake初始坐标为(90,60),每按键一次,移动一格,也就是10个像素。
所以它只会取到横纵坐标的10的倍数值。
比如(60,30)或者(70,100)这样的坐标点。
再看一下apple的取值。
其随机取值范围为,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。
今天的内容不多,大家可以先自行思考一下。
因为这个涉及到我们后面一步的操作。
十一还是要以休息为主,老丁有时间也会发课。
鉴于微信马上要改版了,喜欢本号的朋友,劳烦点一下收藏本公众号,这样才会更方便的看到我的文章。
祝节日快乐哦!
全文完,你不点个赞吗?
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved