資源簡介
設計的人工智能重力四子棋的對抗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;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2730??2011-10-22?00:22??重力四子棋\Judge.cpp
?????文件???????2517??2011-10-22?00:22??重力四子棋\Judge.h
?????文件????????503??2011-10-22?00:22??重力四子棋\Point.h
?????文件??????12241??2012-12-05?11:49??重力四子棋\Strategy.cpp
?????文件????????877??2012-12-04?17:13??重力四子棋\Strategy.h
?????目錄??????????0??2012-12-17?11:00??重力四子棋
-----------?---------??----------?-----??----
????????????????18868????????????????????6
- 上一篇:精易VIP模塊4.30源碼
- 下一篇:pic16f877a的跑馬燈
評論
共有 條評論