当前位置: 首页 > news >正文

太原网站建设价格印度网站域名

太原网站建设价格,印度网站域名,杭州建设网双标化工地2022年,佛山网站开发公司电话五子棋游戏禁手算法的改进 五子棋最新的禁手规则#xff1a; 1#xff0e;黑棋禁手判负、白棋无禁手。黑棋禁手有“三三”#xff08;包括“四三三”#xff09;、“四四”#xff08;包括“四四三”#xff09;和“长连”。黑棋只能以“四三”取胜。 2#xff0e;黑方…五子棋游戏禁手算法的改进 五子棋最新的禁手规则 1黑棋禁手判负、白棋无禁手。黑棋禁手有“三三”包括“四三三”、“四四”包括“四四三”和“长连”。黑棋只能以“四三”取胜。 2黑方五连与禁手同时形成判黑方胜。 3黑方禁手形成时白方应立即指出。若白方在之后继续落子则禁手失效此后指出禁手也不判黑方负。 注意本条仅限于“三三”和“四四”禁手点黑方走出的长连则不同在对局结束前白方无论何时指出黑方出现长连都判白方胜。 禁手设置算法 禁手有三种基本形即三三禁手和四四禁手以及长连禁手。 另外还有三三四四四三类禁手以及一些特殊形态的禁手。 三三禁手形态00 10100       0 x K x 1 x 0                            00 1100         0 x K 1 x  0                            0 10010         0 K x x 1  0 四四禁手形态00 11100       0 x K 1 1 x  0                            0 11010         0  K 1 x 1  0                            0 10110         0  K x 1  1  0   K  是遍历搜索点if (K1) 黑子时  x  点位就是三连和四连的禁手点位。 用遍历搜索算法按15 * 15 棋盘点位pn ( 1 -225 ) 分四个方向搜索即左右上下右斜斜左。遇黑子则计算加权分赋100分值。此方法可减少计算量无黑子位不计算。三三四四各形态同时搜索查验加权计算一次遍历加权计分最后查验加权分情况超过100分的点位就是禁手点位。如有超过200分的情况就是三三四和四四三禁手。 长连禁手设置在判胜负函数detect()时黑棋超过五连即是长连禁手判黑负白棋胜。 有一些特殊的形态如扁担阵暂不设置。此程序是简版完整版本要全面设置。 代码中有显示计算的分值点标记黄色是100分的点位紫色是超过100分的点位即禁手点位。这是测试算法时用来查看的应用时可注释掉。 此算法是基本的算法优点是简单和易于理解。 黑棋如设置禁手要想获胜就只有活四和嵌五还有就是冲四活三原先发布的博文有bug当时较仓促算法测试不充分忽略了冲四活三的情况。今就此补充修正代码。 这里有个巧妙的算法在原代码上改一下就成了。算法是三三计权分仍然是100而四四的计权分改为110这样三三禁手分是200四四禁手分是220如是三三四就310分四四三就320分          if ( js[i]110 js[i]!210 ) {  ......   } 这样计分大于110就触发禁手而若等于210分就是冲四活三必胜点。 图例 黄色点是计分点紫色点是禁手点 restrict_move ( ) {  //禁手设置  //黑棋禁手加权计算查找    for (i1;i225;i) {  js[i]0 ;    }  //init scan  //三三禁手01010 此情况中间为可成三三的交点  //此点记100若有两个三三此点就计分200  //即禁手点位黑棋若下子即可判负   for (i1;i15;i){    //遍历scan 黑子   for (j1;j15;j){                k(i-1)*15j ;    //pn(n) number   //三三禁手形 0 0  1  010 0,  k前后 0位计权  //两边为空中间可成活三有子是假活三      if (pn[k]1){  // scan B (k)       if (pn[k-1]0pn[k1]0pn[k2]1pn[k3]0){         js[k1] js[k1]100 ;       if ( pn[k-2]0)  js[k-1] js[k-1]100 ;         if (pn[k4]0)  js[k3] js[k3]100 ;          if ( pn[k-2]1pn[k4]1) { //101(0)101四四的特殊情况             js[k1] js[k1]200 ;   }     }//左右          if (pn[k-15]0pn[k15]0pn[k30]1pn[k45]0){            js[k15] js[k15]100 ;          if ( pn[k-30]0) js[k-15] js[k-15]100 ;          if (pn[k60]0) js[k45] js[k45]100 ;          if ( pn[k-30]1pn[k60]1) { //四四              js[k15] js[k15]200 ;   }     }//上下 if (pn[k-14]0pn[k14]0pn[k28]1pn[k42]0){             js[k14] js[k14]100 ;        if ( pn[k-28]0) js[k-14] js[k-14]100 ;          if (pn[k56]0) js[k42] js[k42]100 ;          if ( pn[k-28]1pn[k56]1) {  //四四             js[k14] js[k14]200 ;   }     }//斜左 if (pn[k-16]0pn[k16]0pn[k32]1pn[k48]0){             js[k16] js[k16]100 ;          if ( pn[k-32]0) js[k-16] js[k-16]100 ;          if (pn[k64]0) js[k48] js[k48]100 ;          if ( pn[k-32]1pn[k64]1) { //四四             js[k16] js[k16]200 ;   }     }//右斜 }  //00 1 0100  四四 1(0)101的特殊情况 //禁手形 00  1  100 ,  k前后 0位计权    if (pn[k]1){  //scan B (k)    if (pn[k-1]0pn[k1]1pn[k2]0){           if (pn[k-2]0) js[k-2] js[k-2]100 ;            if (pn[k-2]0) js[k-1] js[k-1]100 ;            if (pn[k3]0) js[k2] js[k2]100 ;        if (pn[k3]0) js[k3] js[k3]100 ;   }  //左右 if (pn[k-15]0pn[k15]1pn[k30]0){           if (pn[k-30]0) js[k-30] js[k-30]100 ;            if (pn[k-30]0) js[k-15] js[k-15]100 ;            if (pn[k45]0)  js[k30] js[k30]100 ;        if (pn[k45]0) js[k45] js[k45]100 ;   }  //上下           if (pn[k-14]0pn[k14]1pn[k28]0){          if (pn[k-28]0)  js[k-28] js[k-28]100 ;           if (pn[k-28]0) js[k-14] js[k-14]100 ;            if (j12pn[k42]0) js[k28] js[k28]100 ;       if (pn[k42]0) js[k42] js[k42]100 ;   }  //斜左 if (pn[k-16]0pn[k16]1pn[k32]0){           if (pn[k-32]0) js[k-32] js[k-32]100 ;            if (pn[k-32]0) js[k-16] js[k-16]100 ;            if (pn[k48]0) js[k32] js[k32]100 ;       if (pn[k48]0) js[k48] js[k48]100 ;   }  //右斜               }   //00 1 100 //禁手形 0 1  0010 ,  中间 0位计权    if (pn[k]1){  //scan B (k)    if (pn[k-1]0pn[k1]0pn[k2]0pn[k3]1pn[k4]0){           js[k1] js[k1]100 ;            js[k2] js[k2]100 ;   }  //左右    if (pn[k-15]0pn[k15]0pn[k30]0pn[k45]1pn[k60]0){           js[k15] js[k15]100 ;            js[k30] js[k30]100 ;   }  //上下    if (pn[k-14]0pn[k14]0pn[k28]0pn[k42]1pn[k56]0){           js[k14] js[k14]100 ;            js[k28] js[k28]100 ;   }  //斜左    if (pn[k-16]0pn[k16]0pn[k32]0pn[k48]1pn[k64]0){           js[k16] js[k16]100 ;            js[k32] js[k32]100 ;   }  //右斜            }  //010010 //四四禁手算法同三三禁手 //四四禁手形 00 1 1100 ,  前后 0 位计权 //更正冲四加活三不是禁手!! add 110分 //加特殊禁手 111 0 x 0 111   if (pn[k]1){  //scan B (k)    if (pn[k1]1pn[k2]1){        if (pn[k-2]0pn[k-1]0){ js[k-1] js[k-1]110 ;   js[k-2] js[k-2]110 ;  }      if (pn[k3]0pn[k4]0){           js[k3] js[k3]110 ; js[k4] js[k4]110 ;  }     }  //左右 if (pn[k15]1pn[k30]1){         if (pn[k-30]0pn[k-15]0){ js[k-15] js[k-15]110 ;   js[k-30] js[k-30]110 ;  }        if (pn[k45]0pn[k60]0){            js[k45] js[k45]110 ;    js[k60] js[k60]110 ;  }    }  //上下 if (pn[k14]1pn[k28]1){         if (pn[k-28]0pn[k-14]0){ js[k-14] js[k-14]110 ;   js[k-28] js[k-28]110 ;  }        if (pn[k42]0pn[k56]0){            js[k42] js[k42]110 ;    js[k56] js[k56]110 ;  }    }  //斜左 if (pn[k16]1pn[k32]1){          if (pn[k-32]0pn[k-16]0){ js[k-16] js[k-16]110 ;   js[k-32] js[k-32]110 ;  }        if (pn[k48]0pn[k64]0){             js[k48] js[k48]110 ;    js[k64] js[k64]110 ;  }    }  //右斜           }  //0 1 110   ( 111 0x0 111 ) //四四禁手形 0 1 1010 ,  0 1 0110 前后 0 位计权    if (pn[k]1){  //scan B (k)    if (pn[k-1]0pn[k1]0pn[k3]1pn[k4]0){       if (pn[k1]0pn[k2]1)js[k1] js[k1]110 ;        if (pn[k1]1pn[k2]0)js[k2] js[k2]110 ;                  }  //左右 if (pn[k-15]0pn[k15]0pn[k45]1pn[k60]0){       if (pn[k15]0pn[k30]1)js[k15] js[k15]110 ;        if (pn[k15]1pn[k30]0)js[k30] js[k30]110 ;                  }  //上下 if (pn[k-14]0pn[k14]0pn[k42]1pn[k56]0){       if (pn[k14]0pn[k28]1)js[k14] js[k14]110 ;        if (pn[k14]1pn[k28]0)js[k28] js[k28]110 ;                  }  //斜左 if (pn[k-16]0pn[k16]0pn[k48]1pn[k64]0){       if (pn[k16]0pn[k32]1)js[k16] js[k16]110 ;        if (pn[k16]1pn[k32]0)js[k32] js[k32]110 ;                  }  //右斜              } //0 1 1010  0 1 0110 //********            }    }   //scan i , j   整个搜索过程 //禁手的基本设置就这样  //长连禁手设置在判胜负函数 detect ( ) 时  // 黑棋超过五连即判黑负白棋胜。 //**********      cs.SetTextSize (16);      cs.SetTextStyle (0);      cs.SetFillMode (1);//0不填色1填色     for (i1;i225;i){    //test restrict_move            if (js[i] !0) {      //Mark it 标记禁手点              sintToString ( js[i]) ;      dx(i-(i/15*15))*40;      dy(i/15)*4040;        if (dx0){ dx15*40;    dydy-40;   }            cs.SetColor (255,250,250,0) ;            cs.DrawCircle (dx,dy,3) ;     //draw mark //更正冲四加活三不是禁手!! 四加 110分        if (js[i]110js[i]!210){            cs.SetColor (255,180,0,180) ;            cs.DrawCircle (dx,dy,5) ;  } //draw mark               }     }     cs.Update ( ) ;      }//restrict_move ( ) 图例 在下拉菜单设置禁手 上图E 9  G 10 H 6  此三点位就是冲四活三必杀点 全局变量加 int js[225];         //禁手设置 遍历棋盘点位 int jsset ;    //0on 有禁手1off 无禁手下拉菜单 在白棋下子后加禁手判断 white_do ( ){    //白棋下子     ............         testAIq (  );     //AI 算法测试 ****    //scan restricted move and draw mark    if (jsset0)  restrict_move ( ) ;  //禁手设置标记  }//white_do ( ) 在判胜负的function detect ( ) 中加代码 如触禁手判白棋胜 detect ( ) {         ......  ...... //*****************************  if (jsset0pn[n]1js[n]110js[i]!210){        //禁手判白棋胜          print 禁手 pn, n ;          cs.SetColor(255,255,0,0);          cs.SetTextSize (16);      cs.DrawText (( 禁手 ),655,(dn2)*16 );             cs.SetTextSize (40);      cs.DrawText (( 禁手 ),460,530 );             ss9白棋胜  !;           goto heqi;    } ......  ...... }//detect ( )  其他功能设置感兴趣的朋友可参阅我本站其他博文 需要游戏程序源码可联系我micelu126.com //**End**
http://www.pierceye.com/news/929822/

