資源簡介
五子棋C++源代碼,使用的時候將默認背景圖片設置為文件夾中的棋盤圖片。或者將eazyX庫中line畫棋盤的顏色改為白色,才會在黑色的背景中看見。
代碼片段和文件信息
#include
#include
#include
#include
#include
#include?
#include
#include?
#include
#undef?UNICODE
using?namespace?std;
struct?dir?{
int?dy;
int?dx;
};
struct?Point
{
int?x;
int?y;
Point()?=?default;
Point(int?i?int?j)?{?this->x?=?i;?this->y?=?j;?}
};
int?N;
LPTSTR pString;
void?gameStart1();
void?gameStart2();
int?First;
bool?change?=?false;
bool?k?=?true;?//只讓while執行一次
bool?z?=?false;
bool?h?=?false;
class?Chess?{??//棋類
protected:
int?flag{?0?};
int?ban_w{?0?}?ban_b{?0?};
int?ban_w_temp{?0?}?ban_b_temp{?0?};
int?board[16][16];
bool?isnew?=?false;
int?x?=?0;
int?y?=?0;
public:
vectorchessline;
void?initGame();
int?judge(int?a?int?b);
void?playchess();
void?reguard();
void?guard(int?a?int?b);//將每步棋壓入向量
void?ban_black(int?a?int?b?int&?w);
};
static?const?int?men[3][6]?=?{
{?0?0?0?0?0?10000?}//防守2子
{?0?0?2?100?500?10000?}//防守1子
{?0?2?100?500?2500?10000?}?//防守0子
};
const?dir?d1{?0?1?};//橫
const?dir?d2{?1?0?};//豎
const?dir?d3{?1?1?};//左下到右上?撇
const?dir?d4{?-1?1?};//右下到左上?捺
class?Robot?:public?Chess?{?//Ai類
private:
public:
int?robotJudge(int?a?int?c?int?o);
void?playchessRobot();
Point?putchess(int?i?int?j);
void?anti_putchess(int?i?int?j);
Point?newpoint(Point?p?dir?d?int?length);
int?Score(Point?p?int?whoAttack);?//whoAttack為2時是黑棋的情況,3時是白棋的情況opp為對立方
bool?isInboard(Point?a);
};
//將每一步棋存儲
void?Chess::guard(int?a?int?b)?{
chessline.push_back(Point(a?b));
}
//悔棋
void?Chess::reguard()?{
initGame();
vector::iterator?it?=?chessline.begin();
int?m?=?chessline.size();
if?(flag?==?0)?return;
for?(int?i?=?0;?i?<=?m?-?2;?i++)
{
if?(i?%?2?==?1)
{
setfillcolor(WHITE);
int?x?=?(*(it?+?i)).x;?int?y?=?(*(it?+?i)).y;
solidcircle(30?*?x?30?*?y?8);
board[x][y]?=?2;
}
else?if?(i?%?2?==?0)
{
setfillcolor(BLACK);
int?x?=?(*(it?+?i)).x;?int?y?=?(*(it?+?i)).y;
solidcircle(30?*?x?30?*?y?8);
board[x][y]?=?3;
}
}
chessline.pop_back();
flag--;
}
//下棋
void?Chess::playchess()?{
MOUSEMSG?m;
Chess?chess;
int?x{?0?}?y{?0?};
int?a{?0?}?b{?0?};//持續下棋
while?(1)?{
m?=?GetMouseMsg(); //獲取一個鼠標消息
//獲取離鼠標最近的點的坐標信息
for?(int?i?=?1;?i?<=?15;?i++)?{
for?(int?j?=?1;?j?<=?15;?j++)?{
if?(abs(m.x?-?i?*?30)?12?&&?abs(m.y?-?j?*?30)?12)?{//距離
x?=?i?*?30;
y?=?j?*?30;
a?=?i;
b?=?j;
}
}
}
if?(chessline.size?()!=?0)?{
ban_b_temp?=?ban_b;
ban_black((*(chessline.end()?-?1)).x?(*(chessline.end()?-?1)).y?ban_b);
}
if?(m.mkRButton)
if?(ban_b?-?ban_b_temp?>=?2)?{
MessageBox(NULL?“黑棋出現禁手,白棋勝利“?“提示“?MB_OK);
exit(0);
}
else?if?(ban_b?-?ban_b_temp?2)?{?MessageBox(NULL?“黑棋未出現禁手“?“提示“?MB_OK);?}
if?(m.y?>=?450)
{
if?(m.x?>=?30?&&?m.x?<=?120?&&?m.y?>=?480?&&
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????28672??2019-12-13?13:41??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16\.suo
?????文件???38010880??2019-12-13?13:41??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16\Browse.VC.db
?????文件???69533696??2019-12-13?13:19??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16\ipch\AutoPCH\4408b34706eabad5\源.ipch
?????文件?????177152??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.exe
?????文件????1516100??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.ilk
?????文件????1265664??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.pdb
?????文件?????347136??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\vc142.idb
?????文件?????512000??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\vc142.pdb
?????文件????????677??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.log
?????文件????????602??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\CL.command.1.tlog
?????文件??????26888??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\CL.read.1.tlog
?????文件????????392??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\CL.write.1.tlog
?????文件???????1084??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\li
?????文件???????2470??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\li
?????文件????????376??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\li
?????文件????????236??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog\五子棋同步版本.lastbuildstate
?????文件?????301574??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\源.obj
?????文件???????6126??2019-12-10?19:09??五子棋同步版本\五子棋同步版本\五子棋同步版本\五子棋同步版本.vcxproj
?????文件????????948??2019-12-10?19:09??五子棋同步版本\五子棋同步版本\五子棋同步版本\五子棋同步版本.vcxproj.filters
?????文件????????168??2019-12-10?19:03??五子棋同步版本\五子棋同步版本\五子棋同步版本\五子棋同步版本.vcxproj.user
?????文件??????22969??2019-12-13?13:41??五子棋同步版本\五子棋同步版本\五子棋同步版本\源.cpp
?????文件???????1484??2019-12-10?19:03??五子棋同步版本\五子棋同步版本\五子棋同步版本.sln
?????文件?????852500??2019-12-10?20:24??五子棋同步版本\五子棋同步版本\棋盤.jpg
?????目錄??????????0??2019-12-10?19:04??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16\ipch\AutoPCH\4408b34706eabad5
?????目錄??????????0??2019-12-10?19:03??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16\ipch\AutoPCH
?????目錄??????????0??2019-12-10?19:03??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16\ipch
?????目錄??????????0??2019-12-13?13:41??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本\v16
?????目錄??????????0??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug\五子棋同步版本.tlog
?????目錄??????????0??2019-12-10?19:03??五子棋同步版本\五子棋同步版本\.vs\五子棋同步版本
?????目錄??????????0??2019-12-13?13:32??五子棋同步版本\五子棋同步版本\五子棋同步版本\Debug
............此處省略8個文件信息
評論
共有 條評論