Java拼图游戏课程设计报告1.docx

上传人:b****9 文档编号:118107 上传时间:2022-10-03 格式:DOCX 页数:36 大小:1.94MB
下载 相关 举报
Java拼图游戏课程设计报告1.docx_第1页
第1页 / 共36页
Java拼图游戏课程设计报告1.docx_第2页
第2页 / 共36页
Java拼图游戏课程设计报告1.docx_第3页
第3页 / 共36页
Java拼图游戏课程设计报告1.docx_第4页
第4页 / 共36页
Java拼图游戏课程设计报告1.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Java拼图游戏课程设计报告1.docx

《Java拼图游戏课程设计报告1.docx》由会员分享,可在线阅读,更多相关《Java拼图游戏课程设计报告1.docx(36页珍藏版)》请在冰豆网上搜索。

Java拼图游戏课程设计报告1.docx

《Java程序设计与应用开发》课程设计报告

设计题目

拼图大作战

学生姓名

学生班级

学生学号

指导教师

完成时间:

2016年06月21日

目录

一、项目说明..................................................2

二、设计思路与关键数据结构.......................4

三、系统的类和结构......................................6

四、核心算法描述和相关技术说明..............8

五、总结和体会..............................................9

六、源代码清单............................................10

一.项目说明

1、项目介绍

该游戏是由以图片为主体的拼图小游戏,这个游戏是一个益智休闲的小游戏。

该类似的小游戏在我们成长的过程中,曾经疯狂的流行着,这是一个老少皆宜的小游戏,它开发人们的智力,加强我们的动手能力和我们的眼睛的洞察力。

该游戏简单方便易操作是一个很好的小游戏,也是一个经久不衰的游戏,在我们这代人中,可谓每个人都玩过这种类似的小游戏,简单易操作是其一直存在的原因之一。

游戏由简单的界面组成的,操作简单,该图像块是由12块小的小图像块构成的,其中有一个空白的小图像块,该图像块是来与别的图像块交换的,以此来实现大图像的拼凑。

在java标准环境下运行,实现通过小的图像块的移动实现大的图像的拼凑。

通过鼠标点击选取小的图像块,通过移动鼠标实现小图像的移动,使小图像块能够上下左右的移动从而完成大图像的拼凑的完成。

2、游戏展示与使用

1.主体功能

可以从多张图片中选择来进行拼图游戏

通过移动鼠标实现小图像的移动,使小图像块能够上下左右的移动从而完成大图像的拼凑的完成。

播放游戏音乐的功能

统计游戏中走的步数

游戏中体现友好性,加了数字提示的功能和一个原图预览的区域

完成后,有设置提示弹框显示,所用的步数和恭喜

2.如何使用

如下图:

可以先选择喜欢的图片来进行游戏,点击喜欢的图片后,再点击Start按钮便可以开始游戏

在游戏过程冲,可以使用数字提示的功能,数字提示会按照1,2,···9的顺序给予提示,借此降低游戏难度,增加可玩性

也可以控制游戏音乐的播放与否

在完成拼图后,会提恭喜完成的信息。

若再想继续游戏,则继续选择喜欢的图片,再点击Start按钮继续游戏

若不想玩游戏,则点击右上角叉叉,即可退出游戏。

3.基于Java技术,在Ecilpse下进行编译使用,作者使用环境SUMSUNG电脑,WIN1064位操作系统

二、设计的思路与关键数据结构

1、设计思路

主要是利用了Java中的Swing和Awt来实现界面上的静态显示和动态交互操作,播放音乐的技术使用到了Applet,在算法的实现上,利用了布局上的坐标方式,来计算每个小方格的坐标位置,进行小图片交换和判断是否复原拼图等操作。

2、实现思路

主要分为五个类来实现总体的功能

在构思布局的过程中,想了3*4的布局,借此可以直接在面板上放置比较多的按钮来实现功能。

在显示界面的思路上,分为四个方面,主界面,图片预览区,拼图区,小平图单元格。

然后要有实现游戏总的一个类,启动类。

所以总共五个类,利用UML时序图表示如下:

3、关键算法

在决定做这个小游戏的时候,翻阅了书本,书本利用了坐标来计算每个小方块的关系,进行计算。

但是不完善,在这个基础上,上网查阅了博客和一些IT网站,最后完成了算法方面的问题。

第一个,打乱小拼图,利用第一个左上角的小方块与周围的小方块进行比较,若原理左上角的四块小方格,则表示打乱成功。

第二个,如何将点击的小方块和空方块来进行交换,将两个方块坐标进行互换即刻,在判断四个方向即刻。

利用UML时序图表示如下:

三、系统的类和结构

类结构与关系:

启动起类,负责调用空的构造方法,来启动整个游戏。

主界面类,进行界面的初始化操作,和添加组件。

