没有合适的资源?快使用搜索试试~ 我知道了~
基于JavaGUI的贪吃蛇游戏.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1 浏览量
2022-06-10
18:02:29
上传
评论
收藏 2.18MB PDF 举报
。。。
资源推荐
资源详情
资源评论






开发背景
作为一个经典的游戏,贪吃蛇设计简单,实用和娱乐性高,是 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.println();
System.out.print(background[rows][cols]);
运行 main 方法,查看效果。
Main 方法:
public static void main(String[] args) throws Exception {
}
SnakeGame snake = new SnakeGame();
snake.initBackground();
snake.showBackground();
控制台效果图:
蛇
前面已经初始化完成地图,然后进行蛇的初始化。
蛇的初始大小为 3,一个蛇头两节身体。为位置位于屏幕的正中央。代码:
// 集合保存节点信息
LinkedList<Point> snake = new LinkedList<Point>();
// 初始化蛇
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 方法。

// 显示蛇
public void showSnake() {
}
// 蛇头
Point head = snake.getFirst();
background[head.y][head.x] = '¥';
// 蛇身
for (int i = 1; i < snake.size(); i++) {
}
Point body = snake.get(i);
background[body.y][body.x] = '#';
修改 main 方法,将初始化蛇的方法和展示蛇的方法添加进 main 方法中:
public static void main(String[] args) throws Exception {
}
SnakeGame snake = new SnakeGame();
snake.initBackground();
snake.initSnake();
snake.showSnake();
snake.showBackground();
运行 main 方法及效果图:
食物
蛇的食物时随机出现的,位置不在墙壁上。
写方法 createFood,判断位置是否在墙上,不在则可以创建食物,在则重新随机。
//食物
Point food;
public void createFood() {
//食物随机,创建随机对象
Random ra = new Random();
while(true) {
}
int x = ra.nextInt(width);
int y = ra.nextInt(heigth);
if(background[y][x] != '*') {
}
food = new Point(x,y);
break;
剩余18页未读,继续阅读
资源评论

苦茶子12138
- 粉丝: 5607
- 资源: 9万+

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
