闲暇之余自己写的一个C++三子棋小游戏,分享给大家!

#include <iostream>
#define Chess char *using namespace std;void DrawBoard(Chess chess)
{cout << "-------------" << endl;cout << "| " << chess[0] << " | " << chess[1] << " | " << chess[2] << " |" << endl;cout << "|-----------|" << endl;cout << "| " << chess[3] << " | " << chess[4] << " | " << chess[5] << " |" << endl;cout << "|-----------|" << endl;cout << "| " << chess[6] << " | " << chess[7] << " | " << chess[8] << " |" << endl;cout << "-------------" << endl;
}bool IsWin(Chess chess, char letter)
{return (chess[0] == letter && chess[1] == letter && chess[2] == letter) ||(chess[3] == letter && chess[4] == letter && chess[5] == letter) ||(chess[6] == letter && chess[7] == letter && chess[8] == letter) ||(chess[6] == letter && chess[3] == letter && chess[0] == letter) ||(chess[7] == letter && chess[4] == letter && chess[1] == letter) ||(chess[8] == letter && chess[5] == letter && chess[2] == letter) ||(chess[6] == letter && chess[4] == letter && chess[2] == letter) ||(chess[8] == letter && chess[4] == letter && chess[0] == letter);
}bool IsFull(Chess chess, int index)
{return chess[index] != ' ';
}bool IsFullAll(Chess chess)
{return (IsFull(chess, 0) && IsFull(chess, 1) && IsFull(chess, 2) &&IsFull(chess, 3) && IsFull(chess, 4) && IsFull(chess, 5) &&IsFull(chess, 6) && IsFull(chess, 7) && IsFull(chess, 8));
}int AI(Chess chess)
{for (int i = 0; i <= 8; i++){if (!IsFull(chess, i)){chess[i] = 'O';if (IsWin(chess, 'O'))return i;chess[i] = 'X';if (IsWin(chess, 'X'))return i;chess[i] = ' ';}}for (int i = 0; i <= 8; i++){if (!IsFull(chess, i)){return i;}}return -1;
}int PlayerInput(Chess chess)
{int input;do{cout << "please input a number" << endl;cin >> input;} while (IsFull(chess, input - 1) && !input <= 9 && !input >= 1);return input;
}int main(void)
{char chessBoard[] = {' ', ' ', ' ',' ', ' ', ' ',' ', ' ', ' '};char chessInputBoard[] = {'1', '2', '3','4', '5', '6','7', '8', '9'};int input;cout << "Game begin" << endl;cout << "You go first" << endl;for (;;){DrawBoard(chessInputBoard);int in = PlayerInput(chessBoard);chessBoard[in - 1] = 'X';chessInputBoard[in - 1] = 'X';DrawBoard(chessBoard);if (IsFullAll(chessBoard)){cout << "The game is full" << endl;break;}if (IsWin(chessBoard, 'X')){cout << "You win!" << endl;break;}cout << "The computer go" << endl;int ai = AI(chessBoard);chessBoard[ai] = 'O';chessInputBoard[ai] = 'O';DrawBoard(chessBoard);if (IsFullAll(chessBoard)){cout << "The game is full" << endl;break;}if (IsWin(chessBoard, 'O')){cout << "Computer win!" << endl;break;}cout << "It's your turn" << endl;}cout<<"The game is over"<<endl;cout<<"Thank you for your play"<<endl;return 0;
}

