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實現了五子棋基本功能的編寫。雖然還只是入門級算法,接下去會更加努力的學習,期待更爲完善的算法。

發佈了34 篇原創文章 · 獲贊 68 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章