拼图游戏java课设含可运行程序.docx

上传人:b****6 文档编号:7058896 上传时间:2023-01-16 格式:DOCX 页数:22 大小:93.95KB
下载 相关 举报
拼图游戏java课设含可运行程序.docx_第1页
第1页 / 共22页
拼图游戏java课设含可运行程序.docx_第2页
第2页 / 共22页
拼图游戏java课设含可运行程序.docx_第3页
第3页 / 共22页
拼图游戏java课设含可运行程序.docx_第4页
第4页 / 共22页
拼图游戏java课设含可运行程序.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

拼图游戏java课设含可运行程序.docx

《拼图游戏java课设含可运行程序.docx》由会员分享,可在线阅读,更多相关《拼图游戏java课设含可运行程序.docx(22页珍藏版)》请在冰豆网上搜索。

拼图游戏java课设含可运行程序.docx

拼图游戏java课设含可运行程序

拼图游戏_java课设_含可运行程序

课程设计说明书NO.1

拼图游戏

1.课程设计的目的

本次课程设计的主要目的是设计一个拼图游戏。

在这个拼图游戏中有自由选择图片的功能,可以根据自己的兴趣选择喜欢的图片进行游戏,为了减小难度,在游戏中加入了数字提示功能,在游戏界面中,左半部分是游戏区域,右半部分则是原图预览部分,游戏开始时,系统会随机分配一块缺失,并将图片顺序打乱,用户可以根据原始图片进行移动复原过程。

在游戏中会进行步数和时间的统计,以供玩家进行对比,本游戏完全通过鼠标来操作,简单上手。

2.设计方案论证

2.1设计思路

2.1.1功能描述

本次课程设计主要是用Java语言编写程序实现一个拼图游戏。

该拼图游戏系统共包括3个java源文件和一个图片文件夹。

这是个功能比较齐全的拼图游戏,实现的是将图片分解,取出最右下角的图片,然后将剩余图片随即打乱,最关键的不用自己手动切割图片,再进行加载。

而是应用类方法自动进行图片的加载,方便了用户的使用。

该拼图游戏结合了许多元素,可以图片切割,同时还有游戏时间和步数的记录。

在拼图时首先把图片添加到文件夹“09.12.27java编程”的目录下,程序会自动获取该目录下的所有图片文件,并加载到游戏中,进行切割后,显示在拼图按钮上。

拼图结束时可以显示游戏成绩和记录的存档。

2.1.2开发环境

本次设计的开发运行环境是:

JCreater

2.2设计方法

在设计拼图游戏时,需要编写3个Java源文件:

MyMainFrame.java、MyCanvas.java、Cell.java。

2.2.1MyMainFrame.java主类

该类创建拼图游戏的主窗口,该类含有main方法,是程序的入口,该类是JFrame类的子类,定义了各个组件的动作并为窗口设置图标,MyMainFrame类的成员变量中有8种重要的变量及方法,choicePicL、picName、jcbo1、name、stepInfor、timeInfor、situation、panel1。

沈阳大学

课程设计说明书NO.2

2.2.2MyCanvas.java

该类是JPanel类的子类,实现了初始化游戏界面,创建并添加组件,盛放游戏信息的面板内容,声明6个静态方法,serialVersionUID、hasAddActionListener、Cell、cellNull、pictureID、stepNum。

2.2.3Cell.java

该类是JButton类的子类,加载打乱的图块进行初始化游戏,负责图快的移动。

在本程序中各个类的关系如图1所示。

MyMainFrame

CellMyCanvas

图1功能模块图

2.3程序流程图

开始

初始化游戏界面

选择图片

加载图片

移动图片

N拼图正确,

Y

结束

图2程序流程图

沈阳大学

课程设计说明书NO.3

2.4类、方法、属性说明

2.4.1MyMainFrame类

(1)成员变量

表1MyMainFrame成员变量表

