java语言编写贪吃蛇思路,请大家帮帮忙,感恩!

用链表写?线程?不熟!可以写类,再调方法?... 用链表写?线程?不熟!可以写类,再调方法? 展开
 我来答
java小飞侠
2012-11-22 · TA获得超过105个赞
知道答主
回答量:79
采纳率:0%
帮助的人:45.5万
展开全部
楼主没有看到蛇移动的本质,蛇虽然是分成很多块,但他们还是一个整体,每一块的移动都和上一块有关,所以不需要对每一块都进行判断。
原理:
把蛇身体的每一块看成一个对象(对象存储该块的坐标和相关信息),作为节点存储在线性链表中,再设置一个变量标志蛇的方向(通过按键可以改变)。一般人都是让每一个节点等于他指向的下一个节点,并让头节点改变位置来实现转弯和移动,这个算法复杂度太高(O(n)),实际上只要做两步操作,插入一个头节点,删除一个尾节点就可以了,新插入的头节点位置根据蛇当前的方向决定 用一个数组将蛇头的行径记录下来,然后第二段的下一个方格设置为蛇头走过的方格,这样子蛇走过的路径都是前一段走过的,最后将跟着蛇头走了,比如
蛇身的路径
for(int i=snakeLength-1;i>0;i--){
rows[i]=rows[i-1];//依次将蛇前面一段走过行的路段赋值给蛇的下一段
cols[i]=cols[i-1];//依次将蛇前面一段走过列的路段赋值给蛇的下一段
}
for(int i=1;i<snakeLength;i++){
gamePanel[rows[i]][cols[i]].setBackground(Color.red);//将整个面板上蛇身走过的行和列设置为不同的颜色,当然可以用图片来设置
}
蛇头走过的行和列(rows[0],cols[i])要根据不同的方向加减1来将面板设置成不同的颜色
如gamePanel[rows[i]-1][cols[i]+1].setBackground(Color.red)
忘采纳。。。。。
有话好好说ggg
2012-11-22 · TA获得超过132个赞
知道答主
回答量:104
采纳率:0%
帮助的人:63.7万
展开全部
Swing写是吧
做一个线性集合。通过方向键增删节点,走一步删除为节点,添加头节点,别的都太简单了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无敌Joran
2012-11-22 · TA获得超过377个赞
知道答主
回答量:153
采纳率:0%
帮助的人:109万
展开全部
线程重复绘图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HDSSHTLL
2012-11-22 · 超过28用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:68万
展开全部
好好控制重绘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式