i. 随着科技的飞速发展,越来越多的游戏如雨后春笋般出现,对于有选择困难症的怀旧玩家,他们没有很多时间去挑选游戏,这时候就需要一款简单,方便的游戏来娱乐。
ii. 双人模式可满足玩家偶尔想要和朋友一起玩的需求。
iii. 贪吃蛇游戏节奏快,可随时暂停或者继续,有挑战性,可在碎片时间进行游戏。
项目简介:
用上、下、左、右键控制蛇(Snake类)的运动方向,使之向着有食物(Food类) 的方向运动,并吞吃食物使身体增长并获得相应分数,如果蛇在移动过程中,撞到墙壁、障碍物或者身体交叉蛇头撞到自己的身体则游戏结束
1.挑战模式:选择关卡进行游戏,挑战在规定时间内达到最高分数。
2.闯关模式:选择关卡进行游戏,得到一定分数即过关,进入下一图;
3.双人模式:双人对战,玩家二通过WASD进行移动,哪方触碰到对方身体或触碰到自身身体或墙壁/障碍物即死亡,依据各个分数进行比赛。
4.娱乐模式:双人抢食,类似于"无敌版",取消所有的碰撞测;
gitee地址:https://gitee.com/Hi_wYp/dashboard
gitee提交记录:
<img
1. 负责实现双人模式
2. 撰写团队博客
3. 背景音乐设置C
4. 代码规范和警告处理(idea与Alibaba Java Coding Guidelines)
问题:ArrayList是我们经常在代码中使用的集合类,但是当ArrayList在执行remove方法时会出现ConcurrentModificationException。
解决:原因是checkForComodification()方法里modCount与exceptedModCount不同造成的。比较两个值,是因为ArrayList即从List中继承了iterator(),又从AbstractList中继承了list;为了实现ArrayList的Fail-Fast机制。Fail-Fast机制的作用是避免ArrayList在迭代过程中数组结构发生变化的问题。所以会进行两个数据的判断,查看是否改变了数据结构。所以不要在foreach的循环里进行元素的add/remove操作,使用iterator的remove()方法删除元素;
问题:双人模式的实现:一条蛇继承另一条蛇并对相应方法经行覆盖,在controller(控制台)复用一个单线程时产生了线程冲突且当一条蛇死亡时蛇身没有及时消失且程序崩溃;
解决:两条蛇为单独的两个类,拥有单独的两个线程,修改GamePanels的paint方法和recover方法使用的判断条件解决问题;
问题:背景音乐的实现;
解决:在view包里新建一个Music类,在controller(控制台)添加新的music对象,在StartHandler监听器内并执行其start()方法;
待改进:只能使用wav类型的无损音乐;
GUI界面的设计与优化
问题:JPannel无法填满JFrame导致的背景图片无法全屏
解决:新建一个大的JPannel1放在BorderLayout布局的JFrame的CENTER,然后在Jpannel1里面建一个GridLayout用来布置按钮。这样就能使得背景图片充满窗体了。
问题:JPannel2的空白背景遮盖住后面JPannel1的背景图
解决:将JPannel2的背景设置为了NULL,这样就不会挡住JPannel1的背景图片了
问题:按钮圆形图片导入后,图片不能完全覆盖按钮,导致的不美观问题。
解决:去除按钮的边框和填充,这样显示就是整个图片而不会出现按钮了。
负责实现闯关模式
负责实现挑战模式
串联GUI与信息代码
实现排行榜功能
1、负责实现娱乐模式
2、负责食物类图片实现
3、负责地图的制作
问题:娱乐模式实现;
解决:娱乐模式为双人模式,在ControllerAmusement类中去除了碰撞墙壁的限制,游戏模式为玩家1和玩家2吃食物,如果有一方吃到自己身体,则游戏结束,吃食物多的玩家获胜,如果吃的同样多,则平局。
问题:食物图片的实现;
解决:先把10张食物图片放到i.foodPicture包里,在food类的drawMe方法里,使用drawImage函数,把图片重绘到游戏界面。
原文:https://www.cnblogs.com/pikaaaqiu/p/12171064.html