这个小游戏是在2020年5月份无聊写的,代码量不大,权当娱乐哈

基本思路:

1.创建一个15*15棋盘类,并设计相关函数(输出棋盘,下黑棋,下白棋等)
2.编写judge()函数,判断胜负条件
3.主函数思路:黑方先下,每次不断更新棋盘的元素:如果该处已经有棋子了,则重新下一次,以此不断循环直到游戏结束。

代码如下:

1.头文件

//wuziqi.h
#ifndef _WUZIQI_H_
#define _WUZIQI_H_
#include <iostream>
using namespace std;class chessboard;
class chessboard
{public:int judge();void build();//建立棋盘void changeblack(int goalx, int goaly, int& goal);//改变棋盘数组元素即更新棋子void changewhite(int goalx, int goaly, int& goal);void out();//输出棋盘
private:string arr[15][15];
};#endif // !_WUZIQI_H_

2.cpp文件

//wuziqi.cpp
#include <iostream>
#include "wuziqi.h"using namespace std;int chessboard::judge()
{for (int i = 0; i < 11; i++){for (int j = 0; j < 11; j++){if (//横一样arr[i][j] == "●" &&arr[i][j + 1] == "●" &&arr[i][j + 2] == "●" &&arr[i][j + 3] == "●" &&arr[i][j + 4] == "●") return 0;//不能使用连等}for (int j = 0; j < 11; j++){if (//竖一样arr[j][i] == "●" &&arr[j + 1][i] == "●" &&arr[j + 2][i] == "●" &&arr[j + 3][i] == "●" &&arr[j + 4][i] == "●") return 0;}for (int j = 0; j < 11; j++){if (//顺斜一样arr[i][j] == "●" &&arr[i + 1][j + 1] == "●" &&arr[i + 2][j + 2] == "●" &&arr[i + 3][j + 3] == "●" &&arr[i + 4][j + 4] == "●") return 0;}for (int j = 14; j > 3; j--){if (//逆斜一样arr[i][j] == "●" &&arr[i + 1][j - 1] == "●" &&arr[i + 2][j - 2] == "●" &&arr[i + 3][j - 3] == "●" &&arr[i + 4][j - 4] == "●") return 0;}for (int j = 0; j < 11; j++){if (//横一样arr[i][j] == "○" &&arr[i][j + 1] == "○" &&arr[i][j + 2] == "○" &&arr[i][j + 3] == "○" &&arr[i][j + 4] == "○") return 0;//不能使用连等}for (int j = 0; j < 11; j++){if (//竖一样arr[j][i] == "○" &&arr[j + 1][i] == "○" &&arr[j + 2][i] == "○" &&arr[j + 3][i] == "○" &&arr[j + 4][i] == "○") return 0;}for (int j = 0; j < 11; j++){if (//顺斜一样//列从0开始arr[i][j] == "○" &&arr[i + 1][j + 1] == "○" &&arr[i + 2][j + 2] == "○" &&arr[i + 3][j + 3] == "○" &&arr[i + 4][j + 4] == "○") return 0;}for (int j = 14; j > 3; j--){if (//逆斜一样//列从14开始arr[i][j] == "○" &&arr[i + 1][j - 1] == "○" &&arr[i + 2][j - 2] == "○" &&arr[i + 3][j - 3] == "○" &&arr[i + 4][j - 4] == "○") return 0;}}return 1;
}//棋盘--------------------------------------------------------------------------------------void chessboard::build()
{for (int i = 0; i < 15; i++){for (int j = 0; j < 15; j++){arr[i][j] = "  ";}}//初始化棋盘
}
void chessboard::changeblack(int goalx, int goaly, int& goal)//更新点位
{if (arr[goalx][goaly] != "  "){cout << "这一点已经有子了,请重新下一次黑棋" << endl;goal--;}elsearr[goalx][goaly] = "○";
}
void chessboard::changewhite(int goalx, int goaly, int& goal)//更新点位
{if (arr[goalx][goaly] != "  "){cout << "这一点已经有子了,请重新下一次白旗" << endl;goal--;}elsearr[goalx][goaly] = "●";
}
void chessboard::out()
{cout << "    0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  " << endl;for (int i = 0; i < 15; i++){cout << "---------------------------------------------------------------" << endl;if (i < 10)cout << i << " | ";elsecout << i << "| ";for (int j = 0; j < 15; j++){cout << arr[i][j] << "| ";}cout << endl;}//输出棋盘,每次输入一个点就输出一次棋盘cout << "---------------------------------------------------------------" << endl;
}
//main.cpp
#include <iostream>
#include "wuziqi.h"using namespace std;int main(void)
{chessboard goalboard;//目标棋盘goalboard.build();goalboard.out();for (int i = 1; i < 10000; i++){if (i % 2 != 0)//奇数黑方走,偶数白方走{int x = 0, y = 0;cout << "请输入黑棋x坐标和y坐标" << endl;cin >> y >> x;goalboard.changeblack(x, y, i);//持续更新黑棋盘goalboard.out();if (goalboard.judge() == 0){cout << "游戏结束 黑棋胜利!" << endl;cout << "输入任意坐标重新开始" << endl;goalboard.build();}}else{int x = 0, y = 0;cout << "请输入白棋x坐标和y坐标" << endl;cin >> y >> x;goalboard.changewhite(x, y, i);//持续更新白棋盘goalboard.out();if (goalboard.judge() == 0){cout << "游戏结束 白旗胜利!" << endl;cout << "输入任意坐标重新开始" << endl;goalboard.build();}}}return 0;
}

运行效果图:



PS:

这个小游戏还有不少不足之处,如输入棋子坐标超过棋盘大小怎么办?胜负的判定是否还有更简单的方法?都值得再去思考完善。
菜鸡一枚难免有很多不足之处,欢迎指教!感激不尽!

教你怎么用c++基本语法实现一个简单的五子棋小游戏相关推荐

  1. 《游戏学习》教你上手一个简单的java小游戏《打纸飞机》附源码

    源码下载地址: https://download.csdn.net/download/weixin_40986713/20701376 项目结构目录 部分代码展示 import java.awt.Fo ...

  2. 手把手教你做一个Java贪吃蛇小游戏

    大家好,我是孙不坚1208,这篇博客给大家分享一下:如何做一个贪吃蛇小游戏(Java版)的exe应用程序,希望能给需要帮助的朋友带来方便. 手把手教你做一个Java贪吃蛇小游戏的exe应用程序 一.J ...

  3. Kanvas:从您的ANTLR语法生成一个简单的IDE

    什么是编辑器? 对我来说,编辑器是我工作中使用的主要工具. 作为语言工程师,我创建新的语言,使用现有的语言,并且需要其他工具来使用它们. 我希望能够在一个定制的IDE中将所有这些黑客一起入侵,我可以为 ...

  4. python 某个数是不是在某个范围内_教写一个简单的python小程序(04)

    点击蓝字 关注我们 会酸的柚子 Python爱好者 搞机少年 七夕结束了~ 酸柚也是被强塞了满嘴的狗粮 在这样充满恋爱腐朽气息的一天 酸柚也是马不停蹄的在赶稿子 兄弟们,给我顶起来呀~ 我们来看看今日 ...

  5. C++ 有关string类的基本语法以及一个简单算法 理论加案例的形式

    #include<iostream> using namespace std; #include"string" //string类的头文件 #include" ...

  6. matlab 手把手教你制作五子棋小游戏

    想把以前写过的小游戏出一款详细教程呀 这两天发现五子棋有个简单的写法 虽然说有点弊端但这个程序真的很简单呀 一共只有70多行 相信大家就算没有基础多查多看也能学会吧嗯哒 第一步:界面设置 axis e ...

  7. 手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏

    公众号关注 "菜鸟学Python" 设为 "星标",重磅干货,第一时间送达! 烟花三月下扬州,我想3月能下楼.虽然很多地方都已经开始慢慢的开放了,但是我怀念的胡 ...

  8. 【教程】教你写一个简单的微信小黄鸡

    本文仅供技术交流,如果侵犯到了任何组织或个人的权益,请在本文留言,主页君会妥善处理. 前段时间人人网上的小黄鸡着实火了一把,而最近微信收费风波又炒得沸沸扬扬.主页君凑热闹写一篇教程:如何在微信公众平台 ...

  9. 老程序员教女儿学习java从一个简单的猜数游戏开始

    为了教会女儿学习java花了三天的下班时间编写了一个java猜数字游戏,为了让她感兴趣,同时能理解编程的思路,可惜目标没有达成,现在共享给大家学习. package test; import java ...

最新文章

  1. 全文解析:面向基于区块链的「机器人经济学」概念中,如何验证自主智能体的行为?...
  2. 模拟系统照相机图片裁剪的功能
  3. 2017/Province_C_C++_B/2/等差素数列
  4. 2018年第九届蓝桥杯C/C++ A组国赛 —— 第二题:阅兵方阵
  5. A*,IDA*—高档次的暴搜
  6. python整数加法计算器_Python应用实例赏析2.1简单计算
  7. Python爬取网页
  8. php中会话技术,php session会话技术详解
  9. PostgreSQL11.7逻辑复制的搭建
  10. 小计C/C++问题(1)
  11. 《跟我一起做J2EE版Blog–jPress》4(搭建marven下的Spring和Hibernate)
  12. Atitit 项目的主体设计与结构文档 v3
  13. java 如何执行dig 命令_dig命令简介
  14. 微信小程序开发视频教程
  15. 房地产主数据管理全周期实践[转]
  16. win10 shift+右键打开cmd
  17. eclipse开发首选项
  18. 2018第九届蓝桥杯JavaA组省赛真题详解
  19. 北大最强扫地僧“韦东奕”爆红全网
  20. ps grep 不包括grep本身

热门文章

  1. 今日头条能干掉微信么?
  2. 圈叉游戏c语言,C语言圈叉棋练习.docx
  3. 图像中里面的Ground Truth是什么意思
  4. Spring入门示例
  5. Maven中央仓库地址整理
  6. Java:extends 和 implements 的区别
  7. 关于python安装问题 0x80072f7d的解决方法
  8. 给寸照换底色(抠头发)
  9. 移动端H5页面生成图片解决方案
  10. BEA-090403 Authentication for user admin denied