主题:  怎么样用FLASH作拼图游戏?

鼠爸爸

职务:普通成员
等级:1
金币:0.0
发贴:4
注册:2003/12/8 14:11:18
#12003/12/8 14:39:58
请教各位高手们,在FLASH里怎样作拼图游戏。谢谢!



Chieftain

职务:管理员
等级:5
金币:10.0
发贴:3083
注册:2001/12/26 16:58:13
#22003/12/8 14:43:39
转flash develop 那里更适合,且有更多的高手..



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#32003/12/8 19:03:05
思想就是:判断是否每一块图都在自己的位置上(或者是在附近,因为人很精确的把图移到一个像素不差……恨faint阿)



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#42003/12/8 20:04:44
恩,就是这样~

Flash 动画



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#52003/12/8 20:08:48
活活活,教你一个BT的方法~~~~

做一个空MC,在他的时间轴上输入如下代码:

// 首先输出当前所有mc坐标代码
trace("//代码");
trace("with ("+this+"){");
for (var i in this) {
	if (this[i] instanceof MovieClip) {
		// 如果是mc就输出坐标
		trace("\t"+i+".目标x = "+this[i]._x);
		trace("\t"+i+".目标y = "+this[i]._y);
	}
}
trace("}");
depth = 0;
// MC层次
// 每回合判定状态
var 判定要求 = 10;
onEnterFrame = function () {
	var win = true;
	for (var i in this) {
		if (this[i] instanceof MovieClip) {
			if (this[i]._x-this[i].目标x>判定要求 || this[i].目标x-this[i]._x>判定要求 || this[i]._y-this[i].目标y>判定要求 || this[i].目标y-this[i]._y>判定要求) {
				win = false;
				break;
			}
		}
	}
	if (win) {
		_root.win();
	}
};
onMouseDown = function () {
	for (var i in this) {
		if (this[i].hitTest(_root._xmouse, _root._ymouse, true)) {
			this[i].swapDepths(depth++);
			startDrag(this[i]);
		}
	}
};
onMouseUp = function () {
	stopDrag();
};



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#62003/12/8 20:19:15
OK ,现在随便找张图放到这个mc里面,切成N块 MC 但是不要移动~整个图图还是完整的~~~运行~~~这个mc会自动检测自己内部的mc并且输出坐标代码~~于是就会自动输出类似这样的代码~~~

//代码
with (_level0.instance1){
    instance7.目标x = 17
    instance7.目标y = 109.8
    instance6.目标x = -175
    instance6.目标y = 15.55
    instance4.目标x = -175
    instance4.目标y = -100
    instance3.目标x = 17
    instance3.目标y = -100
    instance2.目标x = 135.5
    instance2.目标y = 6.4
}


这些就是胜利目标勒~~~
把它沾到主场景的时间轴上~~

这个mc会不停检测是否每个小图图的 _x 和 _y都很接近 目标x 和 目标y ,
如果都很接近,(看这个变量var 判定要求 = 10;)就调用_root.win();

然后在主场景上写一个win()函数,比如,你主场景第一帧stop,第二帧是胜利,就这样:
function win(){
gotoAndStop(2);
}

ok~~~运行看看~~~~恩,马上就胜利了~~~因为图图还在正确的位置嘛~~~
把图片弄乱~~~OK~~~搞定手工。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#72003/12/8 20:25:42


相关文件:点这儿打开



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#82003/12/8 21:35:36
很难,至今没发现良方。尤其是如何自动切图(拼图游戏应该允许用户自己选图)。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#92003/12/8 21:59:32
楼上的你说什么很难阿……?

- -用setMask可以实现自己选图



aaee1122

职务:普通成员
等级:1
金币:0.0
发贴:66
注册:2003/4/1 21:45:45
#102003/12/10 9:19:06
以前看过有用droptarget()写的,不过具体怎么样忘了。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#112003/12/10 10:28:34
DreadKnightOx在上个帖子中说
引用:
楼上的你说什么很难阿……?

- -用setMask可以实现自己选图

看来DreadKnightOx做过了,能否传上来,大家学习学习?图片能够根据游戏的难易级别自动切割成 x 块(简单)、y 块(难)、z 块(极难),并可以加上旋转吗?就象 Jigsaw 一样。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#122003/12/10 11:56:58
- -还没做过....



鼠爸爸

职务:普通成员
等级:1
金币:0.0
发贴:4
注册:2003/12/8 14:11:18
#132003/12/10 15:21:38
非常谢谢楼上各位了,能不能再进一步,像Authorwar里用目标区域交互那样,图片正确就停在那里,不正确就返回。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#142003/12/10 15:48:13
- -试着自己改。。