C++实现双人对战五子棋项目

开发时间:2019.07.26
开发者:Summer
开发工具:Visual studio 2019

商业合作可淘宝搜索店铺“程序员夏天的小店”


一、演示效果

二、头文件

三、主函数

四、画出棋盘

五、下棋

六、判断输赢


一、演示效果


二、头文件

#include<stdio.h>
#include<graphics.h>  //图形库头文件
#include<mmsystem.h>  //播放音乐头文件
#include<math.h>#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 500for (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 outouttextxy(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] && t == board[i + 3][j - 3] && t == board[i + 4][j - 4]) {return 1;}}return 0;
}

C++实现双人对战五子棋(附源码)相关推荐

  1. 基于嵌入式linux五子棋游戏,Android 实战项目之五子棋 附源码

    Android五子棋游戏五子连珠算法实现 1.游戏规则 五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横.竖.斜,如黑白色任一方先五子连一线则算胜出. 2.五子连 ...

  2. C/C++实现仙侠类游戏的对战(附源码)

    游戏讲解 游戏概述 资源加载 游戏概述 主要功能函数说明 角色类: 前期Al的简单实现: 源代码下载: 游戏概述 此2D游戏是自己一行一行代码码出来的(参考的游戏也是自己以前做过或者实现的2D游戏), ...

  3. 利用C++打造双人对战的五子棋游戏,界面新颖「附源码」

    五子棋游戏的历史可谓源远流长,是一款老少皆宜的两人对弈纯策略游戏,讲究的是有攻有守的五子棋技巧,玩法简单易上手,五个棋子连成一线就可获胜.单机五子棋,双人五子棋,好友联机对战模式-你想要的都能在这里找 ...

  4. 400行代码实现双人对战五子棋(适合新手入门)

    400行代码实现双人对战五子棋(适合新手入门) 跟上一篇博客一样,都是看了慕课网的视频之后写的学习记录,记录一下实现的思路,大部分内容比较简单,但也从中学到了很多东西. 按惯例首先看一下效果:(素材都 ...

  5. [原创]jQuery推箱子小游戏(100关且可扩展可选关),休闲,对战,娱乐,小游戏,下载即用,兼容iPad移动端,代码注释全(附源码)

    Sokoban 介绍 [原创]jQuery推箱子小游戏(100关且可扩展可选关),休闲,对战,娱乐,小游戏,下载即用,兼容iPad移动端,代码注释全(附源码) 游戏说明 经典的推箱子是一个来自日本的古 ...

  6. 分享30个有趣的 Python小游戏,我能玩一天(附源码)

    大家好,今天给大家带来30个 Python 小游戏,喜欢记得点赞.一定要收藏! 文章目录 有手就行 1.吃金币 2.打乒乓 3.滑雪 4.并夕夕版飞机大战 5.打地鼠 简简单单 6.小恐龙 7.消消乐 ...

  7. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

  8. android序列帧动画纯代码,H5序列帧动画实现过程(附源码)

    H需朋者说上事是础一发一开程和开数的目前间5序列帧动画实现过程(新直能分支调二浏页器朋代说,事刚附源码) 序列帧动画 序列帧.轻厅设近幸松.备近幸松.备近幸松.备近动画,又称为逐帧动画,是使用多张连续 ...

  9. html实现名字滚动年会抽奖(附源码)

    文章目录 1.html实现年会抽奖设计思路 1.1 抽奖主界面 1.2 特等奖抽奖界面 1.2 单个抽奖中奖界面 1.3 一次全抽,中奖界面 2.动态效果及代码 2.1 抽奖界面动态效果展示 2.2 ...

  10. html多个好看的背景动态效果(附源码)

    文章目录 1.设计来源 1.1 图片轮动背景 1.2 星空流星背景 1.3 动态美女背景 1.4 动态屋雨背景 1.5 动态街道背景 1.6 动态夜幕背景 2.效果和源码 2.1 动态效果 2.2 透 ...

最新文章

  1. 深度学习 Optimizer 梯度下降优化算法总结
  2. Runtime.getRuntime().exec
  3. 使用Git工具生成公钥与私钥
  4. Class 类文件结构
  5. 多多自走棋改动_多多自走棋腾讯版
  6. 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
  7. ios 数字键盘左下角添加按钮_IOS数字键盘左下角添加完成按钮的实现方法
  8. SQL中DB2数据库修改某字段长度或类型
  9. Android程序的“现场保护”
  10. 卸载linux订阅包
  11. Ant-编译构建(1)-HelloWorld
  12. 数据分析引擎之Kylin学习笔记
  13. 从打造“兴趣电商”到“完全闭环”,抖音电商之路
  14. ubuntu 完整学习资料
  15. 【ARMv8基础篇】NIC-400控制器简介
  16. JSAPI支付——H5网页端调起支付接口
  17. 大规模时间序列数据自动异常检测架构
  18. 关于一个任意文件上传漏洞场景的讨论
  19. C++骰子游戏课程设计(含源码)
  20. Java2之狼的精神

热门文章

  1. js下载activex
  2. Linux僵尸进程怎么处理,Linux 僵尸进程如何处理
  3. nagios 飞信通知
  4. Android流光动画,流光相机app_流光相机官网-多特软件站安卓网
  5. Homegrown【翻译】
  6. LightningChart 实际应用案例-Polymer Char
  7. 计算机常识 和 应用技巧
  8. Win系统 - 如何清除冰点还原精灵 Deep Freeze 密码?
  9. Java并发练习:无锁编程
  10. 50页PPT,让你全面了解物联网产业链及发展趋势 | 附下载