函数封装(数组的使用,通过棋盘游戏)

#include<stdio.h>
#include<stdlib.h>
int main()
{
 void  empty(char arr[][3]);
 void   print(char arr[][3]);
 void   player(char[][3]);
 void   conplay(char[][3]);
 char  check(char arr[][3]); 
 char  arr[3][3];
 char  key;
 printf("游戏开始");
 printf("\n");
 empty(arr);
 print(arr);
 do
 {
  player(arr);
  key=check(arr);
  if(key!=‘ ‘)
   break;
  conplay(arr);
  key=check(arr);
  print(arr);
 }while(key==‘ ‘);
 if(key==‘X‘)
 {
  print(arr);
  printf("玩家胜出\n");
 }
 else 
 {
  print(arr);
  printf("电脑胜出\n");
  
 }
 return 0;  
}
void  empty(char arr[][3])
{
 int i,j;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   arr[i][j]=‘ ‘;
}
void   print(char  arr[][3])
{
 int i;
 for(i=0;i<3;i++)
 {
  printf(" %c | %c | %c ",arr[i][0],arr[i][1],arr[i][2]);
  printf("\n");
  if(i!=2)
   printf("---|---|---");
  printf("\n");
 }
}
void  player(char  arr[][3])
{
 int i,j;
 printf("请输入所要下的位置:");
 scanf("%d%d",&i,&j);
 if(i>3||j>3)
 {
  printf("输入错误,再重新输入\n");
  player(arr);
 }
 
    if(arr[i-1][j-1]!=‘ ‘)
    {
     printf("此位置已被填充,请重新输入");
     player(arr);
    }
    else  
     arr[i-1][j-1]=‘X‘;
}
void   conplay(char  arr[][3])
{
    int i,j;
    for(i=0;i<3;i++)
    {
     for(j=0;j<3;j++)
     {
      if(arr[i][j]==‘ ‘)
       arr[i][j]=‘O‘;
      else  
       continue;
      return 0;
     }
    }
}
char  check(char arr[][3])
{
    int i;
    for(i=0;i<3;i++)
    {
     if(arr[i][0]==arr[i][1]&&arr[i][0]==arr[i][2])
      return arr[i][1];
     else  if(arr[1][i]==arr[2][i]&&arr[1][i]==arr[0][i])
      return arr[1][i];
     else  if(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2])
      return (arr[0][0]);
     else  if(arr[2][0]==arr[1][1]&&arr[1][1]==arr[0][2])
      return (arr[2][0]);
    }
    return ‘ ‘;
}
时间: 2024-08-29 20:32:59

函数封装(数组的使用,通过棋盘游戏)的相关文章

封装一个函数, 求数组的和.

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script> //封装一个函数, 求数组的和. //实例: console.log( sum([1, 2, 3, 4, 5]) ); 返回结果: 15; function

用工厂函数封装对象

工厂函数是在方法中建立一个Object空对象,然后再对此对象添加属性和方法,然后把Object对象返回 <html> <head> <title>工厂函数封装对象</title> <script type="text/javascript"> // 工厂函数模式封装对象 //特点:返回结果为对象的函数,在用工厂函数创建对象的时候,一定要new function fn(nianling){ var obj=new object(

第4弹;函数及数组

函数与数组 函数 函数的定义 函数就是定义在类种的具有特定功能的一段独立小程序,函数也称之为方法. 函数的格式1:修饰符 返回值类型 函数名(参数类型 参数1,参数类型 参数2){ 执行语句 return 返回值:} return:用于结束函数. 函数的格式2:修饰符 void 函数名(参数类型 参数1,参数类型 参数2){ 执行语句 return 返回值:} 当函数运算后,没有具体的返回值时,这时返回类型用一个特殊的关键字来标识.该关键字就是void,void代表的是函数没有返回值.我们就可以

JS——tab函数封装

1.为li标签添加index属性,这个属性正好就是span标签数组的index值 2.函数封装适合页面有多个tab切换,需要注意的在获取的li标签和span标签对象时,必须将对应div对象作为参数传入 li标签添加index属性 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <s

【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包含:数组类.浏览器类.日期类.函数类.数学类.媒体类.节点类.对象类.字符串类.类型检测类.正则表达式类等内容. 使用方法 1. 引入Bable transpiler以保证支持ES6 <script type="javascript/text" src="./browser

react request.js 函数封装

1.request.js  函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from '../store'; import { push } from 'react-router-redux'; import qs from 'qs'; // 请求路径 const BaseUrl = 'https://www.baidu.com/'; // 主机及端口 //axios默认配置请求的

用 PHP 函数变量数组改变代码结构

项目越做越大,代码越来越乱,维护困难.原因很多吧.起初为了实现功能,并没有注重代码的结构,外包公司嘛.虽然公司的项目负责人一直考虑复用.封装,但是我觉得基本上没有达到想要的效果.因为整个代码中没有没有用到设计模式,这样结构肯定好不到哪去.虽然很多功能都封装了,但是分层特别的乱,有种为了封装而封装的感觉.其实,很多东西我也不懂,但是写完代码之后,偶尔还是会去把代码的结构稍微的修改修改,尽量的少给自己挖坑吧. 代码结构的问题 接口有大量的方法,调用接口时需要使用 switch 进行判断,大致结构如下

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中::表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

【C/C++学院】0726-cppIDE/一级指针/指针数组/函数指针/函数指针数组/二级指针

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. cppIDE 使用mfc和codeblocks中的mingw编译器.执行system命令中的bat批处理脚本. 一级指针 指针,结构体struct,