数字拼图游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽新华学院计科软件测试方法和技术
课程设计任务书
一、设计题目:数字拼图游戏(出题人:於世芳)
说明:一个拼图游戏。
二、目的与要求
1.目的
培养学生综合利用JAVA语言进行程序设计的能力,主要是培养学生利用JAVA的标准控件进行应用程序设计的技能。
2.基本要求
⏹能够实现拼图功能。
⏹可以通过初始化任意次的重新游戏。
⏹游戏完成后做出相应提示.
3.创新要求
在基本要求达到后,可以参考其他拼图游戏,进行创新设计,创新方向提示如下:
★将数字换成图片。
★可以记录游戏者成绩并排行
★增加暂停功能或窗口最小化时暂停计时。
三、设计方法和基本原理
1.问题描述
程序界面见题图。
2.问题的解决方案
①设计程序界面
因为用的全是基本控件,界面设计没有什么难度,这里涉及到动态添加控件数组,可参见课本控件数组一节内容。
②编写代码
代码包括事件处理过程和功能函数,还有必要的声明。变量声明部分声明本程序所需要的变量和数组。
事件处理包括下面的主要事件:
Form_Load()
作一些初始化的工作。主要是设定初始等级,动态添加控件数组。
Private Static Sub cmdButton_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
游戏运行。
cmd_Click( )
游戏初始化
其它功能的处理不再一一描述了
四、主要技术问题的描述
虽然界面操作有些复杂,但难点显然并不在于此。下面是初始化设置中的一段程序:package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextField;
//import mx.controls.Alert;
public class Main extends Sprite{
var arr:Array=new Array(1,2,3,4,5,6,7,8);
var ditu:Array=new Array(new Array(3),new Array(3),new Array(3));
var pailie:Array=new Array(new Array(0,0),new Array(40,0),new Array(80,0),
new Array(0,40),new Array(40,40),new Array(80,40),
new Array(0,80),new Array(40,80),new Array(80,80));
var rectObject:Array=new Array();
//
public function Main() {
// constructor code
init();
}
public function init():void{
var kuang:Sprite=new Sprite();
kuang.graphics.lineStyle(0,0x000000);
kuang.graphics.drawRect(0,0,120,120);
kuang.graphics.endFill();
kuang.x=200;
kuang.y=150;
addChild(kuang);
for(var i=0;i<3;i++){
for(var a=0;a<3;a++){
ditu[i][a]=1;
}
}
for(var b=0;b<8;b++){
var arrindex:uint=Math.floor(Math.random()*arr.length);
var arrvalue:uint=arr[arrindex];
arr.splice(arrindex,1);
var pailieindex:uint=Math.floor(Math.random()*pailie.length);
var pailievalue:Array=pailie[pailieindex];
pailie.splice(pailieindex,1);
var rect:RectShape=new RectShape(arrvalue);
rect.x=pailievalue[0];
rect.y=pailievalue[1];
rect.X=rect.x/40;
rect.Y=rect.y /40;
ditu[rect.x /40][rect.y/40]=0;
rect.mouseChildren=false;
rect.buttonMode=true;
rect.addEventListener(MouseEvent.CLICK,test);
kuang.addChild(rect);
rectObject.push(rect);
}
}
public function test(evt:Event):void{
var zuo:uint = evt.target.X - 1;
var you:uint = evt.target.X + 1;
var shang:uint = evt.target.Y - 1;
var xia:uint = evt.target.Y + 1;
//trace("当前的方块号码="+evt.target.num_txt.text);
if (zuo != 4294967295 && ditu[zuo][evt.target.Y] == 1)//4294967295 ????
{
ditu[evt.target.X][evt.target.Y] = 1;
ditu[zuo][evt.target.Y] = 0;
evt.target.X = zuo;
evt.target.x -= 40;
}
else if (you !=3 &&ditu[you][evt.target.Y]==1)
{