资源简介
五子棋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个文件信息
相关资源
- 五子棋在linux命令行模式下C语言实现
- C++实战源码-网络五子棋
- 五子棋游戏(c++源码)
- 五子棋课程设计C++、完整课程设计报
- VC6.0直接可执行源码(音乐播放器,记
- vs2010 mfc对话框五子棋小游戏
- 网上收集的2011.12之前的绝大部分 五子
- vc++ 五子棋
- 分享vc++ 游戏开发经典案例详解王浩编
- 五子棋MFC实现
- 五子棋游戏开发程序及源代码C++开发
- VS实现C语言五子棋
- 五子棋小游戏选择棋盘、棋子;双方
- 五子棋 源码 游戏编程 MFC VC C++
- 五子棋(棋盘)(MFC编写)
- c语言 五子棋源码界面美观
- C语言五子棋实验报告.docx
- VC++ 网络对战五子棋游戏(服务端+用
- 控制台五子棋程序c语言
- 基于c++ ege图形库实现五子棋游戏
- C语言五子棋代码 支持鼠标操作
- VC2008 MFC 五子棋 源码 人机对弈 游戏
- 面向对象程序设计风格的五子棋程序
- QT开发的五子棋网络对战游戏
- c语言五子棋代码
- turbo C下的扫雷,五子棋,贪吃蛇
- 人工智能,五子棋,人工智能,代码
- C++ 五子棋 小游戏
- MFC网络对战TCP五子棋
- C++ 利用EasyX库绘制五子棋功能
评论
共有 条评论