序号名称变量类型功能1JLabelchoicePicL确定选择的图片2StringpicName确定选择的图片3JComboBoxjcbo1确定选择的图片4JTextFieldname图片名称5JTextFieldstepInfor玩家已走步数6JTextFieldtimeInfor时间7JTextFieldsituation图片载入8JRadioButtonstart开始按钮9JRadioButtonaddPicNum数字提示10JRadioButtonclearPicNum清除提示

(2)方法

表2MyMainFrame方法表

序号名称功能备注

MyMainFrame()1完成窗口的初始化构造方法

actionPerformed(ActionEvente)2游戏完成图接口方法

itemStateChanged(ItemEventarg0)3下拉列表项接口方法

paintComponent(Graphicsg)4重绘容器组件里的所有组件接口方法

mouseClicked(MouseEventarg0)5单击鼠标发生事件接口方法

mouseEntered(MouseEventarg0)6鼠标进入指定区域发生事件接口方法

ouseExited(MouseEventarg0)7鼠标离开指定区域发生事件接口方法

mousePressed(MouseEventarg0)8按下鼠标时发生事件接口方法

mouseReleased(MouseEventarg0)9松开鼠标时发生事件接口方法10Main()程序运行的人口方法入口方法

沈阳大学

课程设计说明书NO.4

2.4.2MyCanvas.java类

(1)成员变量

表3MyCanvas成员变量表

序号名称变量类型备注1pictureIDint当前选择图片代号2stepNumInt游戏已走步数

(3)方法

表4MyCanvas方法表

