目录
1、三子棋设置三个文件中
2、数组传参的两种方法
3、三子棋代码
【game.h文件的代码】
【game.c的代码】
【 test.c的代码】
test.c 测试游戏的逻辑
game.h 关于游戏相关的函数声明,符号声明头文件的包含
game.c 游戏相关函数的实现
数组作为函数传参的时候:
形参可以写成2种形式:
- 1.数组形式
- 2.指针形式
【举例说明】
void test1(int arr[10]) //数组形式
{}void test2(int *arr) //指针形式
{}
int main()
{
int arr[10];test1(arr);
test2(arr);
tryutn 0;
}
#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 );
#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|
#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;
}