¡El lenguaje C implementa ajedrez de tres piezas!

 Prefacio: ¡La implementación del ajedrez de tres piezas en lenguaje C se puede dividir en seis pasos!

1: Primero, los preparativos para iniciar el minijuego -----

      En primer lugar, tenemos que elegir al menos una vez al ingresar al minijuego. ¡Usamos una declaración do-- while para lograrlo!

       Luego crea un menú simple-----

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

 Luego use una declaración de selección para que el jugador elija -----

	do
	{
		menu();
		printf("请输入选项->\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1: 
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入->\n");
			break;
		}
	} while (input);

 Ahora ha tomado forma, ¡solo ve al siguiente paso!

2: Crea un tablero de ajedrez (una matriz bidimensional) e inicialízalo----  

//初始化棋盘
	init(board, ROW, COL);

Dar espacios a todas las piezas de ajedrez en el tablero.

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

¡Da el siguiente paso!

3: Imprime el tablero de ajedrez----

//打印棋盘
	display(board, ROW, COL);

Como sugiere el nombre, necesitas imprimir un patrón de "pozo" de 3*3 y asignar valores a sus piezas----

Ejemplo de tabla----

         |   |   
	  ---|---|---
	     |   |   
	  ---|---|---
		 |   |   
	     

La implementación del código es como se muestra en la figura:

void display(char board[ROW][COL], int row, int col)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)                
		{
			printf(" %c ", board[i][j]);
			if(j<col-1)
			printf("|");
		}
		printf("\n");
		if (i < row - 1)
		{
			for (j = 0; j < col; j++)
			{
				printf("---");
				if (j < col-1)
					printf("|");
			}
			printf("\n");
		}
	}
}

¡Vaya al siguiente paso!

4: El jugador comienza a jugar al ajedrez e imprime el tablero de ajedrez ---

	//玩家下棋
		playermove(board, ROW, COL);
		display(board, ROW, COL);

La implementación del código es como se muestra en la figura -----

void playermove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家下棋->\n");
		scanf("%d%d", &x, &y);
		if (x <= row && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else printf("位子被占,请重新输入->\n");
		}
		else printf("输入非法,请重新输入->\n");
	}
}

¡Vaya al siguiente paso!

5: Es el turno de la computadora de empezar a jugar al ajedrez e imprimir el tablero de ajedrez ---

	//电脑下棋
		compmove(board, ROW, COL);
		display(board, ROW, COL);

La implementación del código es como se muestra en la figura----

void compmove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("电脑下棋->\n");
	while (1)
	{
		x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}

Debido a que las computadoras juegan ajedrez sin reglas, ¡se utiliza "marca de tiempo"!

rand()----generará números aleatorios.

El uso de la función rand requiere ---- ¡"srand"!

srand((unsigned int)time(NULL));

Al usar la función "rand", solo necesitas hacer referencia a "srand" una vez, ¡así que ponlo primero!

int main()
{
	srand((unsigned int)time(NULL));

Al mismo tiempo, se requiere un archivo de encabezado----

#include<stdlib.h>
#include<time.h>

Una vez completado, continúe con el siguiente paso.

6: El jugador o la computadora deben determinar el ganador o el perdedor cada vez que juega ajedrez ---

//判断输赢
		ret=iswin(board, ROW, COL);

Hay 4 resultados---Empate---El jugador gana---La computadora gana---Continuar---

Utilice diferentes valores de retorno para emitir juicios---

while (1)
	{
		//玩家下棋
		playermove(board, ROW, COL);
		display(board, ROW, COL);
		//判断输赢
		ret=iswin(board, ROW, COL);
		if (ret != 'c')
			break;
		//电脑下棋
		compmove(board, ROW, COL);
		display(board, ROW, COL);
		ret = iswin(board, ROW, COL);
		if (ret != 'c')
			break;
	}
	if (ret == '*')
		printf("玩家赢\n");
	else if (ret == "#")
		printf("电脑赢\n");
	else printf("平局\n");

La implementación del código de función se muestra en la figura:

int flat(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++)
		{
			if (board[i][j] == ' ')
				return 0;
		}
	}
	return 1;
}

