Lenguaje C para realizar partidas pequeñas de tres ajedrez y cinco ajedrez

La realización del ajedrez de tres piezas y del ajedrez de cinco piezas C son iguales, y deben dividirse en las siguientes partes para realizarlas respectivamente. A continuación se presenta principalmente la realización de tres ajedrez.

1. Inicialización del
tablero 2. Visualización del tablero
3. Entrada del jugador
4. Determinar si hay una situación de tres piezas
5. Entrada automática por la computadora
6. Determinar si hay una situación de tres piezas
 
 

1. Inicialización de la placa:

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

Configura todos los personajes del primer tablero ' '.
 
 

2. Pantalla de tablero de ajedrez:

void ShowArr(char Arr[][COL], int row, int col)
{
    
    
	int i = 0;
	printf("-----------\n");
	printf("   1| 2| 3|\n");
	printf("-----------\n");
	for (; i < row; i++)
	{
    
    
		printf("%d| %c| %c| %c|\n", i+1, Arr[i][0], Arr[i][1], Arr[i][2]);
		printf("-----------\n");
	}
}

Inserte la descripción de la imagen aquí
Aquí hay un tablero de ajedrez de 3 * 3. No tiene por qué ser complicado, simplemente muéstrelo.
 
 

3. Entrada del jugador:

int PlayerArr(char Arr[][COL], int row, int col)
{
    
    
	printf("Please input your row and col:>");
	int i = 0;
	int j = 0;
	scanf("%d %d", &i, &j);
	if (i >= 1 && i <= 3 && j >= 1 && j <= 3)
	{
    
    
		if (Arr[i-1][j-1] != ' ')
		{
    
    
			return 2;  //该位置已经有点了,不能再输入
		}
		else
		{
    
    
			Arr[i - 1][j - 1] = BLACK;
			return 1;  //输入正确
		}
	}
	return -1;  //坐标输入错误
}

Se muestra la entrada por el jugador: ‘X’.
Inserte la descripción de la imagen aquí
Aquí el método de entrada del jugador, elijo ingresar las coordenadas desde el teclado. Si la entrada es incorrecta (el rango es incorrecto) o las coordenadas ya son un poco, se mostrará un error y se le pedirá al jugador que ingrese nuevamente.
 
 

4. Determine si hay tres subcondiciones:

int JudgeArr(char Arr[][COL], int row, int col)
{
    
    
	int i = 0;
	for (;i<row;i++)//每行三子,且不为空
	{
    
    
		if (Arr[i][0]!=' '&& Arr[i][0] == Arr[i][1] && Arr[i][1] == Arr[i][2])
		{
    
    
			return Arr[i][0];
		}
	}
	for (i=0; i < row; i++)//每列三子,且不为空
	{
    
    
		if (Arr[0][i] != ' '&&Arr[0][i] == Arr[1][i] && Arr[1][i] == Arr[2][i])
		{
    
    
			return Arr[0][i];
		}
	}
	if (Arr[0][0] != ' '&&Arr[0][0] == Arr[1][1] && Arr[1][1] == Arr[2][2])
	{
    
    
		return Arr[0][0];
	}//主对角线,且不为空
	if (Arr[0][2] != ' '&&Arr[0][2] == Arr[1][1] && Arr[1][1] == Arr[2][0])
	{
    
    
		return Arr[0][2];
	}//副对角线,且不为空
	for (i = 0; i < row; i++)
	{
    
    
		int j = 0;
		for (; j < col; j++)
		{
    
    
			if (Arr[i][j] == ' ')
			{
    
    
				return 'E'; //Empty,棋盘还有空,继续下棋
			}
		}
	}
	return 'D';//Draw,棋盘满了,未有输赢,平局
}

El juicio se hace después de que el jugador y la computadora ingresen. Hay 8 situaciones para ganar o perder: tres niños en cada fila, tres niños en cada columna, diagonales principal y viceversa, y ninguna de ellas está vacía .
Otras dos situaciones:

  1. El tablero es gratis, sigue jugando
  2. El tablero de ajedrez está lleno, sin victorias ni derrotas, un empate
     
     

5. Entrada automática de computadora:

void ComputerArr(char Arr[][COL], int row, int col)
{
    
    
	while (1)
	{
    
    
		int i = rand() % row;
		int j = rand() % col;
		if (Arr[i][j] == ' ')
		{
    
    
			Arr[i][j] = WHITE;
			break;
		}
	}
	Sleep(500);
	printf("Computer done!\n");

}

Aquí, las funciones srand y rand se utilizan para generar números aleatorios. Cuando las filas y columnas generadas, cuando el tablero de ajedrez correspondiente está vacío en este momento, caen en la pieza de ajedrez, y la pieza de ajedrez de la computadora está ‘O’. Aquí se establece un pequeño retraso.
Inserte la descripción de la imagen aquí
 
 

6. Determina si hay tres hijos.

Esto es lo mismo que el paso 4 anterior.

 
 

Procedimiento de juego:

void Game()
{
    
    
	printf("\n游戏开始!\n");
	char Arr[ROW][COL];
	InitialArr(Arr, ROW, COL);
	char ret = 'E'; //Empty,棋盘最开始全为空,返回值可为D,WHITE和BLACK
	int ProRet = 0;
	while (1)
	{
    
    
		ShowArr(Arr, ROW, COL);
		again: //输入不对的情况,重新输入
	    ProRet=PlayerArr(Arr, ROW, COL);
		if (2 == ProRet)
		{
    
    
			printf("该位置已经有点了,请重新输入\n");
			goto again;
		}
		else if (-1 == ProRet)
		{
    
    
			printf("坐标输入有误,请重新输入\n");
			goto again;
		}
		else
		{
    
    
			printf("Player done!\n");
			Sleep(500);
		}
	    ret=JudgeArr(Arr, ROW, COL);
		if (ret != 'E')//不等于空,棋盘满了,不执行了
		{
    
    
			break;
		}
		ComputerArr(Arr, ROW, COL);
		ret = JudgeArr(Arr, ROW, COL);
		if (ret != 'E')//不等于空,棋盘满了,不执行了
		{
    
    
			break;
		}
	}
	ShowArr(Arr, ROW, COL);
	switch (ret)//进行判定,谁输谁赢,平局
	{
    
    
	case BLACK:
		printf("\n恭喜你,你赢了!\n");
		break;
	case WHITE:
		printf("\n很遗憾,你输了!\n");
		break;
	case 'D':
		printf("\n平局,再接再厉!\n");
		break;
	default:
		break;
	}
	printf("\n游戏结束!\n");
}

Inserte la descripción de la imagen aquí
La imagen de muestra de Gobang es la misma que el método de realización de Sanbang.

He puesto los programas de tres ajedrez y gobang en mi Github. Si lo necesitas, recógelo : tres ajedrez y gobang

Supongo que te gusta

Origin blog.csdn.net/w903414/article/details/105622734
Recomendado
Clasificación