附件中含有两个版本,
第一版本实现了最基本的功能.包括运动,吃food,暂停,计分,重来.
使用了一个二维数组来存储当前地图上有哪些东西,0表示没有,1表示自己的一部分,2表示障碍物,3表示food.
才开始新建一个点,将其加入LinkedList中保存
每一次移动都是将LinkedList的头移除,再在尾部加一个相关方向的next元素.,在这个过程中就需要判断是否越界或者撞到自己.
吃东西的代码:
public static boolean eatFood() { Node last = list.peekLast();// 获取但不移除列表的尾 if (last.equals(MainFrame.food)) { MainFrame.score += 10; MainFrame.scoreDisplay.setText("" + MainFrame.score); return true; } return false; }
碰撞的代码:
public static boolean bump(int row, int col) { if (data[row][col] == 2 || data[row][col] == 1) { // 撞到障碍物 return true; } return false; }
移动的代码:
/** * 蛇移动的方法 * * @param colSpeed * 1为向下, -1为向上 0表示横向 * @param rowSpeed * 1为向右, -1为向左 0表示竖向 */ public static void move(int colSpeed, int rowSpeed) { // 最后出来的是尾巴,前面的是头,这样add时不用插入到最前面方便操作. Node last = list.peekLast();// 获取但不移除列表的尾 int row = last.r + colSpeed; int col = last.c + rowSpeed; // 判断是否越界 if ((last.r + colSpeed) >= ROWS || (last.c + rowSpeed) >= COLS || (last.r + colSpeed) < 0 || (last.c + rowSpeed) < 0) { if (colSpeed == 1) { row = 0; } else if (colSpeed == -1) { row = ROWS - 1; } else if (rowSpeed == 1) { col = 0; } else { col = COLS - 1; } } // 判断是否碰撞 if (bump(row, col)) { MainFrame.isPause = true; MainFrame.isAlive = false; System.out.println("游戏结束"); MainFrame.menu.setText("重来"); return; } data[row][col] = 1; node[row][col].setColor(Color.white); list.add(node[row][col]); // 一切正常,判断是否吃到了食物 if (!eatFood()) { Node first = list.pollFirst();// 获取并移除列表的头,将其置为空的 data[first.r][first.c] = 0; node[first.r][first.c].setColor(Color.black); } else { // 再出来一个食物 MainFrame.creatFood(); } }
重写JPanel对窗体进行重绘.
第二个版本加入了新的游戏模式,包括第一版本的传统模式和闯关模式,内置了7张地图,吃到指定数量的food自动切换.可进行游戏.
加入了保存进度的功能.
下面这张是测试时候的截图,第7关.
详细代码(含一些基本注释和地图制作工具(data文件夹下,jdk1.7)):
制作好的地图欢迎大家传至网盘分享
已发现的bug:
首先,在随机生成Food的时候,如果遇到了生成的点已经有东西了,就会再随机一个方向进行位移,比如食物生成在(4,5).结果该位置有障碍物,那么会再随机生成一个方向,比如右边,那么这个位置就变成(4,6),知道不遇到障碍物.
但是,当随机生成的食物本来就在边界,再对其进行加减就会越界了.
在这里加一些判定
关卡模式进行跳关的时候还是会随机生成食物,就变成了有两个Food.又由于线程sleep的原因,生成food还在sleep,在读取之后.所以直接读取地图时不处理读到的Food.
重新上传代码:
相关推荐
用hge写的贪吃蛇 比较的完善 用hge写的贪吃蛇 比较的完善 用hge写的贪吃蛇 比较的完善
贪吃蛇,贪吃蛇,贪吃蛇,C语言贪吃蛇,C语言贪吃蛇贪吃蛇
java版贪吃蛇 打包成exe,自带java jre
Java写的比较简单的贪吃蛇程序,练练手的
贪吃蛇源码!适于初学者下载,自己做的,不是很完善!
自制的一个贪吃蛇游戏(含源代码),军衔版(最高级别为大元帅)
这个是在appinventor 官方广州服务器制作的简易贪吃蛇,只用了球形精灵和画布为主要插件,等待完善,这个包括apk应用和aia源码,适用于各位下载学习,请谨慎下载。 游戏说明:蓝色是食物,黑色和红色是蛇,白色是...
用c++编写的贪吃蛇游戏,功能比较完善,可供大家参考学习。
之前上传过一个,但是还有很多没有完善的地方, 这个是修改后的版本, 支持单双人对战,三种食物,一个石头, 对应不同效果,可左右设置宽度和高度, 超出屏幕则减少超出部分
近年来,随着通信技术的高速发展,网络技术和移动终端性能的不断提高与完善,以及手机、电脑的高普及率,使得人们对终端系统应用开发的需求在不端增大,贪吃蛇游戏是受广大人群喜爱的一款的电脑单机游戏,在这个游戏...
有C#写的一个非常强大的贪吃蛇游戏,共分5关,可以选择关数,可以选择速度,有暂停,开始,帮助。。等按钮,,,一个很完善,很强大的小例子。。。。
这个是在appinventor 官方广州服务器制作的简易贪吃蛇,只用了球形精灵和画布为主要插件,等待完善,这个是apk安卓应用,不包括aia源码,适用于各位下载试用,所以不需要积分(如果要积分的话,就是系统修改的了),...
贪吃蛇,所有软件:Qt4.8.5,Qt creator。主体算法部分来参考了CSDN网友,抱歉网址不记得了。我自己重写了一个,又加了一些菜单界面,和背景音乐,程序ICO图标等。
C语言写的贪吃蛇练习,linux平台下写的,不是很完善
用java Swing 开发的一款贪吃蛇小游戏,基本功能已经完善,有几个不同的游戏速度,可以暂停/开始游戏,还可以重新开始游戏,经测试,小游戏比较稳定。
可以在masm5/汇编运行环境上调试。非常完善的一个贪吃蛇游戏,界面也不错,很漂亮哦~~
超简单的vb贪吃蛇代码,类似与80后们玩的小游戏机上的方块儿贪吃蛇游戏,至于关次和分值大家可以进一步完善,适合于初学者哦!
VC++MFC 设计贪吃蛇游戏。方向键 开始 空格重新开始 。 功能还不够完善 ,有兴趣的可以完善下。
基于C#.NET编程的游戏,本游戏实现了贪吃蛇的基本功能,需要要完善之处,望IT好友修正之。 程序功能 1)游戏选项:主要实现游戏的开始、暂停、退出,分别可以使用快捷键F2、空格键、F4。 2)设置: a)游戏难度等级设置...