【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;
}

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...