C语言-三子棋游戏
C语言中用写头文件的方式写了一个三子棋游戏
1.测试函数text.c
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include"chess.h"void menu()
{printf("***********************\n");printf("****** 1.play *******\n");printf("****** 0.exit *******\n");printf("***********************\n");printf("请选择相应的数字>:");
}int main()
{char board[LINE][LIST];int input = 1;int a = 0;srand((unsigned int)time(NULL));while (input){memset(board, ' ', sizeof(char)*LINE*LIST);menu();scanf("%d", &input);printf("\n");switch (input){case 1:a = game(board);break;case 0:break;default:printf("你的输入不符合要求,请重新输入>:"); break;}if (0 == input){break;} }printf("游戏结束,欢迎再次使用!!!\n");return 0;
}
2.头文件chess.h
#ifndef __CHESS_H__
#define __CHESS_H__#define LINE 3
#define LIST 3int game(char board[LINE][LIST]);
void Player(char board[LINE][LIST]);
void Computer(char board[LINE][LIST]);
void ChessBoard(char board[LINE][LIST]);
int Check(char board[LINE][LIST]);
//void ChessBoard(int LINE,int LIST ); 此语句错误,不可以直接用宏作为参数,头文件中不可以这样写,LIST和LINE可以作为实参,不可以作为形参
#endif //__CHESS_H__
3.函数文件chess.c
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"chess.h"void ChessBoard(char board[LINE][LIST])
{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]);printf("\n\n");
}int game(char board[LINE][LIST])
{ChessBoard(board);//为了使电脑赢了之后可以显示出棋盘来while (1){Player(board);ChessBoard(board);if (Check(board)){return 0;}Computer(board);ChessBoard(board);if (Check(board)){return 0;}}
}void Player(char board[LINE][LIST])
{int x = 0, y = 0;int m = 1;//设置m是为了使输入数据不合法printf("玩家玩\n请输入坐标>:");while (m){scanf("%d%d", &x, &y);printf("\n");if ((x >= 1 && x <= 3) && (board[x - 1][y - 1] == ' ')){board[x - 1][y - 1] = 'X';m = 0;}else{printf("数据不符合要求\n请重新输入>:");}}
}void Computer(char board[LINE][LIST])
{int x = 0, y = 0;int m = 1;printf("电脑玩\n");while (m){x = rand()% 3;y = rand()% 3;if (board[x][y] == ' '){board[x][y] = '#';m = 0;}}
}int Check(char board[LINE][LIST]) //When you pass an array, you must add the brackets in the back of the array.
{int i = 0,j = 0,flag = 0;for (i = 0; i <= 2; i++){if (((board[i][0] == board[i][1]) && (board[i][1] == board[i][2]) && (board[i][0] == 'X')) || ((board[0][i] == board[1][i]) && (board[1][i] == board[2][i]) && (board[0][i] == 'X'))){printf("The player wins the game!!!\n\n");return 1;}if (((board[i][0] == board[i][1]) && (board[i][1] == board[i][2]) && (board[i][0] == '#')) || ((board[0][i] == board[1][i]) && (board[1][i] == board[2][i]) && (board[0][i] == '#'))){printf("The computer wins the game!!!\n\n");return 1;}if (((board[0][0] == board[1][1]) && (board[0][0] == board[2][2]) && (board[0][0] == 'X')) || ((board[0][2] == board[1][1]) && (board[0][2] == board[2][0]) && (board[0][2] == 'X'))){printf("The player wins the game!!!\n\n");return 1;}if (((board[0][0] == board[1][1]) && (board[0][0] == board[2][2]) && (board[0][0] == '#')) || ((board[0][2] == board[1][1]) && (board[0][2] == board[2][0]) && (board[0][2] == '#'))){printf("The computer wins the game!!!\n\n");return 1;}for (j = 0; j <= 2; j++) //平局{if (' ' != board[i][j]){flag++;}}if (9 == flag){printf("平局\n");return 1;}}return 0;
}
相关文章:

取余运算怎么算_TensorFlow2.0(2):数学运算
点击“机器学习算法与Python实战”,“置顶”公众号重磅干货,第一时间送达TensorFlow2.0(1):基本数据结构——张量1 基本运算:(、-、*、/、//、%) 基本运算中所有实例都以下面的张量a、b为例进行:import tensorflow as …

xen二进制安装
需要几台机器做集群测试,目前只有一台机器所以用xen来虚拟化几台机器出来 系统: centos5.6 安装xen yum install kernel-xen xen修改grub /boot/grub/grub.conf将default1改为default0 default0 timeout5 splashimage(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.…
python模块之json,pickle
序列化是指把内存里的数据转变成字符串,以使其能保存到硬盘上或者通过网络输送到远程。 序列化的两个模块: json:只能把python中的int/str/list/tuple/dict类型的数据,可以在不同的语言之间传递数据。Python和JavaScript数据对应关系…

关于如何在pc端使用github
http://www.bcwhy.com/thread-17636-1-1.html转载于:https://www.cnblogs.com/glgl2424/archive/2013/03/13/2956944.html
Python爬虫1-Scrapy环境的安装
一. Scrapy环境的安装 1. Scrapy各平台支持情况 除了python3在Windows下不支持外,其余(Linux,Mac)均支持 2. 安装miniconda (1)建议使用Python2,用miniconda安装scrapy (2)miniconda时Python环境管理工…

汉字笔画数据_统计学原理 数据的预处理
数据审核数据审核—原始数据(raw data)完整性审核应调查的单位或个体是否有遗漏所有的调查项目或变量是否填写齐全准确性审核数据是否真实反映实际情况,内容是否符合实际数据是否有错误,计算是否正确等数据审核—二手数据(second hand data)适用性审核弄…

SqlServer时间函数的使用例子整理
为什么80%的码农都做不了架构师?>>> 整理SqlServer2008的时间函数如下: 1.获取系统时间 select getdate(); --2012-05-06 22:26:49.950 select current_timestamp; --2012-05-06 22:26:49.950 select getutcdate(); --20…

bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理
题面 题目传送门 解法 考虑容斥原理 显然,我们可以枚举有多少个人没有收到 然后就转化成一个组合问题了 假设现在有\(x\)个物品,\(n\)个人,可以有人没有被分到,那么分给这\(n\)个人的方案数为\(nx-1\choose n-1\) 然后就是分别计算…
Python爬虫2-GET_POST与开发者工具
一. GET_POST与开发者工具 1. 浏览器的基本工作规则 浏览器请求访问服务器,服务器返回数据 (1) 请求的格式 GET:长度不能大于2k参数明文显示在地址栏,不保密,通常用在查询请求 POST:长度可以很大,参数写…

springcloud是什么_阿里P8道出,入职阿里必会199道SpringCloud面试题,你能掌握多少?...
前言Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里,Spring Cloud 一共发布了 46 个版本,支持的组件数从 5 个增加到 21 个。Spring Cloud…

不一样的命令行 – Windows PowerShell简介
引子 一直很羡慕Linux的命令提示符(当然他们叫Shell)。正则表达式,管道,各种神奇的命令,组合起来就能高效完成很多复杂的任务。效率实在是高。流了n年的哈喇子以后,终于有幸用上了Win7,邂逅了cm…

excel中会计专用格式问题_解决方法
excel 2003在使用格式中当选择会计专用会出现负号在左,数字在右的情况.这类设置并不是在excel中完成,而是在控制面板,区域和语言选项---自定义中设置---货币中设置,-¥1.1改为¥-1.1就可以解决了.包括千位分割样式保留的小数点位数等都可以在这里进行设置来…

Spring.Net Aop
Spring.Net 有四种通知: IMethodBeforeAdvice,IAfterReturningAdvice,IMethodInterceptor,IThrowsAdvice BeforeAdvice 1 using System.Reflection;2 using Spring.Aop;3 public class BeforeAdvice : IMethodBefore…

Oracle to_char函数的使用方法
本文转载于:https://blog.csdn.net/mikyz/article/details/69397030 本文转载于:https://www.cnblogs.com/aipan/p/7941917.html 本文转载于:https://blog.csdn.net/jinlong5200/article/details/3135949 转载于:https://www.cnblogs.com/demon09/p/9485627.html

python装饰器教学_Python装饰器学习(九步入门)
这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式。第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*-示例1: 最简单的函数,表示调用了两次def myfunc():print("myfunc() called.")myfunc()myfunc()第二…

跨平台表空间传输(linux 10g表空间跨平台迁移到window 11g)
最近公司的一个项目里的linux 系统中的oracle 10g数据库,需要把某个表空间里的所有数据都迁移到window 2003的11g里,经过我与dba的交流、测试,决定使用跨平台的表空间传输技术,目前此项任务已经完成,经过测试ÿ…

YY的GCD 莫比乌斯反演
~~~题面~~~ 题解: $ans \sum_{x 1}^{n}\sum_{y 1}^{m}\sum_{i 1}^{k}[gcd(x, y) p_{i}]$其中k为质数个数 $$ans \sum_{i 1}^{k}\sum_{x 1}^{n}\sum_{y 1}^{m}[gcd(x, y) p_{i}…

python答辩结束语_Beta答辩总结
前言队名:拖鞋旅游队项目的链接与宣传项目总结原计划实现功能预期完成程度上传照片完美实现照片信息标注在地图上对于有地理信息的照片能够较为精确的定位足迹地图可视化能够用颜色区分出到到每个省份的程度以及显示到达的地点生成旅游故事能够生成不同的故事模板&a…
在一台电脑上使用两个github账号
问题描述: 我公司有一个github账号,每天工作把代码传上去,我觉得代码写的好,我同时想上传到自己的github账号上面去,但是目前只有一台电脑,如何在一台电脑上面进行设置,使这一台电脑可以同时上传…

[唐胡璐]QTP框架 - 关键字驱动测试框架之七 - Settings管理
这里主要是存放一些框架相关的Global设置的相关项,如图所示:转载于:https://www.cnblogs.com/yongfeiuall/archive/2013/03/18/4134155.html

ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider
NameValueCollectionValueProvider采用一个NameValueCollection作为数据源,DictionnaryValueProvider的数据源类型自然就是一个Dictionnary。NameValueCollection和Dictionnary都是一个键值对的集合,它们之间的不同之处在NameValueCollection运行元素具有…

串口 发送 接收 高位_电工进阶PLC大神,必备PLC串口通讯的基本知识!
戳上方蓝字“技成电工课堂”快速关注!!!电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗?1,什么是串口通讯?串口是计算机上一种…

HTTP请求时connectionRequestTimeout 、connectionTimeout、socketTimeout三个超时时间的含义...
1.connectionRequestTimout 指从连接池获取连接的timeout 2.connetionTimeout 指客户端和服务器建立连接的timeout, 就是http请求的三个阶段,一:建立连接;二:数据传送;三,断开连接。超时后会Con…

搜索引擎优化培训教程
很详细的搜索引擎优化培训教材 View more presentations from mysqlops 转载于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2967982.html

C语言-扫雷游戏
头文件 #ifndef __MINE_H__ #define __MINE_H__#define LINE 10 #define LIST 10 #define ROWS 6 #define COWS 6int game(char UserBoard[LINE2][LIST2], char PlayerBoard[LINE][LIST]); void PrintBoard(char Playerboard[LINE][LIST]); void MineLay(char UserBoard[LINE …

PHP的命令行脚本调用
1.使用PHP命令调用php脚本接受键盘输入然后输出 1 <?php 2 fwrite(STDOUT, "Please input your name:\t"); 3 $name trim(fgets(STDIN)); 4 fwrite(STDOUT, Hello . $name); 5 ?> 2.使用PHP命令调用php脚本并接受参数 1 <?php2 if($ar…

控制输入框只能输入数字
1.将input的属性type改为number 2.这时的输入框会有小箭头, 去掉小箭头的方法,给input添加样式 input::-webkit-outer-spin-button,input::-webkit-inner-spin-button { -webkit-appearance: none;}input[type"number"] { -moz-appearan…
main函数参数,在VS中向命令行添加参数的方法
问题描述 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例…

2.monotouch 控件的使用
1.我们打开一个xib 右下角会看到如下图所示: 这一部分包含了界面和各种各样的控件。选取一个控件,使用鼠标拖动到界面上即可使用。 2.选中一个控件,该控件的相关信息会在右边进行显示。做出相关设置即可。 3.设置控件属性和绑定控件事件。 首…

python视频延迟严重_【Python】改善 VideoCapture 的影像延迟
许多的范例程序大多仅介绍该如何用 VideoCapture 撷取摄影机的画面,却没有充分说明其隐含的问题。以下示范一个最基本的影像撷取程序。# -*- coding: utf-8 -*-import cv2# ip camera 的撷取路径URL "rtsp://admin:admin192.168.1.1/video.h264"# 建立 V…