蛇咬是一款非常经典的小游戏。如何用java语言实现这个简单的游戏?我们需要了解java的swing编程知识,制作游戏界面,实现蛇上下左右移动等功能。如果要保存游戏比分列表,还需要学习java文件操作函数等。因此,实现snake函数不仅有趣,而且有助于我们更熟练地掌握java。
设计一款游戏,首先要设计界面。首先看一下我设计的一个界面。界面分为左游戏区和右控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右控区有“开始”、“暂停”、“停止”按钮,一个关卡选择的单选框和游戏排行榜。
所以我们需要定义swing组件,初始化它们,并在类初始化时添加它们。因为在后期设计游戏的时候,我们需要确切的知道游戏区域的大小,所以这里我们设置了游戏区域的固定大小值。本来想用layout更好的管理,但是作者对layout了解不够,所以先定了一个固定的大小。
定义我们的游戏。吃蛇游戏其实是由很多微小的格子组成,然后蛇在格子里活动。蛇是由一系列网格组成的。为了视觉效果,蛇的身体用蓝色标记,食物用红色标记,背景为白色。如第一张图所示。所以我们需要定义一个二维数组,保存网格信息,保存蛇身和食物的位置信息。初始化时,还需要添加键盘事件来控制上下左右移动。
食物的位置信息是二维的,所以我简单定义了一个类来存储二维信息。
然后就是实现游戏的功能。开始、暂停和停止按钮添加事件来控制游戏开始。关卡按钮定义了游戏的难度等。
游戏开始后,我们定义一个计时器。蛇按照指定的方向移动,方向由初始化时添加的键盘事件控制,键盘的上下左右键。蛇体是连续的位置信息,存储在队列中,所以蛇体的移动是在队列头增加一个位置,在队列尾减少一个位置,然后重绘游戏区域。当蛇移动时,它会进一步吃食物,撞到墙上,撞到自己。这是游戏的主要逻辑。
最后,在游戏结束时,我们弹出一个对话框,提示是否保存游戏分数。我们做了排行榜信息,只保留了前10名的游戏分数。首先,定义一个实现可比较接口的游戏分类,按照最高分和最早时间排序。
游戏结束,保存分数信息,看是否进入排行榜。以前,游戏排行榜信息是在排行榜组件初始化时加载的。通过保存和读取排行榜信息,我们也熟悉了文件读取操作,以及聚合和排序算法的功能。
最后编译运行,效果良好。经验只能写出一个粗略的设计。贪吃蛇游戏的功能其实比较简单,主要是界面的布局,swing编程等。如果你有任何问题,请留言。