AS3.0五子棋判断胜负及人机算法(AI)

来源:互联网 发布:淘师湾算法与问题解决 编辑:程序博客网 时间:2024/05/02 02:11
1.五子棋胜负算法(使用了对棋盘进行全盘判断)
function win():void                 //将胜负判断封装成函数,便于调用       {     ww=new whiteWin();             //实例化属性名称为“whiteWin”的“白棋胜”元件        bw=new blackWin();for (i = 0; i < 15; i++)                       //对已定义的15行*15列棋盘,进行遍历循环{for (j = 0; j <= 10; j++)             //为规避数组越界,依据棋盘实际情况可知只需循环到10{if (myArray[i][j] + myArray[i][j + 1] + myArray[i][j + 2] + myArray[i][j + 3] + myArray[i][j + 4] == 5)  {                                                                     <pre name="code" class="plain">                                                                  //下白棋数组赋值为1,当值为5时即横向方向相连为五颗白棋,白棋胜
ww.x=260; ww.y=260;addChild(ww); //加载“白棋胜”元件 mb.removeEventListener(MouseEvent.CLICK,hqhs); //卸载鼠标点击监听}if (myArray[i][j] + myArray[i][j + 1] + myArray[i][j + 2] + myArray[i][j + 3] + myArray[i][j + 4] == -5){//下黑棋数组赋值为-1,当值为-5时即横向方向相连为五颗黑棋,黑棋胜
bw.x=260;bw.y=260;addChild(bw);mb.removeEventListener(MouseEvent.CLICK,hqhs);}}}for (i = 0; i <= 10; i++){for (j = 0; j < 15; j++){if (myArray[i][j] + myArray[i + 1][j] + myArray[i + 2][j] + myArray[i + 3][j] + myArray[i + 4][j] == 5){ //纵向,白棋胜ww.x=260;ww.y=260;addChild(ww);mb.removeEventListener(MouseEvent.CLICK,hqhs);}if (myArray[i][j] + myArray[i + 1][j] + myArray[i + 2][j] + myArray[i + 3][j] + myArray[i + 4][j] == -5){ //纵向,黑棋胜
bw.x=260;bw.y=260;addChild( bw);mb.removeEventListener(MouseEvent.CLICK,hqhs);}}}for (i = 0; i <= 10; i++){for (j = 0; j <= 10; j++){if (myArray[i][j] + myArray[i + 1][j + 1] + myArray[i + 2][j + 2] + myArray[i + 3][j + 3] + myArray[i + 4][j + 4] == 5){ // "\"方向,白棋胜ww.x=260;ww.y=260;addChild(ww);mb.removeEventListener(MouseEvent.CLICK,hqhs);}if (myArray[i][j] + myArray[i + 1][j + 1] + myArray[i + 2][j + 2] + myArray[i + 3][j + 3] + myArray[i + 4][j + 4] == -5){ // "\"方向,黑棋胜 bw.x=260;bw.y=260;addChild(bw);mb.removeEventListener(MouseEvent.CLICK,hqhs);}}}for (i = 0; i <= 10; i++){for (j = 4; j < 15; j++){if (myArray[i][j] + myArray[i + 1][j - 1] + myArray[i + 2][j - 2] + myArray[i + 3][j - 3] + myArray[i + 4][j - 4] == 5){ // "/"方向,白棋胜ww.x=260;ww.y=260;addChild(ww);mb.removeEventListener(MouseEvent.CLICK,hqhs);}if (myArray[i][j] + myArray[i + 1][j - 1] + myArray[i + 2][j - 2] + myArray[i + 3][j - 3] + myArray[i + 4][j - 4] == -5){ // "/" 方向,黑棋胜
bw.x=260;bw.y=260;addChild(bw);mb.removeEventListener(MouseEvent.CLICK,hqhs);}}}}


作为加入实验室的考核,花了两个星期的时间,使用从未接触过的AS3.0实现了五子棋基本功能的编写。虽然还只是入门级算法,接下去会更加努力的学习,期待更为完善的算法。

0 0
原创粉丝点击