在开始动手之前
在上一次使用Qt完成了计算器的开发后,好奇心使我想尝试一下Java的图形化开发,所以本次项目全程使用 Java 编写。
项目需求分析
贪吃蛇项目要求实现游戏的基本功能,例如生成地图、食物、蛇,能控制蛇的移动,当吃到食物时蛇身增长,当撞墙或撞到蛇身后游戏结束。再设计游戏的初始欢迎界面、游戏界面和结束界面。
功能分析
显示界面需要JFrame和Jpanel来实现,地图使用drawline画出网格,每一格作为一个单位,设置最外层的格子为墙。使用两个一维数组存放蛇的x、y坐标,数组长度为格子的数量,确保蛇能足够长。使用一个全局变量记录当前蛇的长度,方便绘图时画出正确的蛇。
在做碰撞检测时,只需要将蛇头节点的坐标和蛇身的坐标、食物的坐标、墙的坐标进行比较即可。
当蛇在移动时,需要将储存蛇的数组的每一个元素赋给后一个元素,最后计算首元素,此时最后一个元素的值被丢弃。若吃到食物,则将最后一个元素继续向后赋值,同时设置蛇的长度加一。
补充
在绘制蛇时,若颜色一致,将导致蛇近距离移动时不易分辨蛇的走向,可以将蛇身变为彩色或渐变色,方便观察。在计量蛇的长度时,可以使用两个全局变量,一个记录蛇长度的初始值,另一个记录蛇吃到食物的个数,两个变量相加即可得到蛇的当前长度,且第一个变量可以根据难度的变化而变化,第二个变量恰好记录了当前的游戏分数。
由于本游戏的画面是由不变大小的单元格堆叠而成的,故可以考虑增加分辨率选项,添加并设置对应的菜单和选项。同时可以加入键盘快捷键的监听,例如按下R键快速重启游戏等等。
致谢
本项目的完成离不开以下教程的指导和参考:
后续
下一篇地址 开发Windows贪吃蛇游戏——(二)代码实现