JAVA拼图游戏论文Word文档下载推荐.docx
- 文档编号:17178104
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:23
- 大小:178.53KB
JAVA拼图游戏论文Word文档下载推荐.docx
《JAVA拼图游戏论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JAVA拼图游戏论文Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
能够实现基本的拼图功能,以及退出,记录数据等功能;
界面简洁。
②设计任务要完成设计、编码、测试等过程,给出设计思路、设计说明书、主要的代码的说明、使用说明书。
源代码以及可运行的拼图程序。
具体要求:
①设计任务与要求
②总体方案与说明
③面向对象的设计(主要类的设计)
④源程序清单与注释
⑤小结与体会。
课程设计进度安排:
序号
内容安排
时间
1
选定课程设计题目
03.15-3.20
2
构思程序结构
03.21-04.20
3
编写并调试运行程序
04.21-05.10
4
写课程设计论文
05.11-05.25
5
修改并提交
05.25-06.10
课程设计参考文献:
[1]唐大仕:
Java程序设计[M],北方交通大学出版社,2007.05:
P56-P62
[2]郑莉:
Java语言程序设计[M],清华大学出版社,2007.01:
P67-P75
[3]朱站立:
Java程序设计实用教程[M],电子工业出版社,2006.10:
P58-P70
[4]耿祥义:
java2实用教程[M],清华大学出版社,2007.3:
P81-P92
指导教
师签字
院长审核签字
内容摘要:
拼图游戏是一款非常经典的小游戏,因为它比较简单有趣,老少皆宜。
拼图游戏的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。
在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。
因此,如何设计和开发好这个拼图游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。
在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。
关键词:
拼图游戏
Java语言
开发
ThedesignofJAVAsoftwarebasedonthepuzzle
Abstract:
Jigsawpuzzleisaveryclassicgame,becauseitiseasyandfun,botholdandyoung,aremoresuitable.
JigsawdesignlanguageforeachJavalanguagedesignerstoimproveandadvanceisanexcellentexerciseopportunities.Puzzledesignismorecomplex,itsscope,andinvolvesmanymore,ifyoudonotthinkanddesign,wouldbedifficulttosuccessfullydevelopedthisgame.Inthedesignofthegameinvolvesdisplayofthegraphicalinterfaceandupdating,dataiscollectedandupdated,andinthedevelopmentofthisgame,classinheritancemechanism,andsomedesignpatternsyouwanttoapply.Therefore,howtodesignanddevelopthisjigsawpuzzle,forraisingthelevelofJavadevelopment,andsystemdesigncapabilitiesareofgreathelp.Duringtheprocessofdesignanddevelopment,youneedtohandletheinheritancerelationshipsbetweentheclasses,alsohavetodealwitheachtypeofappropriatepackaging,andalsotocoordinatethevariouslogicaldependenciesbetweenmodulesanddatacommunication.
Keywords:
Jigsawpuzzle
Javalanguage
develop
前言
拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。
拼图的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
1开发工具介绍
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
2需求分析
2.1开发环境与配置
下载jdk1.6.0_16软件包,双击图标安装好JDK,将JDK安装后的bin目录路径复制下来,配置系统我环境变量。
2.2功能要求
●实现图片的切割及随机分布。
●实现拼图游戏的拼图功能。
●在菜单栏里添加开始游戏、退出游戏、图片选择、难度选择的功能。
2.3系统主要功能和主要功能描述
功能1:
图片的放置
新建工程PinTu,要求在工程中创建一个窗体类PinTu和类Play,在窗体类中编写图片放置方法septic,该功能属于基本功能,供其他方法所调用,为实现拼图游戏的图片选择、难度设置、开始游戏等功能作准备。
在septic方法中主要实现的功能是将图片切割成m行n列,并存放在pic数组中;
定义数组按扭btn[][],并且判断控件里是否为空,如果为空则分配m+1行n列的控件空间;
如果存在则不分配空间这样有助于拼图游戏控件多少以及大小的改变。
将pic中存放的图片通过for循环放置在btn控件中。
图片放置方法的代码如下:
publicvoidsetpic()//图片放置
{
isover.setText("
拼图状态:
未开始"
);
step=0;
lstep.setText("
拼图步数:
"
+step+"
步"
w=280/m;
h=290/n;
Image[]a=splitImage(perimage1,1,1,100,100);
perimagea=newImageIcon(a[0]);
if(pregtn1==null)
pregtn1=newJButton(perimagea);
else
pregtn1.setIcon(perimagea);
pregtn1.setBounds(200,5,100,100);
this.add(pregtn1);
pic=newImageIcon[m*n];
//分配空间大小
if(btn==null)//如果为空就不重新分配控件
btn=newJButton[m+1][n];
//分配控件空间
p=newRectangle[m+1][n];
//坐标
Image[]t=splitImage(perimage1,m,n,w,h);
for(inti=0;
i<
(m+1)*n;
i++)
{
intx=i/n,y=i%n;
//下标转换
if(btn[x][y]==null)
btn[x][y]=newJButton();
btn[x][y].setBounds(y*w+5,x*h+40,w,h);
//设置数组按扭的位置
if(m==5)
btn[x][y].setBounds(y*w+5,x*h+60,w,h);
btn[x][y].addActionListener(this);
//添加事件
this.add(btn[x][y]);
//在窗体上加入这些按扭
}
for(inti=1;
n;
i++)
btn[0][i].removeActionListener(this);
//在按扭上添加事件
btn[0][i].setVisible(false);
}
inttemp[]=ran(m*n);
//随机数组
for(inti=0;
m*n;
pic[i]=newImageIcon(t[i]);
//图片转换
btn[(i/n)+1][(i+n)%n].setIcon(pic[temp[i]]);
btn[0][0].setBackground(Color.blue);
//设置背景颜色
btn[0][0].setIcon(null);
//设为空
this.repaint();
//刷新
功能2:
开始游戏
在菜单中添加菜单选项开始游戏,通过对该菜单选项进行动作事件的监听,实现ActionListener接口,调用setpic方法,实现图片重新放置,游戏重新开始。
功能3:
图片选择
通过FileDialogdf=newFileDialog(this,”图片选择”,FileDialog.LOAD);
这个语句实现图片选择窗口,进行图片选择,将图片的控件设为空,然后再调用setpic图片放置方法将控件上的图片进行刷新。
图片选择功能实现的代码如下:
if(e.getSource()==item3)
FileDialogdf=newFileDialog(this,"
图片选择”,FileDialog.LOAD);
df.setVisible(true);
perimage1=df.getDirectory()+df.getFile();
if(df.getFile()==null)
return;
for(intj=0;
j<
j++)
{
intx1=j/n,y1=j%n;
btn[x1][y1].removeActionListener(this);
}
setpic();
return;
}
功能4:
难度设置
在窗体上添加菜单栏menubar,然后在菜单栏上添加操作、设置、关于的菜单,在设置菜单中添加难度设置的菜单选项。
设置三个难度,难度一3*3为简单,难度二4*4为一般,难度三5*5为偏难。
在三个难度中添加动作监听事件nandu1.addActionListener(this);
nandu2.addActionListener(this);
nandu3.addActionListener(this)。
在接口方法重写中实现难度设置功能,以难度2为例,代码如下:
if(e.getSource()==nandu2)
{
nandu1.setSelected(false);
nandu2.setSelected(true);
nandu3.setSelected(false);
for(inti=0;
intx=i/n,y=i%n;
this.remove(btn[x][y]);
}
m=n=4;
btn=null;
setpic();
return;
}
功能5:
键盘事件的响应
在窗体类上用implement实现KeyListener接口,重写接口所有方法,在接口的KeyPressed添加控件上、下、左、右移动的方法。
通过if语句判断键盘键盘事件,如果按下左键,则是用if(y>
0&
&
btn[x][y].isVisible()&
btn[x][y].getIcon()==null)语句判断控件,如果为真,则进行向左移动。
,每进行一次移动都要进行判断是否拼图完整。
2.4关键技术
●继承JFrame实现窗体的设置。
●实现ActionLiatener的接口从而实现动作事件的监听。
●通过对btn控件添加监听事件来实现拼图游戏中的控件上下移动。
3详细设计
3.1核心功能代码实现技术
实现拼图游戏窗体的显示,代码如下:
publicvoidinit()
this.setTitle("
拼图游戏"
//菜单显示
this.setLayout(null);
this.setBounds(400,50,300,480);
isover.setBounds(80,10,120,20);
lstep.setBounds(100,50,100,20);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(menubar);
this.add(isover);
this.add(lstep);
menubar.add(menu1);
//添加菜单
menubar.add(menu2);
menubar.add(menu3);
menu1.add(item1);
menu1.add(item2);
menu2.add(item3);
menu2.add(item4);
menu3.add(item5);
item4.add(nandu1);
item4.add(nandu2);
item4.add(nandu3);
nandu1.setSelected(true);
//设置单选菜单默认值
this.setVisible(true);
item2.addActionListener(this);
//注册监听事件
item3.addActionListener(this);
item4.addActionListener(this);
nandu1.addActionListener(this);
nandu2.addActionListener(this);
nandu3.addActionListener(this);
item1.addActionListener(this);
}
3.2程序的流程图
如下图3.2-1为本次设计的程序流程图:
图3.2-1程序流程图
3.3程序运行效果图
如图3.3-1图3.3-2为不同难度设置的效果图:
图3.3-13*3的简单难度的效果图
图3.3-24*4的一般难度的效果图
如图3.3-3为实现图片选择功能的效果图,如图3.3-4为正在进行拼图游戏的效果图:
图3.3-3图片选择后的效果图
图3.3-4正在游戏效果图
4课程设计总结
经过这段时间的学习我收获不小,总结起来有如下几点:
1.更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。
对于这种面向对象的编程思想,使刚入门的人很快就能写出自己的程序。
2.锻炼了自己的动手和自学能力,在编程中有许多类和方法在课本中没有学到和提及到。
都是通过自己查帮助文档,或通过网络进行学习和了解到的。
和别人在一起交流是一件很快了的事。
3.体会到写程序最重要的是程序思想,而不是单纯的写代码。
如何解决类之间的关联和继承关系,如何组织类是很关键的。
此外对于接口和变量的私有还是公有,以及参数传递等方面也收获不小。
附录源代码
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.Random;
importjavax.swing.*;
publicclassGamesextendsJFrameimplementsActionListener
privateJButtonbuttons[][];
//存储按键的数组
privateContainercontainer;
//一个容器
privateGridLayoutlayout;
//布局方式为GridLayout
privateintcount=0,is[]=newint[8];
//count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组
publicGames()
super("
//设置标题
layout=newGridLayout(3,3);
//3行3列
container=getContentPane();
//该容器的布局方式,及其重要,否则产生空引用异常
container.setLayout(layout);
//将该布局方式作用于容器
buttons=newJButton[3][3];
//给按键数组分配储存空间
intlocate1,locate2;
//locate1用来指示当前产生的元素locate2用来指示locate1之前的元素
for(locate1=0;
locate1<
8;
locate1++){//该方法作用是产生1到8这8个数,随机分配给数组,即无序排列
intg=newRandom().nextInt(8)+1;
//随机产生一个空白按键,即不显示的那个
is[locate1]=g;
for(locate2=locate1-1;
0<
=locate2;
locate2--)
if(is[locate1]==is[locate2])
break;
if(locate2!
=-1)
locate1--;
inttemp=0;
intr=newRandom().nextInt(3);
//随机产生一个0到3的数,代表空白按键的行
intl=newRandom().nextInt(3);
//随机产生一个0到3的数,代表空白按键的列
for(inti=0;
i<
3;
i++)
for(intj=0;
j<
j++)
if(r==i&
l==j){//空白按键设置为9,不显示
buttons[i][j]=newJButton("
9"
container.add(buttons[i][j]);
buttons[i][j].setVisible(false);
else
+is[temp++]);
//将数组数组的值作为显示的8个按键的名字
buttons[i][j].addActionListener(this);
//注册监听事件
setSize(300,300);
//设置显示容器区域大小
setVisible(true);
publicvoidactionPerformed(ActionEventevent)
//事件处理,由于计算量小该处将所有按键单独分析
JButtonb=(JButton)event.getSource();
if(b==buttons[0][0])
if(buttons[0][1].getText().equals("
))
buttons[0][1].setText("
+buttons[0][0].getText());
buttons[0][1].setVisible(true);
buttons[0][0].setText("
buttons[0][0].setVisible(false);
count++;
}
elseif(buttons[1][0].getText().equals("
buttons[1][0].setText("
buttons[1][0].setVisible(true);
elseif(b==buttons[0][1])
if(buttons[0][0].getText().equals("
button
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 拼图游戏 论文