基于JavaGUI的贪吃蛇游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发背景
作为一个经典的游戏,贪吃蛇设计简单,实用和娱乐性高,是90后童年的美好回忆。对于贪吃蛇传统的玩法,大家众所周知,即:玩家通过控制游戏手柄上下左右四个方向控制蛇的前进方向,每当吃到一个东西就会增加相应的分数,蛇的身子会越吃越长,蛇身越长游戏的难度就越大,不能咬到自己的身体,也不能碰到墙壁,积累到一定分数就可以通过此关,进入到下一关。
需求分析
该次小游戏程序设计包含二维数组、方向键操作及图形化函数等方面知识。
具体需求概要如下:
1、游戏界面初始化,显示背景区域和活动区域
2、按方向键上下左右进行游戏的控制
3、当蛇头吃到食物时,蛇身长度加一,分数增加
4、当蛇头撞墙或者碰到自身时,游戏结束,显示“GAME OVER”和累加得分
里面存在的事物:地图、蛇、食物
游戏规则:
1.蛇初始化时是3个节点,一开始蛇是出现在地图中间位置的
2.蛇吃到食物会长一节
3.蛇咬到自己会死
4.蛇撞墙会死
5.食物随机生成的,食物不长在背景上,不长在蛇身上。
使用技术
本次课程使用JAVA来完成游戏的设计,使用二维数组存储背景信息,使用List存储蛇身信息,使用Swing完成图形界面化。
功能开发
概要设计
1、初始化模块:屏幕初始化,屏幕初始化用于显示游戏信息“贪吃蛇”。
2、游戏界面模块:设计边框和贪吃蛇活动区域
3、游戏运行模块:运用函数控制蛇长及吃食物关系,使用方向键控制方向。
4、判断模块:蛇头撞墙或者碰到自己身体,则游戏结束,显示分数
实现步骤
本节分为两个部分,一部分为核心逻辑,即算法处理逻辑;另一部分为界面搭建。游戏最核心的部分为算法逻辑部分。先讲算法逻辑,最后再进行界面的搭建。
第一部分分为几个小节
第二部分分为几个小节
创建工程
本次小游戏是一个单独的项目,所以需要创建单独的工程。
地图
首先定义地图的长宽,定义数组存放地图上的点
// 地图的宽(行)
public static final int width = 35;
// 地图的高(列)
public static final int heigth = 8;
//二维数组存放地图上的点
private char[][] background = new char[heigth][width];
我们需要的地图为:
所以需要初始化地图,四周为墙壁,中间为空白部分,供蛇移动。这里使用’*’代表墙壁,使用’ ’代表空白部分。边界值判定:二维数组的第一行和最后一行,其余行的第一列和最后一列均为墙壁。
初始化方法:
// 初始化地图
public void initBackground() {
for (int rows = 0; rows < background.length; rows++) {
for (int cols = 0; cols < background[rows].length; cols++) {
if (rows == 0 || rows == (heigth - 1) || cols == 0 || cols == (width - 1)) {
background[rows][cols] = '*';
} else {
background[rows][cols] = ' ';
}
}
}
}
展示,在控制台循环打印。showBackground方法:
public void showBackground() {
for (int rows = 0; rows < background.length; rows++) {
for (int cols = 0; cols < background[rows].length; cols++) {
System.out.print(background[rows][cols]);
}
System.out.println();
}
}
运行main方法,查看效果。
Main方法:
public static void main(String[] args) throws Exception {
SnakeGame snake = new SnakeGame();
snake.initBackground();
snake.showBackground();
}
控制台效果图:
蛇
前面已经初始化完成地图,然后进行蛇的初始化。
蛇的初始大小为3,一个蛇头两节身体。为位置位于屏幕的正中央。代码:// 集合保存节点信息
LinkedList
// 初始化蛇
public void initSnake() {
int x = width / 2;
int y = heigth / 2;
snake.add(new Point(x + 1, y));
snake.add(new Point(x, y));
snake.add(new Point(x - 1, y));
}
初始化蛇之后,要进行蛇的展示,蛇身用’#’,蛇头用’¥’表述。这里写showSnake方法。