数字拼图游戏
郁郁寡欢造句-惊蛰吃什么
安徽新华学院计科软件测试方法和技术
课 程 设 计 任 务 书
一、设计题目:数字拼图游戏(出题人:於世芳)
说明:一个拼图游戏。
二、目的与要求
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 {
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),
import
import vent;
import
import eld;
import
public class Main
extends Sprite{
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() {
}
public function init():void{
var kuang:Sprite=new Sprite();
yle(0,0x000000);
ct(0,0,120,120);
l();
kuang.x=200;
kuang.y=150;
addChild(kuang);
for(var i=0;i<3;i++){
}
for(var b=0;b<8;b++){
var arrindex:uint=(()*);
var
arrvalue:uint=arr[arrindex];
(arrindex,1);
var pailieindex:uint=(()*);
var
pailievalue:Array=pailie[pailieindex];
(pailieindex,1);
var
rect:RectShape=new RectShape(arrvalue);
rect.x=pailievalue[0];
constructor
code
init();
for(var a=0;a<3;a++){
}
ditu[i][a]=1;
rect.y=pailievalue[1];
rect.X=rect.x40;
rect.Y=rect.y 40;
ditu[rect.x
40][rect.y40]=0;
hildren=false;
Mode=true;
ntListener(,test);
ld(rect);
(rect);
}
}
public function test(evt:Event):void{
var zuo:uint = .X - 1;
var you:uint = .X
+ 1;
var shang:uint = .Y - 1;
var
xia:uint = .Y + 1;
trace(当前的方块号码=
if (zuo != 4294967295 && ditu[zuo][.Y] ==
1)4294967295 ????
{
ditu[.X][.Y] = 1;
ditu[zuo][.Y] = 0;
.X = zuo;
.x
-= 40;
}
else if (you !=3
&&ditu[you][.Y]==1)
{
}
ditu[.X][.Y] = 1;
ditu[you][.Y] = 0;
.X = you;
.x += 40;
else if
(shang!=4294967295&&ditu[.X][shang]==1)4294967295
????
{
}
else if
(xia!=3&&ditu[.X][xia]==1)
{
}
trace(的长度是:
trace(rectObject[0].valueOf().num_);
for(var a=0;a<;a++){
var targetNum:String=_;
var
rectObjectNum:String=rectObject[a].valueOf().num_;
if(targetNum == rectObjectNum){
}
ditu[.X][.Y] = 1;
ditu[.X][shang] = 0;
.Y = shang;
.y -=
40;
ditu[.X][.Y] = 1;
ditu[.X][xia] = 0;
.Y = xia;
.y += 40;
trace(在数组为的位置是方块trace(此时x坐标为:,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 ==
}
if(
rectObjectNum ==
}
if( rectObjectNum
==
}
if( rectObjectNum ==
}
if( rectObjectNum ==
}
if(
rectObjectNum ==
}
if( rectObjectNum
==
a7=a;
a1=a;
a2=a;
a3=a;
a4=a;
a5=a;
a6=a;
}
if( rectObjectNum ==
}
if(ditu[2][2]==1){
if(r
ectObject[a1].valueOf().x==0&&rectObject[a1].value
Of().y==0
&&rectObject[a2].valueOf().x==40&&r
ectObject[a2].valueOf().y==0
&&rectObject[a3].
valueOf().x==80&&rectObject[a3].valueOf().y==0
&&rectObject[a4].valueOf().x==0&&rectObject[a4].v
alueOf().y==40
&&rectObject[a5].valueOf().x==4
0&&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
){
a8=a;
var
txtShow:TextField=new TextField();
txtShow.x=50;
txtShow.y=100;
=1000;
=孩子辛苦了吧!累的不行了吧!哈哈,你上当了!很兴
奋吧!那你明天请我吃饭!
Color=0x00ff00;
addChild(txtShow);
trace(孩子辛苦了吧!累的不行了吧!哈哈,你上当了!很兴奋吧!
那你明天请我吃饭!
}
break;
}
}
}
}
}
五、参考资料
★ Visual Basic 程序设计教程 及 Visual
Basic 实验教程
★ VB6.0程序员指南
★ VB6.0控件参考手册
★ 设计资料中的 “拼图.ZIP”
★
MSDN中文版,课程设计网站上提供的其它资料。