c語言棋盤遊戲

<pre name="code" class="cpp"># include <stdio.h>

void  init_chessboard(char arr[3][3]);
void print(char arr[3][3]);
char check(char arr[3][3]);
void player_move(char arr[3][3]);
void computer_move(char arr[3][3]);

int main()
{
	char arr[3][3] = {0};
	char done= ' ';
	init_chessboard(arr);
	do
	{
		print(arr);
		player_move(arr);
		done = check(arr);
		if (done != ' ')
			break;
		computer_move(arr);
		done = check(arr);
	}while (done == ' ');
	if (done == 'X')
		printf("玩家贏了!\n");
	else
		printf("電腦贏了!\n");
	print(arr);
	return 0;
}

void init_chessboard(char arr[][3])
{
	int i = 0;
	int j = 0;
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			arr[i][j]=' ';
		}
	}
}

void print(char arr[][3])
{
	int i=0;
	for(i=0;i<3;i++)
	{
		printf(" %c | %c | %c \n",arr[i][0],arr[i][1],arr[i][2]);
		if (i != 2)
			printf("---|---|---\n");
	}
}

void player_move(char arr[3][3])
{
	int x = 0;
	int y = 0;
	printf("input x and y:");
	scanf("%d%d",&x,&y);
	x = x-1;
	y = y-1;
	if (arr[x][y] == ' ')
	{
		arr[x][y] = 'X';
	}
	else
	{
		printf("input error!\n");
		player_move(arr);
	}
}

void computer_move(char arr[][3])
{
	int i = 0;
	int j = 0;
	for (i=0;i<3;i++)
	{
		for (j=0;j<3;j++)
		{
			if (arr[i][j] == ' ')
				break;
		}
		if (arr[i][j] == ' ')
			break;
	}
	if (i*j == 9)
		printf("平局\n");
	else
		arr[i][j] = '0';
}

char check(char arr[][3])
{
	int i = 0;
	for(i=0;i<3;i++)
	{
		if(arr[i][0]==arr[i][1] && arr[i][1]==arr[i][2])
		{
			if (arr[i][0]!=' ')
				return arr[i][0];
		}
}
	for (i=0;i<3;i++)
	{
		if (arr[0][i]==arr[1][i] &&  arr[1][i]==arr[2][i])
		{
			if (arr[0][i]!=' ')
				return arr[0][i];
		}
	}
	if (arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2])
	{
		if (arr[0][0]!=' ')
			return arr[1][1];
	}
	if (arr[0][2]==arr[1][1] && arr[1][1]==arr[2][0])
	{
		if (arr[0][2]!=' ')
			return arr[1][1];
	}
	return ' ';
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章