C language-three chess-mind map-code

Write a mind map before writing code

code show as below:

head File:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COL 5
#define STA 3

//menu
void menu();
//Initialize the chessboard
void InitBoard(char board[ROW][COL], int row, int col);
// print the chessboard
void PrintBoard(char board[ROW][COL], int row, int col);
//The player plays chess
int PlayerMove(char board[ROW][COL], int row, int col);
//Computer playing chess
int ComputerMove(char board[ROW][COL], int row, int col);
// judge win or lose
char IsWin(char board[ROW][COL], int row, int col, int x, int y);
// Judgment of column direction
char Arrange(char board[ROW][COL], int row, int col, int x, int y);
//line judgment
char Line(char board[ROW][COL], int row, int col, int x, int y);
//judgment of diagonal
char Diagonal(char board[ROW][COL], int row, int col, int x, int y);
//judgment of anti-diagonal
char Back_Diagonal(char board[ROW][COL], int row, int col, int x, int y);
// is it full
int IsFull(char board[ROW][COL], int row, int col);

Source file text.c:

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"

//menu
void menu()
{
printf("************************\\
");
printf("****** 1,play *****\\
");
printf("******0.exit *****\\
");
printf("************************\\
");
}
void game()
{
char board[ROW][COL] = { 0 };
//Initialize the chessboard
InitBoard(board, ROW, COL);
// print the chessboard
PrintBoard(board, ROW, COL);
char sel = 0;
while (1)
{
\t\t
//The player plays chess
sel = PlayerMove(board, ROW, COL);
// print the chessboard
PrintBoard(board, ROW, COL);
if (sel != 'C')
{
break;
}

\t\t\t
//Computer playing chess
sel = ComputerMove(board, ROW, COL);
// print the chessboard
PrintBoard(board, ROW, COL);
if (sel != 'C')
{
break;
}
}
if (sel == '*')
printf("The player won\\
");
else if (sel == '#')
printf("The computer won\\
");
else
printf("Tie\\
");
}

int main()
{

\t
int input = 0;
\t
srand((unsigned)time(NULL));

do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("Exited!\\
");
break;
default:
printf("Input error! Please re-enter:\\
");
break;
}
} while (input);

    return 0;
}

Source file game.h:

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"

//Initialize the chessboard
void InitBoard(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] = ' ';
}
}

}

// print the chessboard
void PrintBoard(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 ++ )
{
if (0 == i)
{
printf(" %d ", j);
}
else if (i != 0 & amp; & amp; j == 0)
printf(" %d ", i);
else
printf(" %c ", board[i][j]);
\t\t\t\t
\t\t\t
}
printf("\\
");
}*/
int i = 0;
for (i = 0; i < row; i ++ )
{
int j = 0;
for (j = 0; j < col; j ++ )
{
if (0 == i & amp; & amp; j != col-1)
{
printf(" %d ", j);
if (j < col - 2)
printf("|");
}
\t\t\t
else if (i != 0 & amp; & amp; j == 0 & amp; & amp; i != row - 1)
{
printf(" %d ", i);
if (j < col - 2)
printf("|");
}
else if (i == row - 1 || j == col - 1)
printf(" ");
else
{
printf(" %c ", board[i][j]);
if (j < col - 2)
printf("|");
}


}
printf("\\
");
if (i < row-1)
{
for (j = 0; j < col - 1; j ++ )
{
printf("---");
if (j < col - 2)
printf("|");
}
}
printf("\\
");
}
}

//The player plays chess
int PlayerMove(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
\t
while (1)
{
printf("Please enter the coordinates to play chess, separated by spaces:\\
");
scanf("%d %d", &x, &y);
\t\t
if (board[x][y] == ' ')
{
board[x][y] = '*';
break;
}
printf("Illegal input! Please re-enter:\\
");
}
\t
char rec = IsWin(board, ROW, COL, x, y);
if (rec == '*')
return board[x][y];
}

//Computer playing chess
int ComputerMove(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
x = rand() % (row - 1);
y = rand() % (col - 1);
if (x != 0 & amp; & amp; y != 0 & amp; & amp; board[x][y] == ' ')
{
board[x][y] = '#';
break;
}
}
char rec = IsWin(board, ROW, COL, x, y);
if (rec == board[x][y])
return board[x][y];
\t
}

// judge win or lose
//Player wins '*'
//Computer wins '#'
// draw 'Q'
// continue with 'C'
char IsWin(char board[ROW][COL], int row, int col, int x, int y)
{
char temp = 0;
temp = Arrange(board, ROW, COL, x, y);
if (temp == board[x][y])
return board[x][y];
temp = Line(board, ROW, COL, x, y);
if (temp == board[x][y])
return board[x][y];
temp = Diagonal(board, ROW, COL, x, y);
if (temp == board[x][y])
return board[x][y];
temp = Back_Diagonal(board, ROW, COL, x, y);
if (temp == board[x][y])
return board[x][y];
if (IsFull(board, ROW, COL))
return 'Q';
return 'C';

}

// column judgment
char Arrange(char board[ROW][COL], int row, int col, int x, int y)
{
int cx = x;
int cy = y;
// two boundary values
int left = 0;
int right = 0;
//The number of chess pieces in the same line
int count = 1;
// Traversal in the vertical direction
for (int i = 1; i < 10; i ++ )
{
if (left == 0)
{
if (board[cx - 1][cy] == board[x][y])
{
count + + ;
cx -= 1;
if (count == STA)
return board[x][y];

}
else
{
left = 1;
cx = x;
}
}
if (left == 1 & amp; & amp; right == 0)
{
if (board[cx + 1][cy] == board[x][y])
{
count + + ;
cx + = 1;
if (count == STA)
return board[x][y];

}
else
{
right = 1;
break;
}
}

}
return 0;
}

//line judgment
char Line(char board[ROW][COL], int row, int col, int x, int y)
{
int cx = x;
int cy = y;
// two boundary values
int left = 0;
int right = 0;
//The number of chess pieces in the same line
int count = 1;
// traversal in the horizontal direction
for (int i = 1; i < 10; i ++ )
{
if (left == 0)
{
if (board[cx][cy - 1] == board[x][y])
{
count + + ;
cy -= 1;
if (count == STA)
return board[x][y];

}
else
{
left = 1;
cy = y;
}
}
if (left == 1 & amp; & amp; right == 0)
{
if (board[cx][cy + 1] == board[x][y])
{
count + + ;
cy + = 1;
if (count == STA)
return board[x][y];

}
else
{
right = 1;
break;
}
}
}
return 0;
}

//judgment of diagonal
char Diagonal(char board[ROW][COL], int row, int col, int x, int y)
{
int cx = x;
int cy = y;
// two boundary values
int left = 0;
int right = 0;
//The number of chess pieces in the same line
int count = 1;
//Traversal in the diagonal direction
for (int i = 1; i < 10; i ++ )
{
if (left == 0)
{
if (board[cx - 1][cy - 1] == board[x][y])
{
count + + ;
cy -= 1;
cx -= 1;
if (count == STA)
return board[x][y];

}
else
{
left = 1;
cy = y;
cx = x;
}
}
if (left == 1 & amp; & amp; right == 0)
{
if (board[cx + 1][cy + 1] == board[x][y])
{
count + + ;
cy + = 1;
cx + = 1;
if (count == STA)
return board[x][y];
}
else
{
right = 1;
break;
}
}
}
return 0;
}

//judgment of anti-diagonal
char Back_Diagonal(char board[ROW][COL], int row, int col, int x, int y)
{
int cx = x;
int cy = y;
// two boundary values
int left = 0;
int right = 0;
//The number of chess pieces in the same line
int count = 1;
//Traversal in the diagonal direction
for (int i = 1; i < 10; i ++ )
{
if (left == 0)
{
if (board[cx - 1][cy + 1] == board[x][y])
{
count + + ;
cy + = 1;
cx -= 1;
if (count == STA)
return board[x][y];

}
else
{
left = 1;
cy = y;
cx = x;
}
}
if (left == 1 & amp; & amp; right == STA)
{
if (board[cx + 1][cy - 1] == board[x][y])
{
count + + ;
cy -= 1;
cx + = 1;
if (count == 5)
return board[x][y];
}
else
{
right = 1;
break;
}
}
}
return 0;
}

// is it full
int IsFull(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 1; i < row-1; i ++ )
{
int j = 0;
for (j = 1; j < col - 1; j ++ )
{
if (board[i][j] == ' ')
{
return 0;
}
}
}
return 1;
}

The knowledge points of the article match the official knowledge files, and you can further learn relevant knowledge Algorithm skill treeHomepageOverview 47194 people are studying systematically