java小游戏设计Word格式.docx
- 文档编号:21697741
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:64.74KB
java小游戏设计Word格式.docx
《java小游戏设计Word格式.docx》由会员分享,可在线阅读,更多相关《java小游戏设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
游戏规则:
在25个小图片中有一个为空白图片,玩家可以单击和空白小图片相邻的任一个小图片(上、下、左、右均可),即可将单击的小图片与空白小图片交换位置。
通过有限次的移动,即可将随机分布的小图片恢复成原图的样式。
2.实验内容
(1)各类及主要成员函数的功能:
java源代码及其功能
序号
类名
主要功能
1
GreedSnake
该类为程序入口,含有main方法。
2
SnakeControl
实现控制运行等总体要求,实现方向键控制蛇的方向,空格键控制游戏暂停或继续,还有分数等。
3
SnakeModel
该类实现蛇的结构和具体运动,如判断食物是否和怎样被吃掉及判断后的动作。
4
Node
该类实现组成蛇身的单位-食物。
5
SnakeView
该类实现画板功能,用黑色画蛇身,红色画食物。
(2)具体代码及实现如下:
①程序入口主方法:
tart();
}
}
②实现对蛇身的控制要求:
//第二部分
//游戏的Model类,负责所有游戏相关数据及运行
classSnakeControlimplementsKeyListener{//SnakeControl实现接口KeyListener,键盘监听
SnakeModelmodel;
publicSnakeControl(SnakeModelmodel){
=model;
publicvoidkeyPressed(KeyEvente){
intkeyCode=();
if{//运行状态下,处理的按键
switch(keyCode){
case:
;
break;
//向上翻加速
();
//减速
//暂停进入睡眠状态
default:
//任何情况下处理的按键,按键导致重新启动游戏
if(keyCode==||
keyCode==||
keyCode=={
publicvoidkeyReleased(KeyEvente){
publicvoidkeyTyped(KeyEvente){
③实现蛇的结构和具体运动:
//第三部分
@SuppressWarnings(“unchecked”)
classSnakeModelextendsObservableimplementsRunnable{//SnakeModel继承Observable类并且实现接口Runnable
ainfra[][]matrix;
//指示位置上有没蛇体或食物
LinkedList<
Node>
nodeArray=newLinkedList<
();
//蛇体
Nodefood;
intmaxX;
intmaxY;
intdirection=2;
//蛇运行的方向
ainfrarunning=false;
//运行状态
inttimeInterval=200;
//时间间隔,毫秒
doublespeedChangeRate=;
//每次得速度变化率
ainfrapaused=false;
//暂停标志
intscore=0;
//得分
intcountMove=0;
//吃到食物前移动的次数
//UPandDOWNshouldbeeven
//RIGHTandLEFTshouldbeodd
publicstaticfinalintUP=2;
publicstaticfinalintDOWN=4;
publicstaticfinalintLEFT=1;
publicstaticfinalintRIGHT=3;
publicSnakeModel(intmaxX,intmaxY){
=maxX;
=maxY;
reset();
publicvoidreset(){
direction=;
timeInterval=500;
paused=false;
score=0;
countMove=0;
//initialainfr,全部清0
matrix=newainfra[maxX][];
for(intI=0;
I<
maxX;
++i){
matrix[i]=newainfra[maxY];
(matrix[i],false);
//initialthesnake
//初始化蛇体,如果横向位置超过20个,长度为10,否则为横向位置的一半
intinitArrayLength=maxX>
2010:
maxX/2;
initArrayLength;
intx=maxX/2+I;
//maxX被初始化为20
inty=maxY/2;
//maxY被初始化为30
//nodeArray[x,y]:
[10,15]-[11,15]-[12,15]~~[20,15]
//默认的运行方向向上,所以游戏一开始nodeArray就变为:
//[10,14]-[10,15]-[11,15]-[12,15]~~[19,15]
(newNode(x,y));
matrix[x][y]=true;
//创建食物
food=createFood();
matrix[][]=true;
publicvoidchangeDirection(intnewDirection){//改变的方向不能与原来方向同向或反向
if(direction%2!
=newDirection%2){
direction=newDirection;
publicainframoveOn(){
Noden=();
intx=;
inty=;
//根据方向增减坐标值
switch(direction){
caseUP:
y--;
caseDOWN:
y++;
caseLEFT:
x--;
caseRIGHT:
x++;
//如果新坐标落在有效范围内,则进行处理
if((0<
=x&
&
x<
maxX)&
(0<
=y&
y<
maxY)){
if(matrix[x][y]){//如果新坐标的点上有东西(蛇体或者食物)
if(x==&
y=={//吃到食物,成功
(food);
//从蛇头赠长
//分数规则,与移动改变方向的次数和速度两个元素有关
intscoreGet=(10000–200*countMove)/timeInterval;
score+=scoreGet>
0scoreGet:
10;
//创建新的食物
//设置食物所在位置
returntrue;
else//吃到蛇体自身,失败
returnfalse;
}
else{//如果新坐标的点上没有东西(蛇体),移动蛇体
n=();
matrix[][]=false;
countMove++;
//触到边线,失败
publicvoidrun(){//运行方法
running=true;
while(running){
try{
(timeInterval);
catch(Exceptione){
if(!
paused){
if(moveOn()){
setChanged();
//Model通知View数据已经更新
notifyObservers();
else{
(null,
“你输了”,
“GameOver”,
running=false;
privateNodecreateFood(){
intx=0;
inty=0;
//随机获取一个有效区域内的与蛇体和食物不重叠的位置
do{
Randomr=newRandom();
x=(maxX);
y=(maxY);
while(matrix[x][y]);
returnnewNode(x,y);
publicvoidainfra(){
timeInterval*=speedChangeRate;
publicvoidspeedDown(){
timeInterval/=speedChangeRate;
publicvoidchangePauseState(){
paused=!
paused;
publicStringtoString(){
Stringresult=“”;
Noden=(i);
result+=“[“++“,”++“]”;
returnresult;
④实现组成蛇身的单位-食物:
//第四部分
classNode{//Node子类
intx;
inty;
Node(intx,inty){
=x;
=y;
⑤实现画板功能,黑色为蛇身,红色为食物:
//第五部分
classSnakeViewimplementsObserver{//SnakeView实现接口Observer
SnakeControlcontrol=null;
SnakeModelmodel=null;
Jframeainframe;
//窗口
CanvaspaintCanvas;
//图像背景
JlabellabelScore;
//分数
publicstaticfinalintcanvasWidth=300;
//窗口宽度
publicstaticfinalintcanvasHeight=300;
//窗口高度
(3)游戏运行结果如图:
①初始游戏界面及蛇出现的位置,最后三行英文字母为帮助菜单:
②第一次吃到食物加10分,增长1个食物的长度:
③第二次吃到食物加14分,蛇身增加1个食物的长度,两次加分说明游戏分数不仅和食物有关还和所走路径有关:
④游戏失败两种情况:
咬到蛇尾或者自身:
四、实验结果及分析
此处写自己通过学习本课程所得到的收获、感想以及对课程教学的看法等内容,要写自己的真实想法,不要写套话。
至少200字。
教师评价
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
其他:
评价教师签名:
年月日
考查报告内容必须自己独立完成,如果发现雷同现象,双方成绩都将认定为不及格!
最后要把课程考查报告电子文档及程序压缩文件上传到FTP服务器上,并提交打印稿。
打印报告时删除此红色提示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 小游戏 设计