预览图片类,负责绘制预览区,将图片载入预览区。

拼图图片类,关键类,实现了方格移动的算法。

拼图单元格类,关键类,实现了方格移动的算法

利用UML时序图,陈勋结构和练习,显示如下:

2、最初完成游戏界面效果如图:

此时无功能,无监听事件

3、完成监听和播放音乐功能后

完成一句游戏后效果如图所示

四、核心算法描述和相关技术说明

主要算法:

//当前方格的移动的算法

publicvoidmove(Stringdirection){//上,下,左,右

switch(direction){

case"UP":

this.setLocation(this.getBounds().x,this.getBounds().y-150);

break;

case"DOWN":

this.setLocation(this.getBounds().x,this.getBounds().y+150);

break;

case"LEFT":

this.setLocation(this.getBounds().x-150,this.getBounds().y);

break;

case"RIGHT":

this.setLocation(this.getBounds().x+150,this.getBounds().y);

break;

default:

//其他情况,不做移动处理

break;

}

}

//随机产生一个方向,进行空方格与小方法的互换

//产生0-3之间的随机数,对应空方格的上下左右移动

intdirection=(int)(Math.random()*4);//0,1,2,3

switch(direction){

case0:

//空方格向左移动,与左边的方格进行互换位置,左侧方格要向右移动

//nullX=nullX-150;

nullX-=150;

cellMove(nullX,nullY,"RIGHT");

break;

case1:

//空方格向右移动,与右边的方格进行互换位置,右侧方格要向左移动

nullX+=150;

cellMove(nullX,nullY,"LEFT");

break;

case2:

//空方格向上移动,与上边的方格进行互换位置,上侧方格要向下移动

nullY-=150;

cellMove(nullX,nullY,"DOWN");

break;

case3:

//空方格向下移动,与下边的方格进行互换位置,下侧方格要向上移动

nullY+=150;

cellMove(nullX,nullY,"UP");

break;

}

五、总结和体会

1、优缺点与自我评价

(一)、这个游戏真的太过简单,游戏功能单一,日后要完善,学新的知识

(二)、没和他人进行问题和知识上的学习交流

(三)、自己没有充分利用好时间,课程设计匆匆完成

(四)、图形交互界面不扎实,做的时候要看书,试来试去。

算法方面,这次写的两个算法相对简单,但也耗费了大量脑力,以后要多思考,学习算法。

(五)、这几天的精力都在做这个游戏中,破天荒给每行代码写好注释,以后要继续保持

2、课设与课程总结

在没上java这门课之前,我就知道java的强大,在我们生活中的重要性。

在学期开始的时候,那时我已经接触了Java,后来因为对前端方向感兴趣,所以就没怎么关心过Java,后台用的PHP多。

有空的时候放开书本,发现这本书讲了好多“复古”的内容,在日常中,我并不多见到这些知识。

在一次次地上网查询,了解相关的知识,从这些经历中,我打心底里对java有了新的了解,新的认识,从而对java产生了浓厚的兴趣以及好奇心,发现我之前太轻视这门课了。

此时Java课堂教学虽已经停止,但是我私下,今后会继续学期这门语言,认真对待,尝试自己在这个暑假就利用Java做后台。

这个小游戏挺简单的,三天的时间,没有请教别人,自己慢慢的就捣鼓出来了。

我知道团结的重要性,团队的力量。

以后做这方面的东西,开发,还是要多和他人讨论学习。

对于XX老师,很感谢您的教学付出,您在我心中是一个很负责任的老师,认真严肃的同时还能这么关心学生,贴近学生,真的打心底里佩服。

六、源代码清单

packagegamestart;

importgameui.PictureMainFrame;

/*

*启动器类

*/

publicclassMainApp{

publicstaticvoidmain(String[]args){

//创建主界面

PictureMainFrameframe=newPictureMainFrame();

//显示界面

frame.setVisible(true);

}

}

/*

*图片小方格类

*/

packagegameui;

importjavax.swing.Icon;

importjavax.swing.JButton;

/*

*图片小方格类

*/

publicclassCellextendsJButton{

//带有图片的小方格

publicCell(Iconicon){

super(icon);

//设置小方格大小

this.setSize(150,150);

}

//带有图片并且带有文字的小方格

publicCell(Stringtext,Iconicon){

super(text,icon);

//设置小方格大小

this.setSize(150,150);

this.setHorizontalTextPosition(CENTER);//文字水平居中显示

this.setVerticalTextPosition(CENTER);//文字垂直居中显示

}

//当前方格的移动

publicvoidmove(Stringdirection){//上,下,左,右

switch(direction){

case"UP":

this.setLocation(this.getBounds().x,this.getBounds().y-150);

break;

case"DOWN":

this.setLocation(this.getBounds().x,this.getBounds().y+150);

break;

case"LEFT":

this.setLocation(this.getBound

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1