问题描述:

让两个人在计算机上玩井字游戏(也称圈叉游戏)。

井字游戏就是一个3X3的方格,两个人轮流在方格中输入标记X 或者 O 。谁先使自己的3个标记链接成水平,垂直或对角线。谁就是赢家。

运行结果:

代码部分(代码说明):

#include <stdio.h>
int main()
{   int player = 0;        //Current player number -1 or 2?int winner = 0;            //The winning player numberunsigned int i = 0;int choice = 0;         //Chosen squareunsigned int row = 0;       //Row index for a squareunsigned int column = 0;   //Column index for a squareunsigned int line  = 0;char board[3][3] = {        //The board{'1','2','3'},     //Initial values are characters '1' to '9'{'4','5','6'},      //used to select a vacant square{'7','8','9'}     //for a player`s turn              };//The main game loop, The game continues for up to 9 turns//as loong as there is no winnerfor(i = 0;i < 9 && winner ==0;++i){//Display the boardprintf("\n");printf(" %c | %c | %c \n",board[0][0],board[0][1],board[0][2]);printf("---+---+---\n");printf(" %c | %c | %c \n",board[1][0],board[1][1],board[1][2]);printf("---+---+---\n");printf(" %c | %c | %c \n",board[2][0],board[2][1],board[2][2]);//有一种让两个玩家轮流输入标记的办法,将两个玩家识别为1和2,编号为1的玩家先玩。然后根据轮流的次数决定输入标记的玩家的号码。//轮到奇数号码时候  就由玩家1输入标记。轮到偶数号时,就由玩家2输入标记。player = i%2 + 1; //Select player  1 or 2//Get valid player square selection do{printf("Player %d,please enter a valid square number""for where you want to place your %c: ",player,(player == 1) ? 'X' : 'O');
//轮到一个玩家输入标记时,需要一种方法标记选择出来的方格。可以用1~9的数字标记这9个方格。玩家只需要输入要选择的方格数字。scanf("%d",&choice);

row = --choice/3; //Get row index of squarecolumn = choice % 3; //Get column index of square}while(choice < 0 || choice > 8 || board[row][column] > '9'); //有三种可能导致选择无效:*输入的方格数小于0; *输入的方格数大于8; *选择已包含X或者O的方格(因为X O 的字符码都大于9)//Insert player symbloboard[row][column] = (player == 1) ? 'X' : 'O';//Check for a winning line - diagonals first if((board[0][0] == board[1][1] && board[0][0] == board[2][2]) || (board[0][2] == board[1][1] && board[0][2]== board[2][0]))winner = player;else{//Check row and columns for a winning line for(line = 0;line <= 2;++line ){if((board[line][0] == board[line][1] && board[line][0] == board[line][2]) || (board[0][line] == board[1][line] && board[0][line] == board[2][line]))winner = player;}}/*Code to check for a winner*/}/*Code to output the game*///Game is over so display the final boardprintf("\n");printf(" %c | %c | %c \n",board[0][0],board[0][1],board[0][2]);printf("---+---+---\n");printf(" %c | %c | %c \n",board[1][0],board[1][1],board[1][2]);printf("---+---+---\n");printf(" %c | %c | %c \n",board[2][0],board[2][1],board[2][2]);//Display result message if(winner)printf("\nCongratulation,player %d,YOU ARE THE WONNER!\n",winner);elseprintf("\nHow boring , it is a draw\n");return 0;}

MODE —— 两个人在计算机上玩圈叉游戏|井字游戏(知识点:二维数组)相关推荐

  1. 请输入班级人数,然后输入每个人的语文数学和英语成绩,并且打印出语文的两个最高分,数学的两个最低分。和英语的平均分(使用二维数组)

    题目: 请输入班级人数,然后输入每个人的语文数学和英语成绩,并且打印出语文的两个最高分,数学的两个最低分.和英语的平均分(使用二维数组) 代码如下: package XunHuanShuZu;impo ...

  2. java二维数组两个框代表什么_在java语言中,二维数组的两个中括号[][]分别表示()和()。...

    [判断题]一元统计分析是研究一个随机变量统计规律的学科. [判断题]合伙创业的成功率一般低于独资创业的成功率. [单选题]镜检时呈"竹节状"排列的是 [判断题]酵母菌的菌落与放线菌 ...

  3. 怎么在php中加拼图游戏,js+html5实现可在手机上玩的拼图游戏

    本文实例讲述了js+html5实现可在手机上玩的拼图游戏.分享给大家供大家参考.具体如下: 手机版的拼图.pc上用Chrome 或者 Firefox var R=(function(){ /*右边菜单 ...

  4. 圈叉游戏 java_【炫光圈叉棋】炫光圈叉棋 Tic Tac Toe Glow 1.8.1下载_安卓(android)软件下载-魅族溜...

    一款炫光风格的圈叉棋游戏,支持单/双人模式.圈叉棋,英文:tic-tac-toe,别名:圈叉游戏.是一种游戏,3*3的9个方格子,先下者画圈,后下者画叉,每人可以在任意没有对方棋子的封闭方格里下一次, ...

  5. 嵌入式 ARM 汇编编程例题(二维数组按规律求和,求两数 gcd / lcm,求数组 min / max,字符串复制,排序)

    文章目录 0x00. 整数加减乘除 0x01. 一维数组按某种规律求和 0x01.1 求 1~100 之和 0x01.2. 求一维数组的和 0x01.2. 求一维数组的所有奇数的和 0x02. 二维数 ...

  6. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

  7. 二维数组中的查找(两种解法,各有千秋)

    凡事都有可能,永远别说永远.--<放牛班的春天> 今天一题为再一个行列都有序的二维数组中寻找一个目标值,我们第一时间想到的可能是很暴力的解法,例如从头到尾进行遍历,这样能做出来,但是借用武 ...

  8. 江哥带你玩转C语言| 12 -二维数组和字符串

    二维数组 所谓二维数组就是一个一维数组的每个元素又被声明为一 维数组,从而构成二维数组. 可以说二维数组是特殊的一维数组. 示例: int a[2][3] = { {80,75,92}, {61,65 ...

  9. 0015-OpenCV环境下计算并绘制HSV空间的H-S的二维联合直方图

    上篇博文(https://blog.csdn.net/lehuoziyuan/article/details/84064822)介绍了灰度直方图的计算,是一维的直方图,这篇博文介绍运用calcHist ...

最新文章

  1. Web后门工具WeBaCoo
  2. 遗传算法入门到掌握(一)
  3. Oracle发布Solaris 11 for Sparc/x86
  4. APPLE STORE
  5. [转]其实每个男孩都想做一个感情专一的好男人
  6. CentOS 7.5 重置 root 密码
  7. export和import 输出/接收模块变量的接口
  8. Power BI----各类切片器的使用
  9. C - Make Good(构造,思维)
  10. 什么是mybatis,全是干货
  11. Linux文件查看与处理
  12. Excel表格列多选
  13. Day5 Four English Grammer Mistakes Made By French Speakers
  14. pytdx 调用沪深300 所有股票实时行情
  15. KalmanFilter
  16. 2021 市场上cmr硬盘盘点
  17. ppt文件不能打印出来怎么回事?
  18. 7-1 计算个人所得税
  19. ftok函数的key值是如何产生的
  20. BeautifulSoup

热门文章

  1. window下删除无效的区域通知图标
  2. 【转载】C# 获取系统时间及时间格式
  3. mac os 下 Android Studio设置真机调试
  4. 仿写百度百科的目录树
  5. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】
  6. 数字发行:电子书、电影、游戏、音乐
  7. oracle之to_date函数
  8. ssh_config sshd_config 详解
  9. mysql show语句_mysql常用show语句
  10. OpenStack Neutron浅析(三)