小游戏系列算法之二贪吃蛇算法原理

本文详细介绍了如何使用数组表示贪吃蛇游戏中的蛇,并通过数组操作实现蛇的移动及食物的判断逻辑。此外还讲解了如何处理游戏边界及碰撞检测。

 

贪吃蛇是很常见的小游戏,大家都懂的就不介绍了。
游戏算法非常简单。先看图:

 

显然这是一个贪吃蛇,红色是蛇蓝色是食物(= =)
我们先来看看蛇的构造

 

 

可以看到,蛇其实是由1个1个正方体拼成的。每个正方体的左上角
是他们的坐标。在程序中,我们可以用一个数组表示一条蛇。数组
的每一个位置存放一个正方形的坐标
如:
snakeArr = [(10,0),(20,0),(30,0),(40,0)];
在画蛇的时候,我们只需要遍历数组,根据数组里面的坐标在画布
上画出一个一个的正方体就变成一条蛇啦。

至于蛇的行走怎么办?如下一步,蛇往上走了。

 

 

怎么样,有思路了吗?若下一步往上走,则下一个点为数组首点的横坐标不标,纵坐标+10
nextPoint = new Point(snakeArr[0].x,snakeArr[0].y+10);
接着,我们在数组的头部插入nextPoint,然后把数组尾部的数据去除。数组变成这个样子:
snakeArr = [(10,10),((10,0),(20,0),(30,0)];
是不是和数据结构里面的“队”很类似?。头位置作插入,队尾作删除。

接下里我们只要把画布清空,然后再根据蛇数组画出蛇就实现了蛇的移动啦。

关于是否吃到食物的判断也很简单,判断一下nextPoint和食物的坐标是否一样就可以了。
注意食物的生成位置就好。一般来说横坐标是随机 (画布的宽/正方形长度),然后把得到的随机数*正方形长度。 纵坐标不用我说了吧。

越界什么的,还有是否碰到自己身体什么的,我也不说了,就是简单的判断而已。

完了。


显然这是一个贪吃蛇,红色是蛇蓝色是食物(= =)
我们先来看看蛇的构造

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值