基于JAVA的连连看游戏设计Word格式.docx
- 文档编号:21490742
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:14
- 大小:481.99KB
基于JAVA的连连看游戏设计Word格式.docx
《基于JAVA的连连看游戏设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于JAVA的连连看游戏设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
(4)总结。
此次的连连看游戏开发设计使用JAVA语言。
游戏规则是效仿网络上一般的连连看,就是用三条以内的直线将两张相同的图片连接在一起就可以消除这两张图片,如果点击的两张图片不一样或者同一张图片,那么就不处理。
游戏开始后按照画好的框架随机分布一些图片,要求同一张图片的产生是偶数张。
按照游戏设定的方法把两张一样的图片相连就可以消掉这两张图片,在倒计时结束之前必须将框架内的图片清除完不然游戏失败并得到一个相应的分数。
第二章连连看的软硬件需求分析
2.1游戏运行的硬件需求
(1)客户机:
普通PC;
(2)内存:
256MB以上;
(3)屏幕分辨率:
推荐1280*720以上
2.2游戏运行的软件需求
游戏的软件主要涉及到计算机的操作系统和编写程序使用的软件,另外使用JAVA语言编写程序过程中必不可少的帮助软件精通swing程序设计.chm。
2.2.1操作系统要求
操作系统最好使用Windows2000以上的版本或者WindowsXP。
因为以前的系统不兼容一些相关的软件,甚至会有冲突,这样在对于编写程序过程中的调试和最后的运行都非常的不方便。
所以操作系统还是使用Windows2000以上的版本,免得出现不必要的麻烦。
2.2.2开发软件:
eclipse
Eclipse是一个开放源代码,基于JAVA语言的可扩展开发平台,就其自身而言,他仅仅是组服务,是个框架,通过一些插件和一些组件组成的开发平台[]。
安装eclipse前需先安装JDK及改变环境变量才能正常使用eclipse这个软件。
⑴安装好JDK以后C盘会自动安装JRE,就是Java的运行环境(全称JavaRuntimeEnviroment),这时就不需要再做其他设置了,直接点击“下一步”直到JDK安装完成。
⑵安装好JDK后就要配置环境变量。
我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置,分别设置如下三个环境变量[]:
设置path变量,只有设置好path变量才能让系统正常运行Java程序。
在安装JDK时一定要记住它的安装目录,举个例子JDK安装在C:
\jdk1.6.0目录下,以后我们常用的java应用程序便会存放在这个文件夹里,这时path环境变量还没有这个文件夹,所以必须添加进去。
在系统变量里找到path变量,选择->
编辑;
在变量值的最前面加上C:
\ProgramFiles\Java\jdk1.6.0_02,这里要注意变量名:
path,变量值:
C:
\Program
Files\Java\jdk1.6.0_02\bin[]。
设置classpath环境变量:
一般sun公司会编写很多常用的类包让程序员调用,减少繁琐的编程工作,比如dt.jar和tools.jar,要想直接调用这些包就必须要设置classpath环境变量,在安装JDK时要记住这两个文件所在的路径,并且把所在路径复制链贴classpath环境变量中setclasspath=.后面;
tools所在的目录。
Dt.jar所在的目录。
右键我的电脑改变环境变量选择新建classpath,新建名为classpath,最后设置变量值,在变量值后面加上;
jar所在目录;
%dt.jar所在目录;
在添加这两个目录前要先加个“.”表示当前目录,以后运行JAVA程序时会优先在这个目录下来寻找这两个包,可以提高运行效率。
设置java_home:
一方面是减少繁琐的输入路径名方便引用,只要将java_home改为JDK安装所在的目录,之后要用到这个目录里的程序时只要键入%java_home%,不用每次调用都要键入程序所在位置;
另一方面归一原则,如果JDK路径发生变化,所以调用到JDK的程序都要跟着改变调用路径,如果有使用绝对路径的程序没改可能造成整个系统瘫痪,如果之前有设置java_home值,这时只要变动JAVAHOME的位置就可以了;
最后一点第三方软件将同意java_home变量,否则,你不能使用本软件。
在系统环境变量,点击新java_home(java_home指JDK安装目录),变量名:
java_home,变量值:
JDK所在目录,环境变量更改完以后需要运行一下程序看看JDK有没有成功安装。
一般用这个程序:
public
class
HelloWorld{
static
void
main(String[]
args){
System.out.println("
Hello
world!
"
);
}
}
将程式保存为文档名为HelloWorld.java的文档,打开命令提示符窗口,进入到HelloWorld.java所在目录,键入下面的命令[]:
javac
HelloWorld.java;
java
HelloWorld。
⑶安装Eclipse
直接访问http:
//www.eclipse.org/downloads/index.php。
找到压缩包然后解压缩就可以用了。
若是直接下载MyEclipse软件,直接安装后可以直接使用,无需再改变环境变量,只是MyEclipse文件比较大,相对来说比较占电脑资源。
2.2.3相关文档:
精通swing程序设计.chm
《精通JavaSwing程序设计》主要讲解在Java环境下使用Swing开发窗体应用程序的前期基础知识,全书chm格式。
在内容上讲了一些窗口和面板的使用,标签与按钮的使用、文字输入组件的使用以及对话框、菜单和工具条、文件选择、拾色器等相关知识[]。
精通swing程序设计.chm(编译的HTML帮助文件)最实用之处在于它可查阅JAVA代码的分类及用法,是学习和使用JAVA语言必不可少的一款软件。
这个软件的使用方法非常简单,对于熟悉和掌握JAVA语言有非常大的帮助。
第三章连连看的设计3.1系统结构图
根据对“连连看”游戏的分析,该游戏可分为三个部分:
连连看系统功能的实现部分、连连看地图部分、连连看系统上层对话框部分,如图3-1所示。
三个部分对应的模块分别为:
算法模块、界面显示模块、鼠标控制模块。
其中连连看系统功能的实现部分主要就是算法模块。
算法模块负责游戏中的图片生成方法、地图规划、消除方法、分数的统计和时间消减等算法实现。
连连看系统地图部分就是界面显示模块,主要负责地图的显示、图片加载及消除的显示、时间条显示等。
连连看系统上层对话框部分就是鼠标控制模块,负责人机交流,让玩家使用鼠标玩这个游戏。
图3-1结构图游戏的主要流程图,如图3-2:
图3-2游戏流程图
连连看游戏使用JAVA语言编写,使用到了面向对象的技术。
面对对象编程的关键性突破就是:
一个对象同时包括方法和变量。
例如,一个自动调温器
对象不仅包括furnace_on()和furnace_off()两个方法,还包括currentTemp和desiredTemp两个变量[]。
在JAVA中,这些变量被称为字段。
这个新的实体--对象,同时解决了许多问题。
它不仅将计算机的事物和世界上的事有较密切的联系,而且处理了语言过程中的全局变量所引起的麻烦。
Furnace_on()和furnace_off()两个方法可以访问currenTemp和desiredTemp,这两个变量对那些不属于自动调温器的方法是隐藏的,以防止他们被一些不可靠的方法所修改。
3.2算法模块
算法模块中主要的内容有:
图片的产生设计;
判断两张图片是否一样;
图片路径处理设计。
界面显示模块编写游戏过程中主要的几个界面:
游戏界面设计;
游戏过关、失败的设计等,菜单控制模块主要是如何设置“开始”“再来一局”按钮。
3.2.1图片的产生设计
首先创建一个包com.lang.game.images,将图片放入这个包中,运用下列算法将图片成双取出放在画好的表中。
图片的存储和提取涉及到二位数组和类的使用,这种方法在美国计算机学家RobertLafore所著的DataStructures&
AlgorithmsinJava(SecondEdition)有提到:
IThesemethodsallowcommunicationbetweenLowArrayandLowArrayApp[].意思是说在array.java我们使用一个数组作为数据存储结构,但是我们把它仅仅作为一种语言元素。
现在,我们将封装在数组中的一类,称为LowArray.同时也提供类方法供其他类(在这种情况下,LowArrayApp类)的对象可以访问阵列。
这些方法允许通信betweenLowArray和LowArrayApp。
publicclassImageTools{
privatestaticImageIcon[]images=newImageIcon[72];
//实例化ImageIcon数组用于保存图片
static{
for(inti=1;
i<
=images.length;
i++){
//为数组中的成员分配资源
images[i-1]=newImageIcon(ImageTools.class.getResource("
fruit_"
+i+"
.png"
));
}
}
//此方法是用于获取图片信息。
传入数组下标,得到其对应资源
publicstaticImageIcongetIcon(intindex){
if(index>
0&
&
index<
=images.length){
returnimages[index-1];
elsereturnnull;
3.2.2判断两张图片是否一样
if(row>
0&
row<
rows-1&
col>
col<
cols-1){
if(firstSelected==null){
以上为实现点击图片时事件的逻辑事件
3.2.3图片路径处理设计
判断两个方块可不可以相连,如果符合相连的算法立即调用逻辑算法消除这两张图片。
两图能相连的所有情况如下图:
for(inti=0;
i<
map.length;
i++)
for(intj=0;
j<
map[0].length;
j++)[]{
Rectanglerect=matrixToRect(i,j);
if(map[i][j]==0)
continue;
g.drawImage(ImageLoader.getImageOf(map[i][j]),
rect.x,rect.y,null);
}
3.3界面显示模块
主界面中间显示为“JKJ连连看”,界面下方是一个6列7行的表格,这个表格是隐藏的,将图片成双随机放入表格。
表格的最外一行一列是不放图片的,这一行一列是为了让连线的算法更容易实现,所以游戏实际上只有5列6行。
游戏还设有时间进度条,这就要求必须在规定的时间内完成游戏。
否则游戏自动结束,只能重新开始游戏。
3.3.1游戏界面设计
publicLianliankan(){
this.setTitle1("
JKJ连连看"
//设置菜单栏
JMenuBarbar=newJMenuBar();
//设置一级菜单
JMenuItem1one=newJMenuItem1("
再来一局"
JMenuItem1two=newJMenuItem1("
退出"
//设置二级菜单(子菜单)
three.addAction1Listener(this);
this.setJMenuBar(bar);
//为界面添加菜单组件
menu1.add(one);
//为Jmenu添加子菜单选项
menu1.add(two);
JPanelsouth=newJPanel();
//得到Jpanel容器对象。
JPanelcenter=newJPanel();
center.set1Background(Color.gray);
//设置Jpanel容器对象的属性
JButtonbegin1Button=newJButton("
JButtonreset1Button=newJButton("
exitButton.addMouseListener(newMyMouse1Listener());
south.add(begin1Button);
south.add(reset1Button);
south.add(exit1Button);
this.add(centerr,BorderrLayout.CENTERR);
fruitPlate=newFruitPlate();
//得到FruitPlate类对象
center.add(fruitPlate,BorderLayout.CENTER);
//为设置Jpanel容器进行布局
this.add(southh,BorderLayoutt.SOUTHH);
this.pack();
this.setLocationnRelativeTo(null);
//设置窗口显示位置
this.setVisiblee(true);
//显示界面
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classMyMouseListenerextendsMouseAdapter{
publicvoidmouseClicked(MouseEvente){
System.exit(0);
}}
publicvoidactionPerformed(ActionEvente){
Stringcmd=e.getActionCommand();
if(cmd=="
){
flag=1;
}}//主函数
publicstaticvoidmain(String[]args){
newLianliankan();
3.3.2游戏过关、失败的设计
程序设有计时和计分的功能,玩家开始游戏后倒计时开始,倒计时结束或者所有的图片都被消除,游戏结束;
玩家开始游戏以后,两张图片连接成功加100分并清除这两张图片,如果玩家提前消除所以得图片剩下的时间可以换算成分数加到总得分。
计时器的关键代码如下:
publicvoidpaint(Graphicsg){//绘制显示的时间
Graphics2Dg2=(Graphics2D)g;
Dimensiond=getSize();
g2.setBackground(LLK.PinkColor);
g2.clearRect(0,0,d.width,d.height)[];
//删除画布的矩形区域
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
//使用抗锯齿模式完成呈现
g2.setColor(color);
g2.setFontt(font42);
g2.drawString("
时间
:
+getTime(),16,40);
//输出时间
3.3鼠标控制模块
MouseListener
mouseClicked(MouseEvente)mouseEntered(MouseEvente)mouseExited(MouseEvente)mousePressed(MouseEvente)mouseReleased(MouseEvente)
MouseDemo1.java
*importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassMouseDemo1extendsWindowAdapterimplementsMouseListener{
JFramef=null;
JButtonb1=null;
JLabellabel=null;
publicMouseDemo1(){
f=newJFrame("
MouseDemo1"
ContainercontentPane=f.getContentPane();
//得到Container容器对象
contentPane.setlLayout(newGridlLayout(2,1));
//为容器设置布局
B2=newJButton("
按键"
Labell=newJLabell("
没有按键信息"
JLabel.CENTER);
b1.addMouseListener(this);
//设置鼠标监听
contentPane.add(label);
contentPane.add(b1);
//向容器中添加JButton组件
f.pack();
f.show();
f.addWindowListener(this);
publicvoidmousePressed(MouseEvente){
label.setTexto("
你按下鼠标按钮"
publicvoidmouseReleased(MouseEvente){
label.setTextt("
你释放鼠标按钮"
publicvoidmouseEntered(MouseEvente){
label.setTexts("
鼠标光标在按钮以内"
publicvoidmouseExited(MouseEvente){
publicvoidmouseClicked(MouseEvente){
publicvoidwindowClosing(WindowEvente){
publicstaticvoidmain(String[]args){
newMouseDemo1();
3.4登陆界面的设计
为了增加这个游戏的乐趣,在游戏制作完之后添加了一个用户登录界面。
玩家必须先登录才可以玩,游戏结束之后可以保存的玩家的分数。
mainFrame.setVisible(true);
Timertimer=newTimer(100,newActionListener(){
if(time.isEnd()){
});
timer.start();
}else{
//以对话框形式提示错误
JOptionPane.showMessageDialog(login,"
用户名或密码错误!
"
错误提示"
JOptionPane.ERROR_MESSAGE);
login.add(confirm);
//为对话框组件添加按钮组件
//设置“注册”的对话框
finalJDialogregDialog=newJDialog(login,"
注册"
true);
registerDialog(regDialog);
JButtonregister=newJButton("
//为“注册”的对话框添加按钮组件
register.addActionListener(newActionListener(){
regDialog.setVisible(true);
//这里需要一段判断账号和密码是否正确
privatebooleancompareUserData(Stringname,Stringpassword){
try{
RandomAccessFileout=newRandomAccessFile("
user.dat"
rw"
Stringfname,fpassword=null;
while(out.getFilePointer()<
out.length()){
fname=out.readUTF();
out.rea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 连连 游戏 设计