char iswin(char board[ROW][COL], int row, int col)
{
	int i = 0;
	//行
	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][1];
	}
	//列
	int j = 0;
	for (j = 0; j < col; j++)
	{
		if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] != ' ')
			return board[1][j];
	}
	//对角
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
		return board[1][1];
	else if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
		return board[1][1];
	else if (flat(board, ROW, COL) == 1)
		return 'q';
	else return 'c';
}

¡Entonces está bien!

¡Lo principal es tener cuidado, paso a paso, y recordar no cometer errores!

¡Puedes usar varios archivos más durante el proceso de escritura para aclarar la división!

¡Dividí este código en tres archivos!

La siguiente es la implementación del código total---

-----test.c---Nombre de archivo--Archivo de inicio-

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void menu()
{
	printf("***************************\n");
	printf("******    1.play     ******\n");
	printf("******    0.exit       ****\n");
	printf("***************************\n");
}
void game()
{
	char board[ROW][COL] = { 0 };
	//初始化棋盘
	init(board, ROW, COL);
	//打印棋盘
	display(board, ROW, COL);
	int ret = 0;
	while (1)
	{
		//玩家下棋
		playermove(board, ROW, COL);
		display(board, ROW, COL);
		//判断输赢
		ret=iswin(board, ROW, COL);
		if (ret != 'c')
			break;
		//电脑下棋
		compmove(board, ROW, COL);
		display(board, ROW, COL);
		ret = iswin(board, ROW, COL);
		if (ret != 'c')
			break;
	}
	if (ret == '*')
		printf("玩家赢\n");
	else if (ret == "#")
		printf("电脑赢\n");
	else printf("平局\n");
}
int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();
		printf("请输入选项->\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1: 
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入->\n");
			break;
		}
	} while (input);
	return 0;
}

----game.h----Nombre del archivo de encabezado--Responsable de la declaración de funciones

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 3
#define COL 3
void init(char board[ROW][COL],int row,int col);
void display(char board[ROW][COL], int row, int col);
void playermove(char board[ROW][COL], int row, int col);
void compmove(char board[ROW][COL], int row, int col);
char iswin(char board[ROW][COL], int row, int col);

-----game.c----Nombre de archivo---Responsable de la implementación de funciones

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void init(char board[ROW][COL],int row,int col)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			board[i][j] = ' ';
		}
	}
}

void display(char board[ROW][COL], int row, int col)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)                
		{
			printf(" %c ", board[i][j]);
			if(j<col-1)
			printf("|");
		}
		printf("\n");
		if (i < row - 1)
		{
			for (j = 0; j < col; j++)
			{
				printf("---");
				if (j < col-1)
					printf("|");
			}
			printf("\n");
		}
	}
}

void playermove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家下棋->\n");
		scanf("%d%d", &x, &y);
		if (x <= row && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';
				break;
			}
			else printf("位子被占,请重新输入->\n");
		}
		else printf("输入非法,请重新输入->\n");
	}
}

void compmove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("电脑下棋->\n");
	while (1)
	{
		x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}


int flat(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++)
		{
			if (board[i][j] == ' ')
				return 0;
		}
	}
	return 1;
}

char iswin(char board[ROW][COL], int row, int col)
{
	int i = 0;
	//行
	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][1];
	}
	//列
	int j = 0;
	for (j = 0; j < col; j++)
	{
		if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] != ' ')
			return board[1][j];
	}
	//对角
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
		return board[1][1];
	else if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
		return board[1][1];
	else if (flat(board, ROW, COL) == 1)
		return 'q';
	else return 'c';
}

Lo anterior es la implementación del ajedrez de tres piezas en lenguaje C. Si te inspira, ¡dame un juego de tres piezas con un solo clic!

¡Adiós!

Supongo que te gusta

Origin blog.csdn.net/m0_71676870/article/details/130544107
Recomendado
Clasificación