| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
简介动画制作过程
如何在powerpoint
揭开AS脚本中区分
Flash8 脚本助手试
用as创建的文本的
as2.0动作脚本语言
AS基础精典教程 第
AS基础精典教程 第
AS基础精典教程 第
纯脚本制作的满天

纯脚本的五子棋           

纯脚本的五子棋

作者:佚名 来源:闪吧 作者: orchin 更新:2007-1-13 20:49:08 错误报告 我要投稿

呵呵,今天下午写的一个五子棋,算法不好,是心血来潮想用简单的数组来比较价值,不过速度比直接算价值点要快,不过很笨,也没优化过,呵呵,看看喜欢玩算法的朋友有什么好的提议。



/Upload/2004_Pack/five2.swf

//画棋盘
function drawchessboard(){
_root.createEmptyMovieClip("chessboard",1);
with (chessboard) {
    lineStyle(2);
    beginFill(0xcc6600,100);
    moveTo(10,10);
    lineTo(10,390);
    lineTo(390,390);
    lineTo(390,10);
    lineTo(10,10);
    endfill();
    lineStyle(1,0x663300);
    for(i=1;i<=18;i++){
             k=i*20+10;
                      moveTo(10,k);
                      lineTo(390,k);
                      moveTo(k,10);
                      lineTo(k,390);
                                                 }
          }
chessboard.onRollOver=function(){
   };
}
//--初始化
function data_initialize(){
//-CHESS
_root.createEmptyMovieClip("chess",2);
swp=new Array();
mannum=100;
maxx=0;
maxy=0;
mathok=1;
vmap=["11111","01111","11110","10111","11011","11101","01110","11010","01011","00111","11100","01101","10110","00110","01100","00100","01000","00010","0100","00000"];
wmap=["22222","02222","22220","20222","22022","22202","02220","22020","02022","00222","22200","02202","20220","00220","02200","00200","02000","00020","0200","00000"];
pmap=[0,0,4,1,2,3,0,2,2,1,3,3,1,1,3,1,2,2,2,2];
   cmap=new Array();
for (i=1;i<19;i++){
    cmap[i]=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
                               }
}
//--弹出提示
function popwin(msgs){
_root.createEmptyMovieClip("popwindows",1000);
with (popwindows) {
    lineStyle(2,0xffffff,50);
    beginFill(0xcccccc,50);
    moveTo(0,0);
    lineTo(200,0);
    lineTo(200,100);
    lineTo(0,100);
    lineTo(0,0);
    endfill();
       }
popwindows.createTextField("popmsg",100,40,20,180,40);
popwindows.popmsg.text=msgs;
tf=new TextFormat();
tf.size=30;
tf.bold=true;
tf.color="0xff0000";
popwindows.popmsg.setTextFormat(tf);
popwindows._x=100;
popwindows._y=100;
}
//--估算人的落点
function mathp(){
tempk=100;
io=1;
jo=0;
   for(j=1;j<=18;j++){
      strline="";
      for(i=1;i<=18;i++){
         strline=strline+cmap[i][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(vmap[k]);
             if(l>=0 and k<tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=1+l*io;
             _root.tempy=j+l*jo;
                                                                };
                                                 };
                                  };
io=0;
jo=1;
   for(i=1;i<=18;i++){
      strline="";
      for(j=1;j<=18;j++){
         strline=strline+cmap[i][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(vmap[k]);
             if(l>=0 and k<tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=i+l*io;
             _root.tempy=1+l*jo;
                                                                };
                                                 };
                                  };
io=1;
jo=1;
   for(i=1;i<=14;i++){
      strline="";
      for(j=1;j<=19-i;j++){
         strline=strline+cmap[i+j-1][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(vmap[k]);
             if(l>=0 and k<tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=i+l*io;
             _root.tempy=1+l*jo;
                                                                };
                                                 };
                                  };
io=1;
jo=1;
   for(j=2;j<=14;j++){
      strline="";
      for(i=1;i<=19-j;i++){
         strline=strline+cmap[i][i+j-1].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(vmap[k]);
             if(l>=0 and k<tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=1+l*io;
             _root.tempy=j+l*jo;
                                                                };
                                                 };
                                  };
io=-1;
jo=1;
   for(i=5;i<=18;i++){
      strline="";
      for(j=1;j<=i;j++){
         strline=strline+cmap[i-j+1][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(vmap[k]);
             if(l>=0 and k<tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=i+l*io;
             _root.tempy=1+l*jo;
                                                                };
                                                 };
                                  };
io=-1;
jo=1;
   for(j=2;j<=14;j++){
      strline="";
      for(i=1;i<=19-j;i++){
         strline=strline+cmap[19-i][j+i-1].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(vmap[k]);
             if(l>=0 and k<tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=18+l*io;
             _root.tempy=j+l*jo;
                                                                };
                                                 };
                                  };
_root.tempv=tempk;
}
//--估算电脑的落点
function mathc(){
tempk=100;
io=1;
jo=0;
   for(j=1;j<=18;j++){
      strline="";
      for(i=1;i<=18;i++){
         strline=strline+cmap[i][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(wmap[k]);
             if(l>=0 and k<=tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=1+l*io;
             _root.tempy=j+l*jo;
                                                                };
                                                 };
                                  };
io=0;
jo=1;
   for(i=1;i<=18;i++){
      strline="";
      for(j=1;j<=18;j++){
         strline=strline+cmap[i][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(wmap[k]);
             if(l>=0 and k<=tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=i+l*io;
             _root.tempy=1+l*jo;
                                                                };
                                                 };
                                  };
io=1;
jo=1;
   for(i=1;i<=14;i++){
      strline="";
      for(j=1;j<=19-i;j++){
         strline=strline+cmap[i+j-1][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(wmap[k]);
             if(l>=0 and k<=tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=i+l*io;
             _root.tempy=1+l*jo;
                                                                };
                                                 };
                                  };
io=1;
jo=1;
   for(j=2;j<=14;j++){
      strline="";
      for(i=1;i<=19-j;i++){
         strline=strline+cmap[i][i+j-1].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(wmap[k]);
             if(l>=0 and k<=tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=1+l*io;
             _root.tempy=j+l*jo;
                                                                };
                                                 };
                                  };
io=-1;
jo=1;
   for(i=5;i<=18;i++){
      strline="";
      for(j=1;j<=i;j++){
         strline=strline+cmap[i-j+1][j].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(wmap[k]);
             if(l>=0 and k<=tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=i+l*io;
             _root.tempy=1+l*jo;
                                                                };
                                                 };
                                  };
io=-1;
jo=1;
   for(j=2;j<=14;j++){
      strline="";
      for(i=1;i<=19-j;i++){
         strline=strline+cmap[19-i][j+i-1].toString(10);
                                                 };
   for(k=0;k<20;k++){
   l=strline.indexOf(wmap[k]);
             if(l>=0 and k<=tempk){
         l=l+pmap[k];
             tempk=k;
             _root.tempx=18+l*io;
             _root.tempy=j+l*jo;
                                                                };
                                                 };
                                  };
_root.tempv=tempk;
}
//draw chessman
function drawman(manx,many,who){
chess.createEmptyMovieClip("newman",mannum);
mannum++;
with (chess.newman ) {
r=10;
lineStyle(1,0x000000,20);
moveTo(r+manx,many);
drawWay="radial";
if (who==1){
colorRange = [0xffffff, 0x88ccff];
}else{
colorRange = [0xffffff, 0x000000];
   };
alphaRange = [100,100];
ra = [0, 255];
colorChart = {matrixType:"box",x:(manx-(r)), y:(many-(r)), w:3*r, h:3*r, r:(45/180)*Math.PI};
beginGradientFill(drawway, colorRange, alphaRange, ra, colorChart);
for(i=1;i<=36;i++){
radius=i*10*math.PI/180;
lineto(r*math.cos(radius)+manx, r*math.sin(radius)+many);
                                                 };
endFill();
                                                 }
}
//放子函数
function placechess(Hp,Vp,Pcol){
    if(cmap[Hp][Vp]==0){
                cmap[Hp][Vp]=Pcol;
       px=Hp*20+10;
       py=Vp*20+10;
                drawman(px,py,Pcol);
       _root.ppsucc=1;
                                                                   };
}
//player turn
function playerturn(Pcol){
php=int(_xmouse / 20);
pvp=int(_ymouse / 20);
_root.ppsucc=0;
if (php>0 && php<19 && pvp>0 && pvp<19) {
   if(mathok==1) {mathok=1} else {mathok=1};
   Pcol=mathok;
   placechess(php,pvp,Pcol);
   }
if(_root.ppsucc==1){
   mathp();
   cu_k=_root.tempk;cu_x=_root.tempx;cu_y=_root.tempy;cu_who=1;
if (cu_k==0){
   popwin("你赢啦!");
       }else{
   mathc();
   if (_root.tempk<cu_k){
   cu_k=_root.tempk;cu_x=_root.tempx;cu_y=_root.tempy;cu_who=2;   
      }
   placechess(cu_x,cu_y,2);
   if(cu_k<=5 and cu_who==2){
      popwin("你输啦!");
                   }
                      }
                                                    }
}

//鼠标检测
_root.onMouseDown = function(){
   if(cu_k==0 || (cu_k<=5 and cu_who==2)){
             cu_k=1;
             cu_who=0;
    popwindows.removeMovieClip();
             data_initialize();
                }else{
             playerturn(1);
                                        }
                                                                               }
//初始化,开始
drawchessboard();
data_initialize();

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。