資源簡介
人工智能重力四子棋的AI,α-β剪枝實現。效果很不錯。

代碼片段和文件信息
#include?“Judge.h“
bool?userWin(const?int?x?const?int?y?const?int?M?const?int?N?int*?const*?board){
//橫向檢測
????int?i?j;
????int?count?=?0;
????for?(i?=?y;?i?>=?0;?i--)
????????if?(!(board[x][i]?==?1))
????????????break;
????count?+=?(y?-?i);
????for?(i?=?y;?i?????????if?(!(board[x][i]?==?1))
????????????break;
????count?+=?(i?-?y?-?1);
????if?(count?>=?4)?return?true;
????//縱向檢測
????count?=?0;
????for?(i?=?x;?i?????????if?(!(board[i][y]?==?1))
????????????break;
????count?+=?(i?-?x);
????if?(count?>=?4)?return?true;
????//左下-右上
????count?=?0;
????for?(i?=?x?j?=?y;?i?=?0;?i++?j--)
????????if?(!(board[i][j]?==?1))
????????????break;
????count?+=?(y?-?j);
????for?(i?=?x?j?=?y;?i?>=?0?&&?j?????????if?(!(board[i][j]?==?1))
????????????break;
????count?+=?(j?-?y?-?1);
????if?(count?>=?4)?return?true;
????//左上-右下
????count?=?0;
????for?(i?=?x?j?=?y;?i?>=?0?&&?j?>=?0;?i--?j--)
????????if?(!(board[i][j]?==?1))
????????????break;
????count?+=?(y?-?j);
????for?(i?=?x?j?=?y;?i?????????if?(!(board[i][j]?==?1))
????????????break;
????count?+=?(j?-?y?-?1);
????if?(count?>=?4)?return?true;
????return?false;
}
bool?machineWin(const?int?x?const?int?y?const?int?M?const?int?N?int*?const*?board){
//橫向檢測
????int?i?j;
????int?count?=?0;
????for?(i?=?y;?i?>=?0;?i--)
????????if?(!(board[x][i]?==?2))
????????????break;
????count?+=?(y?-?i);
????for?(i?=?y;?i?????????if?(!(board[x][i]?==?2))
????????????break;
????count?+=?(i?-?y?-?1);
????if?(count?>=?4)?return?true;
????//縱向檢測
????count?=?0;
????for?(i?=?x;?i?????????if?(!(board[i][y]?==?2))
????????????break;
????count?+=?(i?-?x);
????if?(count?>=?4)?return?true;
????//左下-右上
????count?=?0;
????for?(i?=?x?j?=?y;?i?=?0;?i++?j--)
????????if?(!(board[i][j]?==?2))
????????????break;
????count?+=?(y?-?j);
????for?(i?=?x?j?=?y;?i?>=?0?&&?j?????????if?(!(board[i][j]?==?2))
????????????break;
????count?+=?(j?-?y?-?1);
????if?(count?>=?4)?return?true;
????//左上-右下
????count?=?0;
????for?(i?=?x?j?=?y;?i?>=?0?&&?j?>=?0;?i--?j--)
????????if?(!(board[i][j]?==?2))
????????????break;
????count?+=?(y?-?j);
????for?(i?=?x?j?=?y;?i?????????if?(!(board[i][j]?==?2))
????????????break;
????count?+=?(j?-?y?-?1);
????if?(count?>=?4)?return?true;
????return?false;
}
bool?isTie(const?int?N?const?int*?top){
bool?tie?=?true;
????for?(int?i?=?0;?i?????{
????????if?(top[i]?>?0)
????????{
????????????tie?=?false;
????????????break;
????????}
????}
????return?tie;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????503??2013-06-07?16:52??Point.h
?????文件??????15372??2013-06-10?05:26??Strategy.cpp
?????文件???????4383??2013-06-10?05:23??Strategy.h
?????文件???????2730??2013-06-07?16:52??Judge.cpp
?????文件???????2517??2013-06-07?16:52??Judge.h
-----------?---------??----------?-----??----
????????????????25505????????????????????5
- 上一篇:基于LabVIEW的秒表設計
- 下一篇:LabVIEW 的交通燈 程序
評論
共有 條評論