魔板游戏(内含源代码)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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梦");

相关文档
最新文档