五子棋
人人對戰 人機對戰
# include
# include//字元陣列的函式定義的標頭檔案
# include//standard library標準庫標頭檔案
# define kong 0
# define wanjia 1
# define diannao 2 // 空位置設為0 ,玩家下的位置設為1 ,電腦下的位置設為2
int qipan[15][15]; // 15*15的棋盤
int a,b,c,d,x; // a b為玩家下子座標 ,c d為電腦下子座標 x為剩餘空位置
void start(); // 程式的主要控制函式
void draw(); // 畫棋盤
int win(int p,int q); // 判斷勝利 p q為判斷點座標
void ai(int *p,int *q); //電腦下子 p q返回下子座標
int value(int p,int q); //計算空點p q的價值
int qixing(int n,int p,int q); //返回空點p q在n方向上的棋型 n為1-8方向 從右順時針開始數
void yiwei(int n,int *i,int *j); //在n方向上對座標 i j 移位 n為1-8方向 從右順時針開始數
/****************主函式*****************/
int main()
system("cls"); //呼叫系統dos的cls命令,清屏。
}while(k=='y');
printf("謝謝使用!\n");
}/*****************開始*******************/
void start()
if(moshi==3)
return ;
if(moshi==1) //人機模式
if(i==1) //玩家先手下子
a1=a;
b1=b;
x--; //棋盤格仔數相應減少乙個
qipan[b][a]=wanjia; //玩家下的位置
system("cls"); //呼叫系統dos的cls命令,清屏。
draw(); //呼叫畫棋盤函式
}while(x!=0)
//電腦先下就下在7 7
else
//電腦下子
c1=c;
d1=d; //儲存電腦上手棋型
if(win(c,d))
if(ch=='n')
else
// 悔棋
}printf("電腦下在%d %d\n請輸入:",c,d);
scanf("%d%d",&a,&b); //玩家下子
if(a==20&&b==20) return;
if(a==15&&b==15)
// 悔棋
while((a<0||a>14)||(b<0||b>14)||qipan[b][a]!=kong) //判斷輸入座標是否錯誤
a1=a;
b1=b;
x--;
qipan[b][a]=wanjia;
system("cls");
draw();
if(win(a,b)) //呼叫win函式
//玩家贏
}printf("和局\n");
}if(moshi==2) //選擇人人對戰
while((a<0||a>14)||(b<0||b>14)||qipan[b][a]!=kong)
a1=a;
b1=b;
x--;
qipan[b][a]=wanjia;
system("cls");
draw();
printf("玩家1下在%d %d。\n",a,b);
if(win(a,b)) /* 呼叫win函式*/
/* 玩家1贏 */
printf("玩家2請輸入:");
scanf("%d%d",&c,&d);
if(a==20&&b==20) return;
if(c==15&&d==15) //悔棋
while((c<0||c>14)||(d<0||d>14)||qipan[d][c]!=kong)
c1=c;
d1=d;
x--;
qipan[d][c]=diannao;
system("cls");
draw();
printf("玩家2下在%d %d。\n",c,d);
if(win(c,d))
/* 玩家2贏 */
}printf("和局\n");}}
/*************** 畫棋盤 ******************/
人工智慧五子棋實現原理
關於棋盤棋子的實現邏輯我就不多說了,大家可以看原始碼,並不複雜,說說ai部分的實現吧 我的實現思路是 1.走對自己獲得勝利最有利的點 說白了就是最接近5子連線的點 2.堵對對方獲得勝利最有利的點 說白了就是堵對方的棋子 做到這兩步就能實現乙個初級階段的人工智慧了。那麼接下來就講講關於計算獲得勝利最有...
五子棋的人工智慧演算法
以前曾研究過五子棋的人工智慧演算法,這篇文章就是講的實現與原理。當然也只是做了最簡單的研究,人工智慧是個高深的學問,我基本上不懂,這裡的實現也只是憑自己的感覺來寫的,程式也不是我寫的,但是原理就是這樣。我相信還有高手,我的文章也只能提供給一些初學者看看了。電腦下子實際上是分兩個步驟的,第乙個步驟是盡...
人工智慧實現簡單的五子棋程式
我這個程式在qq五子棋上實驗了一下,結果是黑棋先手全勝,白棋后手的勝率卻慘不忍睹,原因有下 1 五子棋的先手是有優勢的,所以職業比賽裡都會有禁手來實現公平 2 水平有限,對局面的評估只有一小部分 主要思路就是博弈樹,程式向前看一步,對對手可能的走法進行評估,評估的策略主要有兩條 1 掃瞄整個棋盤,判...