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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值