最近学习制作Flash游戏中!
遇到不会的了,请大虾给我段代码?
代码可以加注释最好不过!
首先开始时!
会有N张纸牌在里面,全部看不见是什么牌的,即是背面!
我点一张牌,他就会翻过来,而且看见是什么牌的了。
继续点第二张,如果和第一张的数字相同,就会对消。
如果不相同,那这两张牌就会翻回背面。
继而再开始上面的步罩。
大概实现上面的代码就行了,其它的我自己会完善。
flash纸牌记忆游戏源码,教教我!
答案:2 悬赏:60 手机版
解决时间 2021-03-09 00:29
- 提问者网友:末路
- 2021-03-08 21:38
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-03-08 22:46
1. 先创建一个影片剪辑"b",影片剪辑的第一帧画上一个"牌",这个牌是还没反过来的那种.(注册点在牌的左上角)
2. 在影片剪辑"b"的第2帧插入一个空白关键帧.
3. 创建一个新的影片剪辑"k",这个影片剪辑的每一帧就是一种以经翻过来的牌,也就是说,这里的每一帧上,你画上一个牌,每一帧都是一个不同的样式就好了.一共有多少种牌你自己决定.
4.回到影片剪辑"b"的编辑中,在空的第2帧上放上你的影片剪辑"k",最好让他和第一帧的"牌"重合(也就是播放起来不会抖动).
5.选中影片剪辑"b"的第一帧,按F9,在打开的动作面板中输入: stop();
6.选中影片剪辑"b"的第二帧中的那个影片剪辑"k",在属性面板的"实例名称"一栏填写"kid".然后,选中影片剪辑"b"第2帧以后的一帧(总之播放从2帧到这一帧的时间就是牌显示的时间,自己多试试就知道),按F5插入帧(注意不是关键帧!).
7.在"库"中选中影片剪辑"b",点右键,选"链接",在出现的对话框中,勾选第一项和第3项,并在"标识符"一栏填写"block".
8.回到主场景,选择你要开始游戏的那一帧(比如说第一帧),按F9,在打开的动作面板中输入(注意标点):
_root.h = 5;
_root.w = 4;
_root.k = 10;
_root.prox = 0;
_root.proy = 0;
_root.xscl = 10;
_root.yscl = 10;
_root.hei = 80;
_root.wid = 80;
//--------------------------------------------------------------------------
stop();
_root.score = 0;
_root.blocks = [];
_root.firx = 0;
_root.firy = 0;
for (i=1; i<=_root.w; i++) {
_root.blocks[i] = [];
for (j=1; j<=_root.h; j++) {
_root.blocks[i][j] = 0;
}
}
for (i=1; i<=_root.k; i++) {
var px = random(_root.w)+1;
var py = random(_root.h)+1;
while (_root.blocks[px][py]>0) {
px = random(_root.w)+1;
py = random(_root.h)+1;
}
_root.blocks[px][py] = i;
while (_root.blocks[px][py]>0) {
px = random(_root.w)+1;
py = random(_root.h)+1;
}
_root.blocks[px][py] = i;
}
for (i=1; i<=_root.w; i++) {
for (j=1; j<=_root.h; j++) {
with (_root) {
attachMovie("block", "block"+i+"/"+j, getNextHighestDepth(), {_x:prox+(j-1)*(wid+xscl), _y:proy+(i-1)*(hei+yscl),_height:_root.hei,_width:_root.wid});
}
_root["block"+i+"/"+j].px = i;
_root["block"+i+"/"+j].py = j;
_root["block"+i+"/"+j].k = _root.blocks[i][j];
_root["block"+i+"/"+j].onMouseDown = function() {
var xx = _root._xmouse;
var yy = _root._ymouse;
if((xx-this._x>0 && xx-this._x<_root.wid) && (yy-this._y>0 && yy-this._y<_root.hei)){
if (_root.firx == 0) {
this.gotoAndStop(2);
this.kid.gotoAndStop(this.k);
_root.firx = this.px;
_root.firy = this.py;
} else if (_root.firx == this.px && _root.firy == this.py) {
this.gotoAndStop(1);
_root.firx = 0;
_root.firy = 0;
} else {
if (_root.blocks[this.px][this.py] == _root.blocks[_root.firx][_root.firy]) {
_root.score++;
_root["block"+_root.firx+"/"+_root.firy].removeMovieClip();
_root.firx = 0;
_root.firy = 0;
if(_root.score >= _root.k){
_root.gotoAndStop(【这里写上游戏胜利后主场景将要跳转的帧数】);
}
this.removeMovieClip();
} else {
_root["block"+_root.firx+"/"+_root.firy].play();
_root.firx = 0;
_root.firy = 0;
this.gotoAndPlay(2);
this.kid.gotoAndStop(this.k);
}
}
}
};
}
}
在虚线前的语句你都可以改等号之后的数字:
h -- "牌"矩阵的横个数;
w -- "牌"矩阵的纵个数;
k -- "牌"的种类,每个种类将会创建一对牌;
(注意!!!对于这3个量,你必须满足: h*w = 2*k 否则将会使得flash卡掉!)
prox -- 牌矩阵的左上角横坐标.
proy -- 牌矩阵的左上角纵坐标.
xscl -- 牌的横坐标间距.
yscl -- 牌的纵坐标间距.
hei -- 牌的高度.
wid -- 牌的宽度.
还有,黑色框框中的东西也要你自己改....
好了,这样就应该和你说的差不多了。你看看还有没什么不对的地方?或者你给个邮箱什么的,我把文件发过去给你也行。
题外话:这个是我手工打了半个小时的。。。怎么样也得加点分吧。。。
2. 在影片剪辑"b"的第2帧插入一个空白关键帧.
3. 创建一个新的影片剪辑"k",这个影片剪辑的每一帧就是一种以经翻过来的牌,也就是说,这里的每一帧上,你画上一个牌,每一帧都是一个不同的样式就好了.一共有多少种牌你自己决定.
4.回到影片剪辑"b"的编辑中,在空的第2帧上放上你的影片剪辑"k",最好让他和第一帧的"牌"重合(也就是播放起来不会抖动).
5.选中影片剪辑"b"的第一帧,按F9,在打开的动作面板中输入: stop();
6.选中影片剪辑"b"的第二帧中的那个影片剪辑"k",在属性面板的"实例名称"一栏填写"kid".然后,选中影片剪辑"b"第2帧以后的一帧(总之播放从2帧到这一帧的时间就是牌显示的时间,自己多试试就知道),按F5插入帧(注意不是关键帧!).
7.在"库"中选中影片剪辑"b",点右键,选"链接",在出现的对话框中,勾选第一项和第3项,并在"标识符"一栏填写"block".
8.回到主场景,选择你要开始游戏的那一帧(比如说第一帧),按F9,在打开的动作面板中输入(注意标点):
_root.h = 5;
_root.w = 4;
_root.k = 10;
_root.prox = 0;
_root.proy = 0;
_root.xscl = 10;
_root.yscl = 10;
_root.hei = 80;
_root.wid = 80;
//--------------------------------------------------------------------------
stop();
_root.score = 0;
_root.blocks = [];
_root.firx = 0;
_root.firy = 0;
for (i=1; i<=_root.w; i++) {
_root.blocks[i] = [];
for (j=1; j<=_root.h; j++) {
_root.blocks[i][j] = 0;
}
}
for (i=1; i<=_root.k; i++) {
var px = random(_root.w)+1;
var py = random(_root.h)+1;
while (_root.blocks[px][py]>0) {
px = random(_root.w)+1;
py = random(_root.h)+1;
}
_root.blocks[px][py] = i;
while (_root.blocks[px][py]>0) {
px = random(_root.w)+1;
py = random(_root.h)+1;
}
_root.blocks[px][py] = i;
}
for (i=1; i<=_root.w; i++) {
for (j=1; j<=_root.h; j++) {
with (_root) {
attachMovie("block", "block"+i+"/"+j, getNextHighestDepth(), {_x:prox+(j-1)*(wid+xscl), _y:proy+(i-1)*(hei+yscl),_height:_root.hei,_width:_root.wid});
}
_root["block"+i+"/"+j].px = i;
_root["block"+i+"/"+j].py = j;
_root["block"+i+"/"+j].k = _root.blocks[i][j];
_root["block"+i+"/"+j].onMouseDown = function() {
var xx = _root._xmouse;
var yy = _root._ymouse;
if((xx-this._x>0 && xx-this._x<_root.wid) && (yy-this._y>0 && yy-this._y<_root.hei)){
if (_root.firx == 0) {
this.gotoAndStop(2);
this.kid.gotoAndStop(this.k);
_root.firx = this.px;
_root.firy = this.py;
} else if (_root.firx == this.px && _root.firy == this.py) {
this.gotoAndStop(1);
_root.firx = 0;
_root.firy = 0;
} else {
if (_root.blocks[this.px][this.py] == _root.blocks[_root.firx][_root.firy]) {
_root.score++;
_root["block"+_root.firx+"/"+_root.firy].removeMovieClip();
_root.firx = 0;
_root.firy = 0;
if(_root.score >= _root.k){
_root.gotoAndStop(【这里写上游戏胜利后主场景将要跳转的帧数】);
}
this.removeMovieClip();
} else {
_root["block"+_root.firx+"/"+_root.firy].play();
_root.firx = 0;
_root.firy = 0;
this.gotoAndPlay(2);
this.kid.gotoAndStop(this.k);
}
}
}
};
}
}
在虚线前的语句你都可以改等号之后的数字:
h -- "牌"矩阵的横个数;
w -- "牌"矩阵的纵个数;
k -- "牌"的种类,每个种类将会创建一对牌;
(注意!!!对于这3个量,你必须满足: h*w = 2*k 否则将会使得flash卡掉!)
prox -- 牌矩阵的左上角横坐标.
proy -- 牌矩阵的左上角纵坐标.
xscl -- 牌的横坐标间距.
yscl -- 牌的纵坐标间距.
hei -- 牌的高度.
wid -- 牌的宽度.
还有,黑色框框中的东西也要你自己改....
好了,这样就应该和你说的差不多了。你看看还有没什么不对的地方?或者你给个邮箱什么的,我把文件发过去给你也行。
题外话:这个是我手工打了半个小时的。。。怎么样也得加点分吧。。。
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-03-08 22:54
任务占坑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