El lenguaje C implementa un juego simple de tres ajedrez.

Tener una cierta comprensión y comprensión del conocimiento básico del lenguaje C y ser capaz de resolver algunos problemas simples a través de la programación en lenguaje C. Use la programación en lenguaje C para completar un juego simple "Three Connects".

Introducción al juego : el tablero de ajedrez común de 3x3 tiene dos jugadores. El efecto logrado en esta versión es una batalla hombre-máquina. Al jugar al ajedrez uno por uno, si un lado forma un vínculo de tres caracteres, se determina que este lado gana. Si toda la cubierta del tablero de ajedrez está llena y aún no ha formado un enlace de tres caracteres, entonces se considera tablas.

Idea de codificación : el tablero de ajedrez está implementado por una matriz de 3x3. Diferentes jugadores corresponden a diferentes personajes. Cada vez que una pieza de ajedrez se coloca en una posición, corresponde a asignar un valor a la posición. Cada vez que se juega un ajedrez, será juzga si hay un ganador y si ha sido un empate, o el juego puede continuar, y así hasta el final.
inserte la descripción de la imagen aquí

Esta codificación utiliza lenguaje C, un total de cinco funciones, cada una responsable de las funciones correspondientes.

void Menu()//Completa la planificación de todo el juego y la interfaz
void Game()//El marco del juego integra toda la idea del juego
void playermove()//El jugador coloca las piezas de ajedrez
char Judge( )//Determina si un lado gana o empata
void computerMove()//Coloca las piezas de ajedrez por computadora
En la codificación, las piezas de ajedrez de la computadora se colocan generando un número entero aleatorio. Después de la generación, determina si la posición se puede colocar. Si no, genera números aleatorios de nuevo.

#include<stdio.h>  

#pragma warning(disable:4996);

#include"C:\Users\尽欢\source\repos\ConsoleApplication2\game.h"

int main()
{
int select = 0;
while (1) {
Menu();
scanf("%d", &select);
switch (select)
{
case 1:
Game();
break;
case 2:
system("exit");
break;
default:
printf("输入有误!\n");
break;
}
return 0;
}
}

#ifndef __GAME_H__
#define __GAME_H__

#include <stdio.h>
#include <time.h>
#include <windows.h>
#pragma warning(disable:4996)

#define ROW 3
#define COL 3

#define P_COLOR 'X'
#define C_COLOR 'O'
#define NEXT 'N'
#define DRAW 'D'

void Menu();
void Game();
#endif
#include"game.h"
void Menu()
{
printf("   三子棋    ");
printf("-------------------");
printf("|  1.开始游戏  |");
printf("|  2.退出游戏  |");
printf("-------------------");
printf("请选择");
}

void Game()
{
srand((unsigned long)time(NULL));
char board[ROW][COL];
memset(board, ' ', sizeof(board));
char reselt = 'x';
do {
ShowBoard(board, ROW, COL);
PlayerMove(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != NEXT) {
break;
}
ComputerMove(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != NEXT) {
break;
}
} while (1);

if (P_COLOR == result) {
printf("你赢了!\n");
}
else if (C_COLOR == result) {
printf("你输了!\n");
}
else {
printf("和棋!\n");

}
ShowBoard(board, ROW, COL);
}

}

void playermove(char board[][COL], int row, int col)
{
int x = 0;
int y = 0;
int quit = 0;
while (1) {
printf("请输入你的位置:");
scanf("%d %d", x, y);
if (x < 1 || x>3 || y < 1 || y>3)
{
printf("你输入的位置有误!\n");
continue;
}
else if (board[x - 1][y - 1] != ' ')
{
printf("该位置已经被占用\n");
}
else
{
board[x - 1][y - 1] = P_COLOR;
break;
}
}
}

char Judge(char board[][COL], int ROW, int col)
{
for (int i = 0;i < row;i++) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ')
return board[i][0];
}
for (int j = 0; j < col; j++) {
if (board[0][j] == board[1][j] && \
board[1][j] == board[2][j] && \
board[0][j] != ' ') {
return board[0][j];
}
}

if (board[0][0] == board[1][1] && \
board[1][1] == board[2][2] && \
board[0][0] != ' ') {
return board[1][1];
}

if (board[0][2] == board[1][1] && \
board[1][1] == board[2][0] && \
board[1][1] != ' ') {
return board[1][1];
}

for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (board[i][j] == ' ') {
return NEXT;
}
}
}

return DRAW;
}

void ComputerMove(char board[][COL], int row, int rol)
{
while (1)
{
int x = rand() % row;
int y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = C_COLOR;
break;
}
}
}

Supongo que te gusta

Origin blog.csdn.net/qq_45742383/article/details/113409299
Recomendado
Clasificación