相关文章:

  • 网站建设题目以及答案济南建设公司网站
  • 有什么网站做的比较高大上网站首页怎么设计
  • 法治中国建设网站做网站推广 需要ftp
  • 网站运营工作具体做啥做网站寄生虫需要哪些东西
  • 东莞网站建设教程wordpress 插件 破解
  • 响应式网站做法免费seo网站
  • 网站搭建合作协议cms drupal wordpress
  • 桂林创新大厦网站佛山网站建设培训
  • 如何网站关键词优化idc机房托管
  • 做网站 做好把我踢开WordPress Core 5.0
  • 飓风 网站建设ip形象设计报价明细
  • 太原网站seo外包信誉好的赣州网站建设
  • 英文网站如何做关键词网站关键词多少个好
  • 手机网站静态动态珠海网页搜索排名提升
  • 旅游公司网站建设方案宁德市住房和城乡建设局新网站
  • 网站开发购物店网站营销策略
  • 福建省建设局网站安顺市哪里可以做网站
  • 网站服务设计仿《爱美眉》网站 dede
  • 茌平网站建设哪个地方可学习网站建设
  • 便民的网站app怎么做acg的wordpress主题
  • 外贸网站高端定做网络营销培训
  • 电子通讯录网站建设08影院wordpress影视主题源码
  • 电商设计素材网站推荐然后建设自营网站
  • 网站方案设计网页兼容性 网站开发
  • 做网站怎么申请域名游戏软件开发需要学什么
  • 做外贸网站需要什么卡创app开发 杭州app开发公司
  • 哪个网站可以做视频外链怎样退订3d卫星街景会员费用
  • 烟台做网站建设电话设置网站默认编码
  • seo官网制作规划绍兴seo整站优化
  • 怎么做网站广告设计学习