大家好, 相信大家小时候都和同桌下过三子棋,在一个九宫格内有一方如果横三、竖三、斜三有一个满足都是自己的旗子的话就获胜,今天,树哥教大家用代码的形式,写出属于自己的三子棋游戏,与自己的电脑来玩一把三子棋。
目录
“游戏的整体思路”
“游戏的整个算法实现”
1、打印菜单
2、初始化棋盘
3、打印棋盘
4、玩家下棋
5、电脑下棋
6、判断输赢
“最终的代码实现”
“总结”’
“游戏的整体思路”
首先,我们要创造三个文件,一个test.c文件用来测试我们的游戏内容,一个game.c文件用来存放我们写入的自定义函数,一个game.h用来给我们写的自定义函数进行声明。
test.c ---- 测试游戏内容
game.c ----- 存放自定义函数
game.h -------- 对自定义函数进行声明
“游戏的整个算法实现”
1、打印菜单
当我们进入游戏的时候,首先应该打印我们的菜单界面,让玩家选择下棋或是不下,选择下棋则进入游戏,否则退出游戏
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//游戏整个算法实现
void game()
{
printf("玩游戏.\n");
}
//菜单函数
void menu()
{
printf("************************\n");
printf("** 1.play 0.exit **\n");
printf("************************\n");
}
void test()
{
int input = 0;
do
{
menu();
printf("请输入:>");
scanf("%d", &input);
switch (input)
{
case 1:
//输入1,进入游戏
game();
break;
//输入0,退出游戏
case 0:
printf("退出游戏。\n");
break;
//输入其他值,输入非法,请重新输入
default:
printf("输入非法,请重新输入。\n");
break;
}
} while (input);
}
int main()
{
test();
return 0;
}
结果展示:
2、初始化棋盘
此时,我们 已经将菜单打印好了,现在,我们要定义一个二维数组(board [ROW] [COL]),用来表示 我们九宫格内每个棋子的落子位置,ROW代表棋盘的行数,COL代表棋盘的列数,由于后面我们会重复用到棋盘的行数和列数,不妨直接定义
#define ROW 3
#define COL 3 之后需要行和列时直接用ROW于COL来表示即可。注意:定义放在game.h中,这样避免重复定义,需要用到行、列是在头文件中引用“game.h”即可。
定义InitBoard(board, ROW, COL)函数来实现棋盘数组的初始化。
代码实现:
game.h中的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 3
#define COL 3
//函数声明
void InitBoard(char board[ROW][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 < row; i++)
{
for (j = 0; j < col; j++)
{
board[i][j] = ' ';
}
}
}
test.c中的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "game.h"
//游戏整个算法实现
void game()
{
//数组存放走出的棋盘信息
char board[ROW][COL] = { 0 };
//初始化棋盘
InitBoard(board, ROW, COL);
}
//菜单函数
void menu()
{
printf("************************\n");
printf("** 1.play 0.exit **\n");
printf("************************\n");
}
void test()
{
int input = 0;
do
{
menu();
printf("请输入:>");
scanf("%d", &input);
switch (input)
{
case 1:
//输入1,进入游戏
game();
break;
//输入0,退出游戏
case 0:
printf("退出游戏。\n");
break;
//输入其他值,输入非法,请重新输入
default:
printf("输入非法,请重新输入。\n");
break;
}
} while (input);
}
int main()
{
test();
return 0;
}
3、打印棋盘
现在,棋盘数组的初始化已经完成了,接下来,我们需要玩家在输入1也就是选择玩游戏是,将我们的棋盘打印在屏幕上,让玩家看见。
定义DisplayBoard(board, ROW, COL)来打印棋盘。
代码实现:
game.h中的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#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);
game.c中的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
//初始化棋盘数组
void InitBoard(char