频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> 纯脚本的五子棋

纯脚本的五子棋

作者:未知  来源:转载  发布时间:2005-8-8 20:50:30  发布人:acx

减小字体 增大字体


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



/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();


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
上一篇文章:关于setInterval的应用
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· 无组件的数据库的备份与..
· Access数据库技术(01)..
· 测试客户端屏幕状况
· 中文虚拟域名实现(3) (环..
· DreamwaverMX与ASP.NET(..
· 微软扩大图书搜索服务 与..
· CGI教程(6)
· 用Photoshop打造ipod na..
· 操作Excel(C#)
· WindowsDNA与.net
· 中国网络视频业4年融资近..
· 流氓软件何以泛滥网络江..
· 将html源代码规范化,转..
· PS层样式详解:混合选项(..
· SQL导出到MYSQL
· ASP页面内VBScript和JSc..
相关文章
· 纯脚本的三维效果
· c#写的五子棋程序,供学习W..
· c#写的五子棋程序,供学习W..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号