保定商城网站建设,如何优化关键词排名快速首页,购物网站制作免费,小程序制作步骤这是C语言小游戏三子棋的代码实现
test.c文件是用来测试的部分
game.h文件是用来声明我们说写出的函数
game.c文件是用来编写我们的功能实现函数部分
1.test.c
#define _CRT_SECURE_NO_WARNINGS 1
#includegame.h
void menu()
{printf(***************…这是C语言小游戏三子棋的代码实现
test.c文件是用来测试的部分
game.h文件是用来声明我们说写出的函数
game.c文件是用来编写我们的功能实现函数部分
1.test.c
#define _CRT_SECURE_NO_WARNINGS 1
#includegame.h
void menu()
{printf(*************************\n);printf(******* 1.play *******\n);printf(******* 2.exit *******\n);printf(*************************\n);
}void game()
{//存放玩家或者电脑的落子情况char board[ROW][COL];char ret 0;//初始化棋盘为全空格----用init_board函数init_board(board, ROW,COL);//打印棋盘----print_boaardprint_board(board, ROW, COL);while (1){player_move(board, ROW, COL);//玩家下棋实现print_board(board, ROW, COL);//打印//判断输赢retis_win(board,ROW,COL);if (ret ! C){break;}computer_move(board, ROW, COL);//电脑下棋print_board(board, ROW, COL);//判断输赢ret is_win(board, ROW, COL);if (ret ! C){break;}}if (ret #)printf(电脑赢\n);else if (ret *)printf(玩家赢\n);else if (ret Q)printf(平局\n);
}//判断输赢
//判断输赢的代码电脑赢了 玩家赢了 平局 继续进行
//电脑赢#
//玩家赢*
//平局Q
//游戏继续C
void test()
{srand((unsigned int)time(NULL));int input 0;do {menu();printf(请选择:---);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(输入错误\n);break;}} while (input);
}
int main()
{test();return 0;}2.game.h
#pragma once
#define ROW 3 //行
#define COL 3 //列
#includestdio.h
#includestdlib.h
#includetime.h
//头文件声明函数
//初始化棋盘
void init_board(char board[ROW][COL],int row,int col);//打印棋盘
void print_board(char board[ROW][COL], int row, int col);//玩家下棋
void player_move(char board[ROW][COL],int row,int col);//电脑下棋
void computer_move(char board[ROW][COL], int row, int col);//判断输赢的函数
char is_win(char board[ROW][COL], int row, int col);3.game.c
#define _CRT_SECURE_NO_WARNINGS 1
#includegame.h//棋盘初始化函数
void init_board(char board[ROW][COL], int row, int col)
{int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){board[i][j] ;}}
}//打印棋盘函数
void print_board(char board[ROW][COL], int row, int col)
{int i 0;for (i 0; i row; i){//printf( %c | %c | %c \n, board[i][0], board[i][1], board[i][2]);int j 0;for (j 0; j col; j){printf( %c , board[i][j]);if(jcol-1)printf(|);}printf(\n);if (i row - 1){//printf(---|---|---\n);int j 0;for (j 0; j col; j){printf(---);if (j col - 1)printf(|);}printf(\n);}}
}void player_move(char board[ROW][COL], int row, int col)
{printf(玩家下棋\n);while (1){printf(请输入要输入的坐标--);int x 0;//行int y 0;//列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 computer_move(char board[ROW][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;}}
}//只希望is_full函数只用来支持is_win函数只是在id_win函数内部使用
// 没必要在头文件中声明
//判断棋盘是否满了的函数
static int is_full(char board[ROW][COL], int row, int col)
{int i 0;int j 0;for (i 0; i row; i){for (j 0; j col; j){if (board[i][j] )return 0;}}return 1;
}char is_win(char board[ROW][COL], int row, int col)
{int i 0;//判断三行for (i 0; i row; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! ){return board[i][0];}}//判断三列for (i 0; i col; i){if (board[0][i] board[1][i] board[1][i] board[2][i] board[0][i] ! ){return board[0][i];}}//对角线if (board[0][0] board[1][1] board[1][1] board[2][2] board[1][1] ! ){return board[1][1];}if (board[0][2] board[1][1] board[1][1] board[2][0] board[1][1] ! ){return board[1][1];}//平局棋盘满没满if (is_full(board, row, col) 1){returnQ;}//继续//没有玩家或者电脑赢也没有平局游戏继续return C;
}