规则原理

如图

判断游戏结束

  • chessData.h
//row,col    表示当前落子
bool checkWin(ChessData* game, int row, int col);
  • 横、竖、斜(斜有两种)共四种情况,每种情况根据当前落子往后遍历5个子,有一种符合就胜利
  • chessData.cpp
bool checkWin(ChessData* game, int row, int col){//横for(int i = 0; i < 5; i++){if(col - i >= 0 &&col - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row][col-i] == game->chessMap[row][col-i+1] &&game->chessMap[row][col-i] == game->chessMap[row][col-i+2] &&game->chessMap[row][col-i] == game->chessMap[row][col-i+3] &&game->chessMap[row][col-i] == game->chessMap[row][col-i+4]){return true;}}//竖for(int i = 0; i < 5; i++){if(row - i >= 0 &&row - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row-i][col] == game->chessMap[row-i+1][col] &&game->chessMap[row-i][col] == game->chessMap[row-i+2][col] &&game->chessMap[row-i][col] == game->chessMap[row-i+3][col] &&game->chessMap[row-i][col] == game->chessMap[row-i+4][col]){return true;}}// “/”方向for(int i = 0; i < 5; i++){if(row + i < BOARD_GRAD_SIZE &&row + i - 4 >= 0 &&col - i >= 0 &&col - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row+i][col-i] == game->chessMap[row+i-1][col-i+1] &&game->chessMap[row+i][col-i] == game->chessMap[row+i-2][col-i+2] &&game->chessMap[row+i][col-i] == game->chessMap[row+i-3][col-i+3] &&game->chessMap[row+i][col-i] == game->chessMap[row+i-4][col-i+4]){return true;}}// “\”方向for(int i = 0; i < 5; i++){if(row - i >= 0 &&row - i - 4 < BOARD_GRAD_SIZE &&col - i >= 0 &&col - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row-i][col-i] == game->chessMap[row-i+1][col-i+1] &&game->chessMap[row-i][col-i] == game->chessMap[row-i+2][col-i+2] &&game->chessMap[row-i][col-i] == game->chessMap[row-i+3][col-i+3] &&game->chessMap[row-i][col-i] == game->chessMap[row-i+4][col-i+4]){return true;}}return false;}

调用接口

  • main.cpp
#include <stdio.h>
bool checkOver(){if(checkWin(&game, clickPosRow, clickPosCol)){Sleep(1500);if(game.playFlag = false){//黑棋胜利,此时标记已经转为白棋落子mciSendString("play res/不错.mp3", 0, 0, 0);loadimage(0, "res/胜利.jpg");score += 100; //更新分数}else{mciSendString("play res/失败.mp3", 0, 0, 0);loadimage(0, "res/失败.jpg");score -= 100; //同理}//用于显示分数char scoreText[64];sprintf(scoreText, "当前分数:%d", score);outtextxy(310, 800, scoreText);//记录分数FILE* fp = fopen("score.data", "wb");fwrite(&score, sizeof(score), 1, fp);fclose(fp);getch();return true;}return false;}

显示分数

  • main.cpp
#define INIT_SCORE 1000
int score; //全局变量
void initScore(){//分数字体设置settextcolor(WHITE); //colorsettextstyle(50, 0, "微软雅黑");  //styleFILE *fp = fopen("score.data", "rb");if(fp == NULL){score = INIT_SCORE;}else{fread(&score, sizeof(score), 1, fp);}if (fp)fclose(fp);}
  • 然后在main.cpp文件的 init() 函数定义中 继续 添加代码
initScore(); //这一行添加到init()函数定义中

结束

到这里五子棋的全部功能已经实现了,但是你会发现程序无法运行。这是理所当然的,因为我们的main函数还没有写,在下一篇文章(也就是本项目的最后一章)我们将完善main函数并做该项目的总结。

C++五子棋(六)——游戏结束相关推荐

  1. 13Python基础-总结(五子棋小游戏)

    Python基础-总结 开篇前言 视频演示 主要思路 代码实现 完整代码 最后总结 开篇前言 前面12篇文章一起学习了python入门最最基础的基础知识,哈哈.今天这篇文章一起利用这些知识实现一个五子 ...

  2. python博弈树实现AI五子棋小游戏

    python博弈树实现AI五子棋小游戏 运行比较慢,后续优化. 完整项目代码可从 https://github.com/hfq0219/wuziqi.git 下载. 功能有选择先后手和先手禁手规则. ...

  3. 面向对象程序设计(Java)课程设计——五子棋小游戏

    目录 一.团队成员及任务 二.项目简介 三.功能设计图 四.运行结果截图 五.核心源码 六.课程设计感想与展望 一.团队成员及任务 队长:管俊杰  计科(智能)22-1 202203200037 负责 ...

  4. Android Studio实现五子棋小游戏

    项目目录 一.项目概述 二.开发环境 三.详细设计 1.布局设计 2.验证码 3.AI人机 4.背景音乐 四.运行演示 五.项目总结 六.源码获取 一.项目概述 五子棋是一种两人对弈的策略型棋类游戏, ...

  5. Java编写的五子棋小游戏

    看书的时候看到一个不完整的Java编写的一个五子棋小游戏,为了恢复一下编程能力刚刚把这个小程序完成了. 实现的功能很简单,两人对下五子棋,程序自动回判断输赢.在ubuntu下搞得,没有装什么高端的输入 ...

  6. php 设计五子棋游戏,基于js+canvas实现五子棋小游戏

    本文实例为大家分享了js+canvas实现五子棋小游戏的具体代码,供大家参考,具体内容如下 效果展示: 源码展示: 五子棋 * { margin: 0; padding: 0; } body { ma ...

  7. 基于 Blazor 开发五子棋小游戏

    今天是农历五月初五,端午节.在此,祝大家端午安康! 端午节是中华民族古老的传统节日之一.端午也称端五,端阳.此外,端午节还有许多别称,如:午日节.重五节.五月节.浴兰节.女儿节.天中节.地腊.诗人节. ...

  8. java 五子棋项目_Java项目如何实现五子棋小游戏

    Java项目如何实现五子棋小游戏 发布时间:2020-07-21 14:53:06 来源:亿速云 阅读:77 作者:小猪 小编这次要给大家分享的是Java项目如何实现五子棋小游戏,文章内容丰富,感兴趣 ...

  9. 借助实时数据推送快速制作在线对战五子棋小游戏丨实战

    1 项目概述 游戏开发,尤其是微信小游戏开发,是最近几年比较热门的话题. 本次「云开发」公开课,将通过实战「在线对战五子棋」,一步步带领大家,在不借助后端的情况下,利用「小程序 ✖ 云开发」,独立完成 ...

最新文章

  1. canopen c++程序编写_JAVA、C、C++、Python同样是高级语言,为什么只有C和C++可以编写单片机程序?...
  2. 关于类和接口的一些小笔记
  3. 自适应HTML5宽屏物流运输快递货运类网站源码 pbootcms模板
  4. 平面设计师进步素材模板,设计基础!
  5. vsftpd配置虚拟用户(实战)
  6. 魔兽同服务器物品,《魔兽世界》怀旧服:这是给你的转服物资必备清单
  7. K线技术指标实现详解—KDJ
  8. Excel如何实现数据排列组合
  9. web开发 省市县三级联动
  10. 上传视频到FTP服务器+播放
  11. 路在脚下--我的程序员之路
  12. 黑客专用文本编辑器Emacs中文手册
  13. 常用地理坐标系统和投影坐标系统
  14. cocos creator微信棋牌小游戏 幼麟棋牌服务端分析笔记
  15. 利用网络劫持解决微信远程域名真机调试Api问题
  16. python提取cad坐标_教你一个实用的CAD坐标提取技巧
  17. YTU 1906 鹊桥相会
  18. 网站域名解析为什么错误?域名解析错误怎么解决?
  19. 关于amazon亚马逊SP-API申请注册,amazon亚马逊SPAPI开发人员资料注册,amazon亚马逊Selling Partner API申请注册详细指导
  20. HyperLedger Cello的部署操作

热门文章

  1. yolov3 anchor 理解
  2. ubuntu 安装 talib
  3. matlab中图像太大,图像处理:算法在MATLAB中耗时太长
  4. python中回文设计_Python中的回文递归
  5. vb.net 设置打印纸张与页边距_文字办公—Word文档如何设置装订线
  6. GraphSAGE: Inductive Representation Learning on Large Graphs
  7. 文巾解题 797. 所有可能的路径
  8. pytorch 学习笔记目录
  9. 【小朋友才做选择题】跟着团队一起学习人工智能,先人一步掌握最前沿知识
  10. Python_Statsmodels包_时间序列分析_ARIMA模型