象棋人工智能以窮舉法算出最佳下一步,可用在許多相關領域
public int LookUp(int fg) {
int xy, IsEnd;
mystep.InitSetting(Axy, Bxy, yList, 1,p);
while (true) {
IsEnd=mystep.IsEnd(0);
if (IsEnd >= 10)
{ MovePtB(mystep.InitXy,mystep.NextXy); break; }
else if (IsEnd == 1) continue;
if ((xy = mystep.GetNextXy(0) )< 0) continue;
if (mystep.IsTarget(xy)>0) continue; //若是完成,退回上一步
if (mystep.NeedSpecTreat(xy) > 0) continue; //若是特殊情況,退
回上一步
if (mystep.AddStep(xy, 0) == 0) break;
}
MessageBox.Show("Finish---------------------");
}
開始時,輸入將士相車馬包卒的起始位置,
然後根據各棋子能走的下一步,估算其期望值,及可能是終點的情形,
並要估算對方的各種走法,如此算出10-20步後的最佳走法,
以此類推,只要是起始情形知道,且其可能的進行方式及大約的期望值可估算,
應該可用程式預估最佳對策. 若是此方面的案子多,可成立公司經營.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.246.113.209