【19】C语言 | 三子棋
创始人
2024-05-16 08:23:17
0

目录

1、三子棋设置三个文件中

2、数组传参的两种方法

3、三子棋代码

【game.h文件的代码】

【game.c的代码】

【 test.c的代码】


1、三子棋设置三个文件中

test.c 测试游戏的逻辑

game.h 关于游戏相关的函数声明,符号声明头文件的包含

game.c 游戏相关函数的实现

 

2、数组传参的两种方法

数组作为函数传参的时候:

形参可以写成2种形式:

  • 1.数组形式
  • 2.指针形式

【举例说明】


void test1(int arr[10])   //数组形式
{}void test2(int *arr)    //指针形式
{}
int main()
{
int arr[10];test1(arr);
test2(arr);
tryutn 0;
}

3、三子棋代码

【game.h文件的代码】

#define _CRT_SECURE_NO_WARNINGS 1//头文件的包含
#include
#include
#include//符号的定义
#define ROW 3 
#define COL 3//函数的声明//初始化棋盘的
void InitBoard(char board[ROW][COL],int row,int col);//打印棋盘的函数
void DisplayBoard(char board[ROW][COL],int row,int col);//玩家下棋
void PlayerMove(char board[][COL],int row,int col);//电脑下棋
void ComputerMove(char board[][COL],int row,int col);//1、玩家赢了输出*
//2、电脑赢了输出#
//3、平局输出q
//4、游戏继续输出c//判断游戏有输赢
char IsWin(char board[][COL],int row,int col );

【game.c的代码】

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"//初始化棋盘的
void InitBoard(char board[ROW][COL],int row,int col)
{int i = 0;int j = 0;for(i=0; i\n");while(1){printf("请输入下棋的坐标:>");scanf("%d %d",&x,&y);//判断坐标的合法性if(x>=1 && x<=row && y>=1 && y<=col){//下棋//判断是否占用if(board[x-1][y-1] == ' '){board[x-1][y-1] = '*';break;}else{printf("坐标被占用,请重新输入\n");}}else{printf("坐标输入非法,请重新输入\n");}}
}//电脑下棋
void ComputerMove(char board[][COL],int row,int col)
{printf("电脑走:>\n");while(1){int x = rand()%row;int y = rand()%col;if(board[x][y] = ' '){board[x][y] = '#';break;}}}int IsFull(char board[][COL],int row,int col)
{int i = 0;int j = 0;for(i=0; i

【 test.c的代码】

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void menu()
{printf("***********************************\n");printf("*********     1.play     **********\n");printf("*********     0.exit     **********\n");printf("***********************************\n");
}
void game()
{char ret = 0;//接受游戏状态//存储数据 二维数组char board[ROW][COL];//初始化棋盘  初始化空格 InitBoard(board,ROW,COL);//打印以下棋盘DisplayBoard(board,ROW,COL);while(1){//玩家走PlayerMove(board,ROW,COL);DisplayBoard(board,ROW,COL);//判断玩家手机否赢ret = IsWin(board,ROW,COL);if(ret != 'c')break;//电脑走ComputerMove(board,ROW,COL);DisplayBoard(board,ROW,COL);//判断玩家手机否赢ret = IsWin(board,ROW,COL);if(ret != 'c')break;}if(ret =='*'){printf("玩家赢了\n");}else if(ret == '#'){printf("电脑赢了\n");}else{printf("平局\n");}DisplayBoard(board,ROW,COL);
}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:<");scanf("%d",&input);switch(input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输入错误\n");break;}}while(input);return 0;
}

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...