资源简介

C++实现双人对战五子棋项目,内含项目源码,演示demo,开发具体流程文档。

资源截图

代码片段和文件信息

#include
#include //图形库头文件
#include //播放音乐头文件
#include

#pragma comment(lib “winmm.lib“) //播放音乐库文件

int flag = 0; //表示下棋次数
int board[20][20] = { 0 }; //0表示棋盘没有棋子状态

void initGame();
int judge(int a int b);
void playChess();

int main() {

initGame();
playChess();

getchar();
return 0;
}

//1.画出棋盘
void initGame() { //初始化游戏

//1.1 绘图环境 库函数
//默认调用系统的窗口
initgraph(600 500); //创建自定义窗口
//setbkcolor(BLUE); //设置窗口背景颜色
//cleardevice(); //刷新

//1.2 贴图
loadimage(NULL “./src/bg.jpg“);

//1.3 背景音乐 mci 多媒体控制结口
mciSendString(“open ./src/skyCity.mp3“ 0 0 0);
//mciSendString(“play ./src/skyCity.mp3“ 0 0 0);

//setlinecolor(BLACK);
//1.4 绘制棋盘
//画线 20 20 25 25 500 500
for (int i = 0; i <= 500; i += 25) {
line(0 i 500 i);
line(i 0 i 500);
}
line(501 0 501 500);

//1.5 print out
outtextxy(510 100 “玩家1:黑棋“);
outtextxy(510 200 “玩家2:白棋“);
}

//2.下棋
void playChess() {
//鼠标
MOUSEMSG m; //保存鼠标消息
int x=0 y=0; //坐标
int a=0 b=0; //行列

//持续下棋
while (1) {
m = GetMouseMsg(); //获取一个鼠标消息

//获取离鼠标最近的点的坐标信息
for (int i = 1; i < 20; i++) {
for (int j = 1; j < 20; j++) {
if (abs(m.x - i * 25) < 12 && abs(m.y - j * 25) < 12) {
x = i * 25;
y = j * 25;
a = i;
b = j;
}
}
}


if (m.uMsg == WM_LBUTTONDOWN) {
//棋子重复下在一个位置上
if (board[a][b] != 0) {
MessageBox(NULL “这里已经有棋子了,请重新选择。“ “提示“ MB_OK); //弹出一个提示框
continue; //进入下一循环
}

//判断黑白子
if (flag % 2 == 0) { // 偶数次 黑子
setfillcolor(BLACK);
solidcircle(x y 10);
board[a][b] = 1;
}
else { //奇数次
setfillcolor(WHITE);
solidcircle(x y 10);
board[a][b] = 2;
}
flag++;
}

if (judge(a b)) {
if (flag % 2 == 0) {
MessageBox(NULL “玩家2胜利。“ “游戏结束“ MB_OK); //弹出一个提示框
exit(0);
}
else {
MessageBox(NULL “玩家1胜利。“ “游戏结束“ MB_OK); //弹出一个提示框
exit(0);
}
}
}
}


//3.判断输赢
int judge(int a int b) {
int i j;
int t = 2 - flag % 2; //1 判断黑子是否赢 2 判断白子是否赢

//横向
for (i = a - 4 j = b; i <= a; i++) {
if (i > 0 && i < 16 && t == board[i][j] && t == board[i + 1][j] && t == board[i + 2][j] && t == board[i + 3][j] && t == board[i + 4][j]) {
return 1;
}
}

//纵向
for (i = a j = b - 4; j <= b; j++) {
if (j > 0 && j < 16 && t == board[i][j] && t == board[i][j + 1] && t == board[i][j + 2] && t == board[i][j + 3] && t == board[i][j + 4]) {
return 1;
}
}

//右下
for (i = a - 4 j = b - 4; i <= a j <= b; i++ j++) {
if (i > 0 && i < 16 && j > 0 && j < 16 && t == board[i][j] && t == board[i + 1][j + 1] && t == board[i + 2][j + 2] && t == board[i + 3][j + 3] && t == board[i + 4][j + 4]) {
return 1;
}
}

//左下
for (i = a - 4 j = b + 4; i <= a j >= b; i++ j--) {
if (i > 0 && i < 16 && j > 0 && j < 16 && t == board[i][j] && t == board[i + 1][j - 1] && t == board[i + 2][j - 2] &&

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-07-26 12:55  C++实现五子棋项目(附源码)\
     文件     1038797  2019-07-26 12:51  C++实现五子棋项目(附源码)\demo.gif
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\
     文件       28160  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\.suo
     文件    36438016  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\Browse.VC.db
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\ipch\
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\ipch\AutoPCH\
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\ipch\AutoPCH\9f00a37c38189f49\
     文件     2359296  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\.vs\gobang\v16\ipch\AutoPCH\9f00a37c38189f49\MAIN.ipch
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\
     文件      114176  2019-07-26 12:29  C++实现五子棋项目(附源码)\gobang\Debug\gobang.exe
     文件      866016  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.ilk
     文件          88  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.log
     文件      913408  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.pdb
     目录           0  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\
     文件         616  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\CL.command.1.tlog
     文件       26834  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\CL.read.1.tlog
     文件         404  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\CL.write.1.tlog
     文件         202  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\gobang.lastbuildstate
     文件        1134  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\link.command.1.tlog
     文件        3602  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\link.read.1.tlog
     文件         424  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\gobang.tlog\link.write.1.tlog
     文件       25199  2019-07-26 12:29  C++实现五子棋项目(附源码)\gobang\Debug\main.obj
     文件      257024  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\vc142.idb
     文件      151552  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\Debug\vc142.pdb
     文件        1432  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\gobang.sln
     文件        6118  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\gobang.vcxproj
     文件         949  2019-07-26 12:51  C++实现五子棋项目(附源码)\gobang\gobang.vcxproj.filters
............此处省略6个文件信息

评论

共有 条评论