三子棋介绍
通过二维数组实现简单的三子棋。玩家通过输入棋盘坐标进行下棋,电脑随机生成自己的棋子。
主函数的实现
通过do while循环和switch case实现游戏菜单。
int main() {
int input = 0;
srand((unsigned int)time(NULL));
do {
menu();
printf("请输入你的操作:");
scanf("%d", &input);
switch (input) {
case 1:
game();
break;
case 2:
printf("游戏退出!\n");
break;
default:
break;
}
} while (input);
return 0;
}
二维数组
将二维数组全部致为空格,玩家下的棋子用X表示,电脑的棋子用O表示,即将二维数组中的值改变为相应的字母即可。
玩家的实现代码:
void PlayerMove(char board[][COL], int row, int col) {
int x = 0;
int y = 0;
while (1) {
printf("玩家移动!\n");
printf("请输入1-3的坐标:");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= 3) {
if (board[x - 1][y - 1] == ' ')//判断当前位置有没有被下过棋子
{
board[x - 1][y - 1] = 'X';
break;
}
else {
printf("该位置已经下过棋子!");
}
}
else {
printf("坐标不合法!");
}
}
电脑的棋子由rand()函数随机生成棋盘位置坐标,并且将该位置的值改为O。
游戏规则
oid game(){
int ret;
int board[ROW][COL] = { 0 };
InitBoard(board, ROW, COL);
ShowBoard(board, ROW, COL);
while (1) {
printf("玩家移动:");
PlayerMove(board, ROW, COL);
ShowBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != ' ') {
break;
}
printf("电脑移动:\n");
ComputerMove(board,ROW,COL);
ShowBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != ' ') {
break;
}
}
if (ret == 'X') {
printf("恭喜你赢了!\n");
}
if (ret == 'O') {
printf("你真菜!\n");
}
if (ret == 'Q') {
printf("平局!");
}
}