序号名称功能备注1reLoadPictrue1()重新加载图片除去数字提示2reLoadPictrue2()重新加载图片除去数字提示3isFinish()检查拼图判断是否拼成4Start()重新排列对方格且将顺序打乱5mouseClicked(MouseEventarg0)单击鼠标发生事件接口方法6mouseEntered(MouseEventarg0)鼠标进入指定区域发生事件接口方法7mouseExited(MouseEventarg0)鼠标离开指定区域发生事件接口方法8mousePressed(MouseEventarg0)按下鼠标时发生事件接口方法9mouseReleased(MouseEventarg0松开鼠标时发生事件接口方法

2.4.3Cell.java类

(1)成员变量

表5Cell方法表

序号名称变量类型备注1serialVersionUIDfinal值是1L

沈阳大学

课程设计说明书NO.5

(2)方法

表6Cell方法表

序号名称功能

1Cell(Iconicon)规定拼图小块大小

2Cell(Stringn,Iconicon)实际为ICON

3move(Stringdirection,intsleep)实现拼图小块的移动3设计结果与分析

将3个Java源文件:

MyMainFrame.java、MyCanvas.java、Cell.java,以及所需要的名为imaage的文件夹的图像文件保存到E盘下的同一目录“09.12.27java编程”文件夹中。

分别编译这3个Java源文件,或运行“javac*.java”命令,编译全部的源文件,然后运行主类,即运行MyMainFrame.java类。

通过运行结果图可以看到在界面上方有一个按钮区,其中有数字提示,对于初玩者可以单击一下图块上就会出现数字提示,想去掉提示单击清除提示即可,image是个下拉框,根据自己的兴趣爱好选择自己喜欢的拼图进行游戏,单击start开始游戏。

在界面下方有一行游戏状态栏,显示了图片名称,步数,时间,以及状态,运行结果图3所示。

图3游戏初始界面

沈阳大学

课程设计说明书NO.6

单击start按钮开始游戏,界面自动加载并切割图片,玩家此时就可以通过鼠标来完成游戏了,单击空白区域旁边的图快就会移动,移动方向是向着空缺块移动,也就是说孔雀块四周都是可移动的块,而不是紧邻空缺块的图快则不能移动,结果如图4所示。

图4开始后的界面

沈阳大学

课程设计说明书NO.7

当玩家想有提示信息时可单击数字提示,单击后会在图块上出现带有顺序的数字,玩家可以通过数字更加容易的完成拼图游戏,如图5所示。

如果不想显示数字提示则可单击清除提示,结果则如同上图4所示。

图5数字提示界面图

在游戏中,玩家每移动一块图快,状态栏中的步数就会自动加1,并在游戏状态中显示出来,游戏完成时会弹出一个对话框,提示玩家完成拼图游戏并显示所用步数,完成游戏结果图如图6所示。

图6完成游戏对话框

沈阳大学

课程设计说明书NO.8

玩家若想换一个图片进行游戏,则可通过image下拉框实现,玩家可以根据自己的兴趣爱好进行选择,如图7所示

图7image下拉框

例如可以选择下拉框中的唯美,运行界面则如图8所示

图8唯美拼图界面

沈阳大学

课程设计说明书NO.9

4.设计体会

通过一周的JAVA课程设计,是我对JAVA语言有个更深的一层理解,这一学期的学习只是为我们引导了一个学习的方向,更深入的知识还需要我们自己去学习,而本次课程设计才让我体会到学习JAVA语言的困难和解决困难后的乐趣,开始对课程设计毫无头绪,题目不知道定什么,本人对游戏比较感兴趣,最后在坦克大战、俄罗斯方块、象棋和拼图游戏中选择了拼图游戏,个人觉得拼图游戏比较新颖,而且可以上传好看的图片,在枯燥的编程过程中增加了趣味性,使编程不再那么乏味,在本次拼图游戏中,我设计了数字提示功能,提高了游戏的友好性。

在程序运行时我遇到了相当大的困难,由于是三个源文件,还有一个image的文件夹,最初忘记应该把文件夹放在E盘下而费了好大周折,改正后,又忘记image文件夹应该放到源文件上级目录中,又折腾很久,最后在询问同学后终于解决了这个问题,成功运行出来了,当时心中的喜悦没人能够理解,总之课程设计在设计完成以后才会体验到快乐,并且锻炼了自己的动手和自学能力。

5.参考文献

[1]陈国君,陈磊,刘洋(Java2程序设计基础[M](北京:

清华大学出版社,2007.11:

221-286

[2]朱站立,沈伟.Java程序设计实用教程[M].北京:

电子工业出版社,2006.10:

134-187

[3]朱福喜,尹为民,余振坤等.Java语言与面向对象程序设计[M].武汉:

武汉大学出版社,2006.1:

97-128

[4]张思民,梁维娜(Java程序设计实践教程[M](北京:

清华大学出版社,2006.8:

24-68

沈阳大学

课程设计说明书NO.10

6.附录

(1)//MyMainFrame类

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.FlowLayout;

importjava.awt.Graphics;

importjava.awt.GridLayout;

importjava.awt.Image;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.ItemEvent;

importjava.awt.event.ItemListener;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjavax.swing.ButtonGroup;

importjavax.swing.ImageIcon;

importjavax.swing.JButton;

importjavax.swing.JComboBox;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.JRadioButton;

importjavax.swing.JTextField;

importjavax.swing.border.TitledBorder;

publicclassMyMainFrameextendsJFrameimplementsMouseListener{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

publicstaticMyCanvasmyCanvas;

//选择图片复选框

privateJLabelchoicePicL=newJLabel("Image:

");

privateString[]picName={"鲜橙","小企鹅","小猫","天使","SARAEVANS","唯一","

唯美","小女孩儿","海报","雪人儿","倾听","范冰冰"};;

privateJComboBoxjcbo1=newJComboBox(picName);

JButtonstart;

//盛放游戏信息的面板内容,(Framesouth)

privateJTextFieldname=newJTextField("图片名称:

picture1");

publicstaticJTextFieldstepInfor=newJTextField("步数:

0");

privateJTextFieldtimeInfor=newJTextField("时间:

00:

00:

00");

privateJTextFieldsituation=newJTextField("状态:

图片已载入");

//数字提示单选按钮

沈阳大学

课程设计说明书NO.11

publicJRadioButtonaddPicNum;

publicJRadioButtonclearPicNum;

publicMyMainFrame(){

myCanvas=newMyCanvas();

this.setTitle("09.12.31大拼图1");

this.setLocation(300,200);

this.setSize(1000,770);

this.setResizable(false);

this.setDefaultCloseOperation(3);

//放置按钮面板(Framenorth)

JPanelpanel1=newJPanel();

FlowLayoutflowLayout=newFlowLayout();

flowLayout.setAlignment(FlowLayout.LEFT);

panel1.setLayout(flowLayout);

start=newJButton("start");

addPicNum=newJRadioButton("数字提示",false);

clearPicNum=newJRadioButton("清除提示",true);

ButtonGroupaddNumGroup=newButtonGroup();

addNumGroup.add(addPicNum);

addNumGroup.add(clearPicNum);

panel1.setBackground(Color.pink);

start.setBackground(Color.pink);

addPicNum.setBackground(Color.pink);

clearPicNum.setBackground(Color.pink);

panel1.add(addPicNum);

panel1.add(clearPicNum);

panel1.add(choicePicL);

panel1.add(jcbo1);

panel1.add(start);

panel1.setBorder(newTitledBorder("按钮区"));

this.setLayout(newBorderLayout());

this.add(panel1,BorderLayout.NORTH);

//盛放游戏信息的面板(Framesouth)

JPanelpanel2=newJPanel();

name.setEditable(false);

stepInfor.setEditable(false);

timeInfor.setEditable(false);

situation.setEditable(false);

panel2.setLayout(newGridLayout(1,4));

panel2.add(name);

panel2.add(stepInfor);

panel2.add(timeInfor);

panel2.add(situation);

沈阳大学

课程设计说明书NO.12

//盛放原尺寸预览图面板

finalpreviewPanel2panel4=newpreviewPanel2();

panel2.setBorder(newTitledBorder("游戏状态"));

myCanvas.setBorder(newTitledBorder("拼图区"));

panel4.setBorder(newTitledBorder("原图预览"));

//盛放拼图和panel6的面板

JPanelpanel7=newJPanel();

panel7.setLayout(newGridLayout(1,2));

panel7.add(myCanvas,BorderLayout.WEST);

panel7.add(panel4,BorderLayout.EAST);

this.setLayout(newBorderLayout());

this.add(panel1,BorderLayout.NORTH);

this.add(panel7,BorderLayout.CENTER);

this.add(panel2,BorderLayout.SOUTH);

this.setVisible(true);

start.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

myCanvas.Start();

MyCanvas.stepNum=0;

situation.setText("状态:

游戏进行中。

");

stepInfor.setText("步数:

"+MyCanvas.stepNum);

}

});

addPicNum.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

myCanvas.reLoadPictrue2();

}

});

clearPicNum.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

myCanvas.reLoadPictrue1();

}

});

jcbo1.addItemListener(newItemListener(){

publicvoiditemStateChanged(ItemEventarg0){

//TODOAuto-generatedmethodstub

MyCanvas.pictureID=jcbo1.getSelectedIndex()+1;

myCanvas.reLoadPictrue1();

MyCanvas.stepNum=0;

stepInfor.setText("步数:

"+MyCanvas.stepNum);

panel4.repaint();

situation.setText("状态:

图片已载入。

");

沈阳大学

课程设计说明书NO.13

name.setText("图片名称:

"+jcbo1.getSelectedItem());

}

});

}

publicstaticvoidmain(String[]args){

//TODO自动生成方法存根

MyMainFramepintu=newMyMainFrame();

pintu.setVisible(true);

}

classpreviewPanel1extendsJPanel{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

publicpreviewPanel1(){

}

protectedvoidpaintComponent(Graphicsg){

super.paintComponents(g);

ImageIconpreview=newImageIcon("E:

/09.12.27java编程

/image/"+MyCanvas.pictureID+".jpg");

Imageviewer=preview.getImage();

g.drawImage(viewer,0,0,200,100,this);

}

}

classpreviewPanel2extendsJPanel{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

publicpreviewPanel2(){

}

protectedvoidpaintComponent(Graphicsg){

super.paintComponents(g);

ImageIconpreview=newImageIcon("E:

/09.12.27java编程

/imaage/"+MyCanvas.pictureID+".jpg");

Imageviewer=preview.getImage();

g.drawImage(viewer,20,20,450,600,this);

}

}

publicvoidmouseClicked(MouseEventarg0){

//TODOAuto-ge

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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