前后学了半个月的J2ME,只做过通讯录,聊天室之类的,从没做过画布应用,所以就试着做了个贪食蛇。
WTK里面有个,但是代码有点多,也看不明白。所以只能自己想了。经过一个早上的努力,程序基本出来,现在总结下。
这个游戏主要需要注意4个地方,第一,蛇怎么运动;第二,碰撞检测;第三,长度增加;第四,运动方向。
对于蛇的运动,我的理解是,蛇头前进一步,则蛇身跟着蛇头运动的足迹运动。有点递归的意思,一开始想用递归算法的,但迫于能力,没能实现;所以我用一个二维数组来保存蛇的所有节的坐标,当蛇前进一步时,就用前一节的坐标来更新后一节的坐标,而蛇头的坐标则经过计算得到,这样蛇就可以根据蛇头运动的路径来运动了。
关于碰撞检测,只需接触蛇头的坐标是否超出边界,以及是否与二维数组中除了蛇头之外的任何一个坐标相同就行了。
对于长度增加的问题,我是将其加到蛇头,也就是把二维数组中的数据以此往后移动,在把二维数组的第一个值设成食物的坐标(也就是蛇头)。
运动方向,当所按下的运动方向合法时,则改变蛇头下一步的坐标。
WTK里面有个,但是代码有点多,也看不明白。所以只能自己想了。经过一个早上的努力,程序基本出来,现在总结下。
这个游戏主要需要注意4个地方,第一,蛇怎么运动;第二,碰撞检测;第三,长度增加;第四,运动方向。
对于蛇的运动,我的理解是,蛇头前进一步,则蛇身跟着蛇头运动的足迹运动。有点递归的意思,一开始想用递归算法的,但迫于能力,没能实现;所以我用一个二维数组来保存蛇的所有节的坐标,当蛇前进一步时,就用前一节的坐标来更新后一节的坐标,而蛇头的坐标则经过计算得到,这样蛇就可以根据蛇头运动的路径来运动了。
关于碰撞检测,只需接触蛇头的坐标是否超出边界,以及是否与二维数组中除了蛇头之外的任何一个坐标相同就行了。
对于长度增加的问题,我是将其加到蛇头,也就是把二维数组中的数据以此往后移动,在把二维数组的第一个值设成食物的坐标(也就是蛇头)。
运动方向,当所按下的运动方向合法时,则改变蛇头下一步的坐标。