C++实现双人对战五子棋(附源码)
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++实现双人对战五子棋(附源码)相关推荐
- 基于嵌入式linux五子棋游戏,Android 实战项目之五子棋 附源码
Android五子棋游戏五子连珠算法实现 1.游戏规则 五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横.竖.斜,如黑白色任一方先五子连一线则算胜出. 2.五子连 ...
- C/C++实现仙侠类游戏的对战(附源码)
游戏讲解 游戏概述 资源加载 游戏概述 主要功能函数说明 角色类: 前期Al的简单实现: 源代码下载: 游戏概述 此2D游戏是自己一行一行代码码出来的(参考的游戏也是自己以前做过或者实现的2D游戏), ...
- 利用C++打造双人对战的五子棋游戏,界面新颖「附源码」
五子棋游戏的历史可谓源远流长,是一款老少皆宜的两人对弈纯策略游戏,讲究的是有攻有守的五子棋技巧,玩法简单易上手,五个棋子连成一线就可获胜.单机五子棋,双人五子棋,好友联机对战模式-你想要的都能在这里找 ...
- 400行代码实现双人对战五子棋(适合新手入门)
400行代码实现双人对战五子棋(适合新手入门) 跟上一篇博客一样,都是看了慕课网的视频之后写的学习记录,记录一下实现的思路,大部分内容比较简单,但也从中学到了很多东西. 按惯例首先看一下效果:(素材都 ...
- [原创]jQuery推箱子小游戏(100关且可扩展可选关),休闲,对战,娱乐,小游戏,下载即用,兼容iPad移动端,代码注释全(附源码)
Sokoban 介绍 [原创]jQuery推箱子小游戏(100关且可扩展可选关),休闲,对战,娱乐,小游戏,下载即用,兼容iPad移动端,代码注释全(附源码) 游戏说明 经典的推箱子是一个来自日本的古 ...
- 分享30个有趣的 Python小游戏,我能玩一天(附源码)
大家好,今天给大家带来30个 Python 小游戏,喜欢记得点赞.一定要收藏! 文章目录 有手就行 1.吃金币 2.打乒乓 3.滑雪 4.并夕夕版飞机大战 5.打地鼠 简简单单 6.小恐龙 7.消消乐 ...
- 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码
内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...
- android序列帧动画纯代码,H5序列帧动画实现过程(附源码)
H需朋者说上事是础一发一开程和开数的目前间5序列帧动画实现过程(新直能分支调二浏页器朋代说,事刚附源码) 序列帧动画 序列帧.轻厅设近幸松.备近幸松.备近幸松.备近动画,又称为逐帧动画,是使用多张连续 ...
- html实现名字滚动年会抽奖(附源码)
文章目录 1.html实现年会抽奖设计思路 1.1 抽奖主界面 1.2 特等奖抽奖界面 1.2 单个抽奖中奖界面 1.3 一次全抽,中奖界面 2.动态效果及代码 2.1 抽奖界面动态效果展示 2.2 ...
- html多个好看的背景动态效果(附源码)
文章目录 1.设计来源 1.1 图片轮动背景 1.2 星空流星背景 1.3 动态美女背景 1.4 动态屋雨背景 1.5 动态街道背景 1.6 动态夜幕背景 2.效果和源码 2.1 动态效果 2.2 透 ...
最新文章
- 深度学习 Optimizer 梯度下降优化算法总结
- Runtime.getRuntime().exec
- 使用Git工具生成公钥与私钥
- Class 类文件结构
- 多多自走棋改动_多多自走棋腾讯版
- 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
- ios 数字键盘左下角添加按钮_IOS数字键盘左下角添加完成按钮的实现方法
- SQL中DB2数据库修改某字段长度或类型
- Android程序的“现场保护”
- 卸载linux订阅包
- Ant-编译构建(1)-HelloWorld
- 数据分析引擎之Kylin学习笔记
- 从打造“兴趣电商”到“完全闭环”,抖音电商之路
- ubuntu 完整学习资料
- 【ARMv8基础篇】NIC-400控制器简介
- JSAPI支付——H5网页端调起支付接口
- 大规模时间序列数据自动异常检测架构
- 关于一个任意文件上传漏洞场景的讨论
- C++骰子游戏课程设计(含源码)
- Java2之狼的精神