魔板游戏(内含源代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XX学院计算机科学与技术系
实验报告
课程名称程序设计基础实验(2)
实验项目应用系统的面向对象设计与分析
实验类型综合性实验
完成人
所在班级
指导教师
完成日期2009年11月30 日
目录
一、实验报告简表 (02)
二、设计内容与要求 (02)
1、设计内容
2、设计要求
三、总体设计 (03)
1、需求分析
2、功能描述
3、设计工具与运行环境
4、类及类间关系描述
四、详细设计 (05)
1、类图
2、源代码
五、实例运行及应用效果 (20)
1、魔板游戏界面
2、测试游戏及输出结果
六、体会与总结 (24)
实验报告正文
一.实验报告简表
二.设计内容与要求
1、设计内容:
用面向对象的Java程序设计语言开发设计GUI界面的魔板游戏程序。
2、设计要求:
(1)、魔板由3*3或4*4的方格组成,其中一个格子是空的。对于3*3的魔板,其他格子里随机放置8个编号为0-7的方块;对于4*4的魔板,其他格子里随即放置15个编号为0-14的方块,如果是n*n的方格原理相同。
(2)、用鼠标单击任何与格子相邻的方块可以把该方块移入空格子。通过不断地移动方块,可以将方块一行一行按数字顺序依次排序。
(3)、魔板游戏也可以使用图像来代替数字,对于3*3的魔板,将图像分成3*3个方块,打乱顺序后,放入魔板,并将其中一个方格置为空。最终目标是通过移动方块来恢复为原始图像。4*4的魔板与3*3的方法相似。
三.总体设计
1、需求分析:
魔板游戏就是大家以前常玩的拼板游戏!就是将一幅完整的图片分成小块,打乱顺序,再拼好,并且只能将图块和临界的空格交换位置。用最短的时间和最省的步骤将图形拼好,此玩法虽然简单,但特别考验智力,魔板游戏与魔方游戏相似属于益智游戏。
此项目我们需要通过面向对象的Java程序设计来实现,游戏设计中需要用到GUI图形界面的设计,产生随机数生成打乱的图片,各种事件(动作事件、鼠标事件和窗口事件等)的响应和处理等面向对象的
知识来实现游戏的各项功能。
2、功能描述:
我们所完成的魔板游戏可以实现基本的魔板游戏的功能。此项目魔板游戏可由用户选择3*3和4*4两个不同难度,N*N的魔板游戏原理与此相同,游戏可以通过下拉列表实现选择不同的游戏图像,增加游戏的趣味性。点击“开始游戏”按钮后可以实现游戏步骤的计数,拼图右边有一个完整的图像可以供用户参照,用鼠标单击任何与格子相邻的方块可以把该方块移入空格子。通过不断地移动方块,可以将方块一行一行按数字或图片依次拼图。若成功完成拼图(即左边的拼图与右边的参照图像一样),则有提示:“恭喜您,成功完成”的字样出现。
3、设计工具与运行环境:
(1)、设计工具:Editplus。
(2)、运行环境:JDKj1.6.0_17,Windows XP。
4、类及类间关系描述:
此游戏项目创建了两个类:MobanFrame类和MobanSquare类,其中MobanFrame类调用MobanSquare类。
四.详细设计(包括类图及源代码)1、类图:
2、源代码:
MobanFrame类:
import java.awt.*;
import java.awt.event.*;
import .*;
import java.applet.Applet;
import javax.imageio.ImageIO;
import java.io.File;
import java.awt.image.*;
import javax.swing.JOptionPane;
public class MobanFrame extends Frame implements ActionListener,MouseListener,ItemListener
{
MobanSquare[][] position; //声明方块
Point startPoint=new Point(110,120); //绘制左边图像的起始点
Point rightStartPoint=new Point(450,120); //绘制右边图像的起始点
int[] num; //存储随机数的数组
Point[] pointMove;
int totalStep=0; //总共已走的步数
String selectedImage="金牛座"; //当前选中的要游戏图像
String gamingImage=" "; //正在游戏的图像
boolean startGame=false;
int squareNumber=3;
int level=1; //游戏等级
int squareSize=80;
Image sourceImage; //游戏图像的来源图像
Image spaceSourceImage; //空格图像的来源图像
Image spaceImage;
Image[] myImage; //存储打乱的图像的数组
Graphics2D ggg ;
/*--------------------*/
/*显示在界面上的一些组件*/
/*--------------------*/
TextField tfx;
TextField tfy;
MenuBar mnbMyMenuBar;
Menu mnChooseLevel;
MenuItem mniLevel1, mniLevel2;
Label lbStep; //显示所走的步数
Label lbSuccess=new Label("");
Button btnStartGame;
Choice chChoiceImage;
public MobanFrame()
{
super("魔板游戏");
pointMove=new Point[4]; //方块可以移动的四个方向
pointMove[0]=new Point(-1,0);
pointMove[1]=new Point(1,0);
pointMove[2]=new Point(0,-1);
pointMove[3]=new Point(0,1);
setLayout(new FlowLayout());
chChoiceImage=new Choice();
chChoiceImage.add("金牛座");
chChoiceImage.add("迈克尔乔丹");
chChoiceImage.add("多啦a梦");