案例分析:

每个玩家轮流输入下棋,要求使用在二维数组3*3中实现。

玩家1(棋子代表为:&)玩家2(棋子代表为:%)双方用char类型二维数组来记录棋子信息

判断胜负后询问是否继续游戏

代码实现具体如下:

#include<iostream>
using namespace std;
//声明全局变量
char board1[3][3];
bool gameover=true;
int winner = 0;
//声明函数定义
void printboard(char a[3][3]);
void win_fail2(char a[3][3]);
//设置一个棋盘的初始值为
char input(char a[3][3])
{for (int x = 0; x < 3; x++){for (int y = 0; y < 3; y++){ a[x][y] = ' ';}}return a[3][3];
}
//打印棋盘
void printboard(char a[3][3])
{system("cls");for (int x = 0; x < 3; x++){cout << " +---+---+---+" << endl;for (int y = 0; y < 3; y++){cout << " | " << a[x][y];}cout << " | ";cout << "\n";}cout << " +---+---+---+" << endl;win_fail2(a);
}
//玩家1输入
char palyer1(char a[3][3])
{int x = 0;int y = 0;cout << "请玩家1落子!!"<<endl;while (1){cout << "请输入x的坐标";cin >> x;cout << "请输入y的坐标";cin >> y;if (x <=0 || x > 3 || y <=0 || y > 3){cout << "您输入的坐标有误!!请重新输入" << endl;continue;}if (a[x - 1][y - 1] != ' '){cout << "此位置已经有子,不能落子!!" << endl;continue;}a[x - 1][y - 1] = '&';break;}return a[3][3];
}
//玩家2输入
char palyer2(char a[3][3])
{int x = 0;int y = 0;cout << "请玩家2落子!!" << endl;while(1){ cout << "请输入x位置的坐标";cin >> x;cout << "请输入y位置的坐标";cin >> y;if (x <= 0 || x > 3 || y <= 0 || y > 3){cout<<"您输入的坐标有误!!请重新输入"<<endl;continue;}if (a[x - 1][y - 1] != ' '){cout<<"此位置已经有子,不能落子!!"<<endl;continue;}a[x - 1][y - 1] = '%';break;}return a[3][3];
}
//判断棋盘是否已经满了
int Isfull(char a[3][3])
{//找不到空格了,说明满了//满了返回1,没满返回0for (int row = 0; row < 3; row++){for (int col = 0; col < 3; col++){if (a[row][col] == ' ') {return 0;//没满}}}return 1;
}
//判断结果
void win_fail2(char a[3][3])
{if (a[0][0] == '&' && a[0][1] == '&'&& a[0][2] == '&'){winner = 1;}if (a[1][0] == '&' && a[1][1] == '&'&& a[1][2] == '&'){winner = 1;}if (a[2][0] == '&' && a[2][1] == '&'&& a[2][2] == '&'){winner = 1;}if (a[0][0] == '&' && a[1][0] == '&'&& a[2][0] == '&'){winner = 1;}if (a[0][1] == '&' && a[1][1] == '&'&& a[2][1] == '&'){winner = 1;}if (a[0][2] == '&' && a[1][2] == '&'&& a[2][2] == '&'){winner = 1;}if (a[0][0] == '&' && a[1][1] == '&'&& a[2][2] == '&'){winner = 1;}if (a[0][2] == '&' && a[1][1] == '&'&& a[2][0] == '&'){winner = 1;}//红方胜利if (a[0][0] == '%' && a[0][1] == '%'&& a[0][2] == '%'){winner = 2;}if (a[1][0] == '%' && a[1][1] == '%'&& a[1][2] == '%'){winner = 2;}if (a[2][0] == '%' && a[2][1] == '%'&& a[2][2] == '%'){winner = 2;}if (a[0][0] == '%' && a[1][0] == '%'&& a[2][0] == '%'){winner = 2;}if (a[0][1] == '%' && a[1][1] == '%'&& a[2][1] == '%'){winner = 2;}if (a[0][2] == '%' && a[1][2] == '%'&& a[2][2] == '%'){winner = 2;}if (a[0][0] == '%' && a[1][1] == '%'&& a[2][2] == '%'){winner = 2;}if (a[0][2] == '%' && a[1][1] == '%'&& a[2][0] == '%'){winner = 2;}//检测棋盘满没满if (Isfull(a)){winner = 3;}}//是否继续游戏并输出胜利者
char pdwin_fail(char a[3][3])
{if (winner < 1){cout << "未分胜负,请继续" << endl;}else{if (winner == 1){gameover = false;cout << "玩家1胜利" << endl;cout << "是否继续游戏呢?1继续,0退出" << endl;cin >> gameover;if(gameover){a[3][3] = input(a);printboard(a);winner = 0;}}else if (winner == 2){gameover = false;cout << "玩家2胜利" << endl;cout << "是否继续游戏呢?1继续,0退出" << endl;cin >> gameover;if (gameover){a[3][3] = input(a);printboard(a);winner = 0;}}else{gameover = false;cout << "你两五五开" << endl;cout << "是否继续游戏呢?1继续,0退出" << endl;cin >> gameover;if (gameover){a[3][3] = input(a);printboard(a);winner = 0;}}}return a[3][3];
}
//主函数:
int main()
{//初始化棋盘变量board1[3][3] = input(board1);//打印棋盘printboard(board1);//玩家1和玩家2分别循环下棋while (gameover) {//玩家1下棋打印棋盘board1[3][3] = palyer1(board1);printboard(board1);board1[3][3] = pdwin_fail(board1);if (!gameover){break;}//玩家2下棋打印棋盘board1[3][3] = palyer2(board1);printboard(board1);board1[3][3] = pdwin_fail(board1);}cout << "游戏结束,感谢你们的参与!" << endl;system("pause");return 0;
}

这个简单的井字棋小游戏使用二维数组的方式来编写,大大提高了我对二维数组的认识,

在后期调试阶段,由于本人经验不足,在判断玩家胜利条件的众多条件数组中,没有认真仔细分析获胜条件,导致后期调试用了大量时间,借此审视自己的不足之处。

井字棋游戏案例C++语言相关推荐

  1. c语言井字棋程序设计报告,井字棋游戏(课程设计)总结报告.doc

    井字棋游戏(课程设计)总结报告 C语言贪吃蛇游戏设计总结报告 PAGE PAGE 5 丽水学院 计算机信息学院 <C语言课程设计(短一)> 指 导 书 二 ○ 一一 年 三 附件二 封面格 ...

  2. C语言第十课:编写井字棋游戏(综合练习1)

    目录 前言: 一.文件建立: 1.头文件game.h: 2.函数定义文件game.c: 3.工程测试文件test.c: 二.编写井字棋游戏: 1.程序整体执行思路: 2.menu菜单函数实现: 3.g ...

  3. Python基础编程案例:简单的井字棋游戏设计与制作

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 前言 python井字棋游戏虽然看上去非常简陋,但是却非常值得学习. 先看怎么玩 ...

  4. C语言实现“井字棋”游戏(三子棋)人机对弈

    井字棋游戏:即三子棋,英文名叫Tic-Tac-Tic,是一种在3*3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边线框,格线排成井字故得名. 题目分析 : 要完成该游戏的编写,我们需要先分 ...

  5. java——博弈算法实现井字棋游戏

    通过java语言开发了一个简单的井字棋游戏.主要有6个类,其中有一个是主类(Main.java),一个是抽象类(PiecesMove.java)组成. 下面对各个类简单介绍一下: TicTicToe. ...

  6. php 井字棋,怎样用JS做出井字棋游戏

    这次给大家带来怎样用JS做出井字棋游戏,用JS做出井字棋游戏的注意事项有哪些,下面就是实战案例,一起来看一下. 最近有一门课结束了,需要做一个井字棋的游戏,我用JavaScript写了一个.首先界面应 ...

  7. php井字游戏代码_JS实现井字棋游戏步骤详解

    这次给大家带来JS实现井字棋游戏步骤详解,JS实现井字棋游戏的注意事项有哪些,下面就是实战案例,一起来看一下. 最近有一门课结束了,需要做一个井字棋的游戏,我用JavaScript写了一个.首先界面应 ...

  8. php井字游戏,python实现井字棋游戏

    #本游戏python3.4.0下编写调试,只能在windows下运行. import random import subprocess import time #定义函数 def draw_board ...

  9. Minimax 和 Alpha-beta 剪枝算法简介,及以此实现的井字棋游戏(Tic-tac-toe)

    前段时间用 React 写了个2048 游戏来练练手,准备用来回顾下 React 相关的各种技术,以及试验一下新技术.在写这个2048的过程中,我考虑是否可以在其中加入一个 AI 算法来自动进行游戏, ...

最新文章

  1. 牛客小白月赛7 B 自杀游戏
  2. USACO Training Section 1.2 挤牛奶Milking Cows
  3. [原]RHCS集群的服务切换测试札记
  4. Java BigInteger类| and()方法与示例
  5. 标星7000+,这个 Python 艺术二维码生成器厉害了!
  6. 2019春晚百度App日活破3亿 百度系App霸榜AppStore
  7. sql如何遍历几百万的表_SQl SERVER 2000 遍历表中数据的方法
  8. Oracle 数据块损坏与恢复具体解释
  9. WebForms简介
  10. shell 字符串中是否包含任一字符串
  11. rds对mysql优化_RDS MySQL优化方案
  12. 小学生C++编程启蒙
  13. jQuery siblings()用法与实例。
  14. python大数据挖掘系列之淘宝商城数据预处理实战
  15. C语言学生成绩管理系统——检查学号姓名,双向循环链表
  16. 谁拿了奖金?HID2020竞赛、研讨会及颁奖典礼
  17. 搭建一套基于 Groovy 规则引擎的业务风控平台
  18. linux软件 mac地址,Linux MAC地址
  19. 关键项目遇见瓶颈,你会如何应对?
  20. Qt编写可视化大屏电子看板系统3-新建布局

热门文章

  1. 图片怎么转文字?这些方法值得收藏
  2. 3D游戏设计——模型与动画
  3. android 多个style,Android style详解
  4. Java第二次实训课堂
  5. 线上拼团活动方案怎么制作设计?
  6. asp.net core 防止机密信息外泄GitHub
  7. 搭建内网音频直播源基于天津相声广播音频
  8. python制作冰花_《冰花》教学反思
  9. 什么是苹果cms?苹果cms如何安装及使用?
  10. python实现单机斗地主手机版下载_单机斗地主(单机版)无需网络下载