安徽新华学院计科软件测试方法和技术课程设计任务书一、设计题目:数字拼图游戏(出题人:於世芳)说明:一个拼图游戏。
二、目的与要求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 codeinit();}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){ditu[evt.target.X][evt.target.Y] = 1;ditu[you][evt.target.Y] = 0;evt.target.X = you;evt.target.x += 40;}else if (shang!=4294967295&&ditu[evt.target.X][shang]==1)//4294967295 ???? {ditu[evt.target.X][evt.target.Y] = 1;ditu[evt.target.X][shang] = 0;evt.target.Y = shang;evt.target.y -= 40;}else if (xia!=3&&ditu[evt.target.X][xia]==1){ditu[evt.target.X][evt.target.Y] = 1;ditu[evt.target.X][xia] = 0;evt.target.Y = xia;evt.target.y += 40;}//trace("rectObject的长度是:"+rectObject.length);//trace(rectObject[0].valueOf().num_txt.text);for(var a=0;a<rectObject.length;a++){//var targetNum:String=evt.target.num_txt.text;var rectObjectNum:String=rectObject[a].valueOf().num_txt.text;//if(targetNum == rectObjectNum){//trace("在数组为"+a+"的位置是方块"+rectObjectNum);//trace("此时x坐标为:"+evt.target.x+",y坐标为:"+evt.target.y);//}var a1:uint;var a2:uint;var a3:uint;var a4:uint;var a5:uint;var a6:uint;var a7:uint;var a8:uint;if( rectObjectNum == "1"){ a1=a;}if( rectObjectNum == "2"){ a2=a;}if( rectObjectNum == "3"){ a3=a;}if( rectObjectNum == "4"){ a4=a;}if( rectObjectNum == "5"){ a5=a;}if( rectObjectNum == "6"){ a6=a;}if( rectObjectNum == "7"){ a7=a;if( rectObjectNum == "8"){a8=a;}if(ditu[2][2]==1){if(rectObject[a1].valueOf().x==0&&rectObject[a1].valueOf().y==0&&rectObject[a2].valueOf().x==40&&rectObject[a2].valueOf().y==0&&rectObject[a3].valueOf().x==80&&rectObject[a3].valueOf().y==0&&rectObject[a4].valueOf().x==0&&rectObject[a4].valueOf().y==40&&rectObject[a5].valueOf().x==40&&rectObject[a5].valueOf().y==40&&rectObject[a6].valueOf().x==80&&rectObject[a6].valueOf().y==40&&rectObject[a7].valueOf().x==0&&rectObject[a7].valueOf().y==80){var txtShow:TextField=new TextField();txtShow.x=50;txtShow.y=100;txtShow.width=1000;txtShow.text="孩子辛苦了吧!累的不行了吧!哈哈,你上当了!很兴奋吧!那你明天请我吃饭!";txtShow.borderColor=0x00ff00;addChild(txtShow);// trace("孩子辛苦了吧!累的不行了吧!哈哈,你上当了!很兴奋吧!那你明天请我吃饭!");break;}}}}}}五、参考资料★Visual Basic 程序设计教程及Visual Basic 实验教程★VB6.0程序员指南★VB6.0控件参考手册★设计资料中的“拼图.ZIP”★MSDN中文版,课程设计网站上提供的其它资料。