0
点赞
收藏
分享

微信扫一扫

C语言--三步棋

Gaaidou 2022-01-23 阅读 154

目录

一:框架

1.菜单

2.初始化棋盘

3.打印棋盘

4.玩家下棋

 6.判断输赢


 

一:框架

1.菜单

void meun()
{
	printf("********************\n");
	printf("*******1.play*******\n");
	printf("*******0.exit*******\n");
	printf("********************\n");
}


int main()
{   //srand((unsigned int)time(NULL));电脑下棋会用到,不知道srand的去看我的博客
	int input=0;
	do
	{
		meun();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();//选择1开始游戏

			break;
		case 0:
			printf("退出游戏");
			break;
		default:
			printf("选择错误");
			break;
		}
	} while (input);

	return 0;
}

2.初始化棋盘

void InitBoard(char board[ROW][COL], int row,int col)
{
	int j,i = 0;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			board[i][j] = ' ';
		}
	}

}

3.打印棋盘

void DisplayBoard(char board[ROW][COL], int row, int col)
{
	int i, j;
	
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			printf(" %c ", board[i][j]);//有两个空格更美观些
			if (j < col - 1)//先打印数据,再打印列的分割 | ;每行需要两个|所以col-1
			{
				printf("|");
			}
		}
		printf("\n");//打印完一行 换行
		for (j = 0; j < col; j++)
		{
			printf("---");//一共打印三次
			if (j < col - 1)
			{
				printf("|");
			}
		}
		printf("\n");
	}

}

4.玩家下棋

void play_board(char board[ROW][COL], int row, int col)
{
	int x, y;
	printf("玩家下棋:\n");
	while (1)
	{
		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= row && y <= col && y>=1)
		{
			if (board[x-1][y-1] == ' ')
			{
				board[x-1][y-1] = '*';
				break;
			}
			else
			{
				printf("坐标已被占用,请重新输入:");
			}
		}
		else
		{
			printf("输入无效,请重新输入:");
		}
	}
}

5.电脑下棋

void computer_board(char board[ROW][COL], int row, int col)
{
	printf("电脑下棋:\n");
	while (1)
	{
		int x = rand() % 3 + 1;//和前面的srand一起用
		int y = rand() % 3 + 1;
	
		if (board[x - 1][y - 1] == ' ')
		{
			board[x - 1][y - 1] = '#';
			break;
		}
	}
}

 6.判断输赢

//
//什么情况,游戏就结束了
//玩家赢 - '*'
//电脑赢 - '#'
//平局   - 'Q'
//继续   - 'C'
//

char is_win(char board[ROW][COL], int row, int col)
{
	int i, j;
	//三行
	for (i = 0; i < row; i++)
	{
		if (board[i][0] == board[i][1] && board[i][1] == board[i][2]&& board[i][1] !=' ')
		{                                 //一定要&&哦!
			return board[i][0];
			/*if (board[i][0] == '*')
			{
				return '*';
			}
			else
			{
				return '#';
			}*/
		}
	}
	//三列
	for (i = 0; i < col; i++)
	{
		if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
		{

			return board[1][i];
			/*if (board[i][0] == '*')
			{
				return '*';
			}
			else
			{
				return '#';
			}*/
		}
	}
	//对角线
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
	{

		return board[0][0];
	}
	if (board[0][2] == board[1][1]&& board[1][1] == board[2][0]&& board[1][1] != ' ')
	{
		return board[0][2];
    }
	if (if_full(board, ROW, COL) == 1)
	{
		return 'Q';
	}
	return 'c';
}
举报

相关推荐

0 条评论