三子棋 小游戏 C++相关推荐

  1. 三子棋小游戏(超详细)

    目录 一.实现三子棋游戏的基本逻辑 二.具体的函数实现 1. 菜单函数 2. 棋盘的实现 2.1 棋盘的初始化 2.2 棋盘的打印 3. 玩家下棋 4. 电脑下棋 5.判断棋盘状态 三. 三个文件 3 ...

  2. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  3. 使用C语言编写三子棋小游戏

    使用C语言编写三子棋小游戏: 首先进行分析: 1.需要将游戏实现分为三个部分:头文件,函数功能实现,游戏组合测试. 2.游戏可以循环进行,不必多次打开,可采用 do...while循环结构. 3.游戏 ...

  4. C语言实现三子棋小游戏(编程思路以及代码详解)

    目录 前言 一.三子棋游戏的实现逻辑 二.创建菜单并控制游戏开始或游戏结束 三.创建棋盘并且初始化棋盘 四.打印棋盘并验证打印棋盘和初始化棋盘模块的实现 五.玩家下棋 六.电脑下棋 六.输赢判断 七. ...

  5. 如何制作三子棋小游戏

    首先,一个游戏的制作,必须由大化小,分步完成. 当我们想要制作三子棋小游戏时,必须先搞清楚这个小游戏的逻辑和原理. 三子棋是黑白棋的一种.三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋 ...

  6. C语言小项目--三子棋小游戏

    学了这么长时间的C语言,你是否觉得没有一个没写过稍微长点的代码显得很没有成就感!不怕,今天带你做一个小游戏,领略一下写C和小游戏的快乐.写完记得给自己一个鼓励哦! 一.三子棋小游戏 想必大家都玩过三子 ...

  7. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)

    前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...

  8. 呆头呆脑的电脑----三子棋小游戏(C语言版)

    目录 1.需求分析 2.程序架构 3.代码实现(分函数呈现) (1)主函数代码实现 分析: 异常处理: (2)菜单函数的实现 分析: (3)游戏函数的实现 分析: (4)棋盘的初始化 分析: (5)棋 ...

  9. 趣讲用c语言实现三子棋小游戏

    目录 直接先看看最后运行效果吧 三子棋如何设计的,及其步骤 1,源文件已经头文件的创建 2.创建主函数 3.test函数的创建 4.game函数的创建和运行 5.五个函数的实现 a.init_boar ...

  10. 三子棋小游戏带你走进编程世界(c语言版)

    目录 一.游戏实现的整体思路 二.实现游戏大体框架 二.游戏函数的实现 1.初始化键盘 2.打印棋盘 3.下棋及胜负判断 (1)玩家下棋 (2)电脑下棋 (3)判断输赢 三.结语及源码 三子棋想必大家 ...

最新文章

  1. P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐
  2. python的try菜鸟_python异常处理try except过程解析
  3. 怎么用python创建文件-如何用Python创建生成xml文档文件的方法
  4. 清楚xcode缓存(老是忘记所有记下来方便以后查阅)
  5. 注意力机制并不是关注输入的位置
  6. Alarm Clocks Everywhere
  7. 1463. Happiness to People!
  8. 基于Java封装Groovy工具类
  9. ElasticSearch实践(三)Rest API简介
  10. 【原创】关于java中的lock
  11. python复数运算程序_python复数-python,复数
  12. Ubuntu 问题合集
  13. 金蝶K3系统单据对应ICTemplate表单ID信息
  14. android 8.1 wifi感叹号,Android 网络图标上的感叹号(更新Android 7.1.1/Android 8)
  15. 指数灰度变换法 matlab,matlab指数灰度变换
  16. 6-32 表头插入法构造链表
  17. java中隐函数求导法则_隐函数求导的三种方法
  18. 前端css样式如何设置内边框
  19. canvas图形缩放功能
  20. 网站加入代码让网页以电脑端打开_发现一个超级好用的视频播放网站-酷播云...

热门文章

  1. 在NI TestStand中使用回调
  2. CSS 实现地图点位Marker
  3. pb使用http方式上传下载文件
  4. r语言clind函数_19 函数进阶 | R语言教程
  5. 万能地图下载器的不同授权在矢量地图下载功能上有哪些区别?
  6. midas显示代理服务器错误,midas运行后出错大神帮忙看看哪错了
  7. 【西门子PLC S7-200smart与汇川变频器通过通讯控制】
  8. maven-maven使用-P参数打包不同环境
  9. javaweb--请求转发
  10. linux netperf,Netperf性能测试工具