程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-求助大神五子棋alphabeta的迭代加深算法(出現異常)

c++-求助大神五子棋alphabeta的迭代加深算法(出現異常)

編輯:編程解疑
求助大神五子棋alphabeta的迭代加深算法(出現異常)

int AI::AlphaBeta(int depth, int alpha, int beta) {
int val;
total++;
// 對方最後一子連五
if (CheckWin())
return -10000;
// 葉節點
if (depth == 0)
return evaluate();
int count = GetMove(depth);
// 遍歷所有走法
for (int i = 1; i <= count; i++) {
MakeMove(s[depth][i].p);
val = -AlphaBeta(depth - 1, -beta, -alpha);
DelMove();
if (val >= beta) {
ABcut++;
return val;
}
if (val > alpha) {
alpha = val;
}
return alpha;
}
}
struct xy AI::gobang() {
int i;
clock_t start, finish;
start = clock();
cout << "電腦思考中......\n";
total = 0;
ABcut = 0;
srand(time(NULL));
// 第一步下中心點
if (step == 0) {
BestMove.x = size / 2;
BestMove.y = size / 2;
return BestMove;
}
// 第二,三步隨機
if (step == 2 || step == 1) {
int rx, ry;
do {
rx = rand() % 5 + chessxy[1].x - 2;
ry = rand() % 5 + chessxy[1].y - 2;
} while (chessboard[rx][ry] != 0);
BestMove.x = rx;
BestMove.y = ry;
return BestMove;
}
// 迭代加深搜索
for (int i= 2; i <= SearchDepth; i += 2) {
int depth=i;
int val;
int alpha=-10001;
int beta=10000;
total++;
int count = GetMove(depth);
// 遍歷所有走法
for (int j = 1; j<= count; j++) {
MakeMove(s[depth][j].p);
val = -AlphaBeta(depth - 1, -beta, -alpha);
DelMove();
if (val >= beta) {
BestVal = val;
BestMove = s[depth][j].p;
ABcut++;
break;
}
if (val > alpha) {
BestVal=alpha = val;
BestMove = s[depth][j].p;
}
}
if (BestVal == 10000)
break;
}
finish = clock();
ThinkTime = (double)(finish - start) / CLOCKS_PER_SEC;
return BestMove;
}

最佳回答:


崩潰的時候在彈出的對話框按相應按鈕進入調試,按Alt+7鍵查看Call Stack即“調用堆棧”裡面從上到下列出的對應從裡層到外層的函數調用歷史。雙擊某一行可將光標定位到此次調用的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。

代碼功能歸根結底不是別人幫自己看或講解或注釋出來的;而是被自己靜下心來花足夠長的時間和精力親自動手單步或設斷點或對執行到某步獲得的中間結果顯示或寫到日志文件中一步一步分析出來的。
提醒:再牛×的老師也無法代替學生自己領悟和上廁所!
單步調試和設斷點調試(VS IDE中編譯連接通過以後,按F10或F11鍵單步執行,按Shift+F11退出當前函數;在某行按F9設斷點後按F5執行停在該斷點處。)是程序員必須掌握的技能之一。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved