用FLASH制作单机版围棋(AS2.0)
这段时间用FLASH做了个单机版的围棋,业余初学水平。只求与实物的用法能相同,能让您看它顺一些,玩起来能顺一些,我的目的就达成了。
说说我做这个的思路:
1.制作的效果。
黑棋先,一人轮流着下一颗棋子,一方不能连着多下。双方都可以悔棋,也可以清盘,即一次性把所有的棋子和记录步数的数字一起删除,回到原始状态。还可以提子,用鼠标对着棋子点一下棋子就会消失。
2.玩法。
一台电脑,一人一个鼠标,与现实下棋相同,鼠标点住棋篓里的棋子移到目的地松开,棋子会自动附着在横轴与纵轴的交点上,且棋子的圆心和数字都与交点重合,放开后棋子就不能移动了。
3.准备材料。
一个棋盘,两个装棋子的篓子,黑白两种棋子,两个悔棋按钮(黑白棋各一),一个空按钮(播放时看不见的按钮)就这些。见下面图示。
4.制作方法。
(1)棋盘和棋子的规格。为了计算方便,我将小方格的线段长设置成40,与棋子的直径相同。棋盘由横竖各19条长720的线条交叉而成,且棋盘在主场景的坐标:100*100(棋盘和棋子都可在主场景上画,画好再转换成元件)。
棋子的画法:在主场景上画一个圆,不要笔触,颜选黑的放射状,这样有立方感,当然也可以纯黑;做好后复制一个,颜选白的放射状,也可以纯白。再分别右击它们,选转换为元件。黑棋实例名称:heiqi。白棋实例名称:baiqi。双击打开元件,分别将它们的坐标改为X:-20  Y:-20。
按钮的画法:这次要做三个按钮。插入元件,名称“黑悔棋”,属性选择按钮,确定。在第一帧写上“悔棋”两个字,选好字体、字号,颜为黑,坐标X、Y都为0,再插入图层,画一个与主场景底相同的长方形,它的大小与那两字的大小一样就行,坐标X、Y也是0,将图层2拖到图层1的下面。然后在“库”里右击该按钮选择直接复制,名称改为“白悔棋”。双击打开,将悔棋两字改为白。两个悔棋按钮好了接下来要画第三个按钮,点插入元件,名称“空白按钮”,属性按钮,确定。这次要做的是播放时不显示的按钮,第1-3帧不操作,在
第4帧上,插入空白关键帧,画一个宽和高都为60的长方形。颜可以任意。坐标X、Y为0。
5.语句的写法。
回到主场景,调整黑白棋的位置(我的黑棋是843*855,白棋70*50,语句中要用到这两个坐标)以及和棋篓的关系,接着在棋盘的左边输入“清盘”二字,属性选“静态文本”,然后对它右击转换成元件,实例名称:qp。再次点文本工具,这次要拉一个文本框,属性选“动态文本”,实例名称:t1,大小是16*15,字号:14,字体:楷体,颜:黑。将它拉到底下不碍人的地方就行,然后将它复制一个,实例名称:t2,颜:白,别的不用改。这些做完后锁定这个图层,再新建一个图层,新建的这个图层专门用来放置按钮和给主时间轴写语句的。把“空白按钮”从库中拖到黑棋子和白棋子的上面,再拖一个放到“清盘”的上面,分别调整好它们各自的位置,然后在主时间轴和这三个按钮上写上语句(可以复制我写好的),最后把两个悔棋按钮一个个地拖出来,拖一个就给它写上语句,两个的语句都写完了,就调整它的位置,它们的坐标必须完全相同。(注意这两个按钮,放在主场景时是重叠在一起的,除了字的颜不同,别的什么都要一样)。黑悔棋的实例名称为:huiqi1,白悔棋的实例名称为:huiqi2。
以下是我写好的语句:
清盘按钮的语句:
on (press) {
    for (var p=1;p<=n;p++) {
        removeMovieClip(_root["baizi"+p]);
    }
    for (var p=1;p<=i;p++) {
        removeMovieClip(_root["heizi"+p]);
    }
    for (var p=1;p<=i;p++) {
        this["t1"+p].text ="";
    }
    for (var p=1;p<=i;p++) {
        this["t2"+p].text="";
    }   
}
on (release) {
    if (i==1&&n==1) {
        heian._visible=false;
        baian._visible=true;
        huiqi1._visible=false;
        huiqi2._visible=false;
        qp._visible=false;
制作flash       
    } else {
        heian._visible=true;
        baian._visible=false;
        var n =1;
        var i =1;
        var o =1;
        var q =1;
    }
}
主时间轴的语句:
var i =1;
var n =1;
var o =1;
var q =1;
baian._visible=false;
huiqi1._visible=false;
huiqi2._visible=false;
qp._visible=false;
function rm () {
    this["heizi"+i].onPress =function  () {
    this._visible =false;
}
}
function rn () {
    this["baizi"+n].onPress =function  () {
    this._visible =false;
}
}
黑棋按钮的语句:
on (press) {
    heizi.startDrag(false);   
    baian._visible=true;
    huiqi1._visible=true;
    qp._visible=true;
}
on (release, releaseOutside) {
    duplicateMovieClip(heizi,"heizi"+i,i);
    duplicateMovieClip(t1,"t1"+o,o+1000);
    this["t1"+o].text =o*2-1;
    this["heizi"+i]._x =this["heizi"+i]._x-(this["heizi"+i]._x)%40+20;
    this["heizi"+i]._y =this["heizi"+i]._y-(this["heizi"+i]._y)%40+20;
    this["t1"+o]._x =this["heizi"+i]._x-7;
    this["t1"+o]._y =this["heizi"+i]._y-8;
    heizi.stopDrag();
    heizi._x = 843;
    heizi._y = 885;
    rm();
i++;
o++;
heian._visible=false;
huiqi2._visible=false;
huiqi1._visible=true;
}
on (release) {
    heizi.stopDrag();
}
白棋按钮的语句:
on (press) {
    baizi.startDrag(false);
    heian._visible=true;
}
on (release, releaseOutside) {
    duplicateMovieClip(baizi,"baizi"+n,n+300);
    duplicateMovieClip(t2,"t2"+q,q+1500);
    this["t2"+q].text =q*2;
    this["baizi"+n]._x =this["baizi"+n]._x-(this["baizi"+n]._x)%40+20;
    this["baizi"+n]._y =this["baizi"+n]._y-(this["baizi"+n]._y)%40+20;
    this["t2"+q]._x =this["baizi"+n]._x-7;
    this["t2"+q]._y =this["baizi"+n]._y-8;
    baizi.stopDrag();
    baizi._x = 70;
    baizi._y = 50;
    rn();
n++;
q++;
baian._visible=false;
huiqi1._visible=false;
huiqi2._visible=true;
}
on (release) {
    baizi.stopDrag();
}