石家庄学院
课程设计报告
课程名称:
数据结构
设计题目:
用Java语言设计“贪吃蛇”游戏
院 系:
石家庄学院计算机系
专 业:
计算机科学与技术
班 级:
08级2班
设 计 者:
扈海涛
学 号:
20081301061
指导教师:
刘智国
2010
年
1
月
7
日
类名函数程序结构图
类名
注释:
方法名
方法名
贪吃蛇
贪吃蛇
MapYardTextSnakePaintThreadNodeKey
Map
Yard
Text
Snake
PaintThread
Node
KeyMonitor
Food
Direction
DrawMian函数paintScoreCheck.stopgetscore
Draw
Mian
函数
paint
ScoreCheck
.stop
getscore
setscore
processKey
Deadif
Tailadd
Deltail
Headadd
Tailadd()
Deltail()
Headadd
draw
move
eat
keyPressed
Run
Pause
Restart
go_on
isPause
setPause
install
Draw
reAppear
getM
setM
getN
setN
Draw
Keypressed
定义
方向变量L,U,D,R
二、题目分析
通过分析该程序基本需要以下几个类:Text(Main方法)、Snake(蛇)、Food(食物)、Yard(窗口)、Map(地图)、Node(节点)、PaintThread(线程)、Dir(方向)、KeyMonitor(键盘监听)。主要实现蛇运动的基本操作和一些事件反应、游戏分数的记录、暂停、重新开始、更改蛇蛇颜色,蛇的移动速度,地图、死亡模式的改变等功能。
本程序运用Java语言知识,用面向对象的思维设计“贪吃蛇”游戏。
结果分析
运行程序出现游戏界面,蛇(Snake)头自动向前移动,用键盘的上(Up)下(Down)左(Left)右(Right)键控制蛇头的移动方向。游戏窗体中在随机位置出现紫色的食物(Food)。
1、每吃一个加5分
2、默认撞墙不死
3、默认速度3
4、默认地图1
5、默认普通蛇身
6、默认30分提升一个速度档次
7、默认每个速度都走完后更换地图并且速度恢复默认,积分归零
功能键:
1、按F1重新开始
2、按空格键暂停/继续
3、按1/2/3/4/5数字键设置蛇的移动速度(逐渐变快)
4、按F2更换地图(3种)
5、按F3普通蛇/彩蛇的切换
6、按F4更换游戏模式(蛇撞到最外围为死亡还是从另一端返回)
该程序初步完成了“贪吃蛇”的游戏雏形,但是缺乏完善。比如:界面效果十分粗糙、屏幕闪烁、缺少声音等。但是,我们通过编写贪吃蛇,能更好的运用面向对象的思维方式了,并学到了许多有用的经验。
附录(程序清单)
Snake.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
public class Snake {
Node head = null;
Node tail = null;
int size = 0;
Yard y;
Node n = new Node(1, 2, Dir.D);
public Snake(Yard y) {
head = n;
tail = n;
size = 1;
this.y = y;
for(int i=0;i<3;i++)
this.Headadd();
}
public void Tailadd() {
Node node = null;
switch (tail.dir) {
case L :
node = new Node(tail.m+1, tail.n, tail.dir);
break;
case U :
node = new Node(tail.m, tail.n+1, tail.dir);
break;
case R :
node = new Node(tail.m-1, tail.n, tail.dir);
break;
case D :
node = new Node(tail.m, tail.n+1, tail.dir);
break;
}
tail.next = node;
node.pre =