
Отчет_Владимиров_П_А_1363
.pdfПРИЛОЖЕНИЕ 3. ИСХОДНЫЙ КОД ПРОГРАММЫ
Файл GameResult.c:
#include <stdio.h> #include <stddef.h>
int GameResult(char field[3][3])
{
if (field == NULL)
{
return 1;
}
for (size_t i = 0; i < 3; i++)
{
if (field[i][0] == field[i][1] && field[i][1] == field[i][2] && field[i][0]=='X')
{
return 10;
}
if (field[i][0] == field[i][1] && field[i][1] == field[i][2] && field[i][0] == '0')
{
return -10;
}
if (field[0][i] == field[1][i] && field[1][i] == field[2][i] && field[0][i] == 'X')
{
21
return 10;
}
if (field[0][i] == field[1][i] && field[1][i] == field[2][i] && field[0][i] == '0')
{
return -10;
}
}
if (field[0][0] == field[1][1] && field[1][1] == field[2][2] && field[0][0] == 'X')
{
return 10;
}
if (field[0][0] == field[1][1] && field[1][1] == field[2][2] && field[0][0] == '0')
{
return -10;
}
if (field[0][2] == field[1][1] && field[1][1] == field[2][0] && field[0][2] == 'X')
{
return 10;
}
if (field[0][2] == field[1][1] &&
22
field[1][1] == field[2][0] && field[0][2] == '0')
{
return -10;
}
for (size_t i = 0; i < 3; i++)
{
for (size_t j = 0; j < 3; j++)
{
if (field[i][j] == '_') return
4;
}
}
return 0;
}
Файл ComputerMove.c:
#include <stdio.h> #include <stddef.h>
int ComputerMove(char field[3][3])
{
int flag = 0;
if (field == NULL)
{
return 1;
}
for (size_t i = 0; i < 3; i++)
{
23
for (size_t j = 0; j < 3; j++)
{
if (field[i][j] == '_')
{
flag = 1; break;
}
}
if (flag==1) break;
}
for (size_t i = 0; i < 3; i++)
{
if (field[i][0] == field[i][1] && field[i][2] == '_' && field[i][0] == '0')
{
field[i][2] = '0'; return 3;
}
if (field[i][0] == field[i][2] && field[i][1] == '_' && field[i][0] == '0')
{
field[i][1] = '0'; return 3;
}
if (field[i][1] == field[i][2] && field[i][0] == '_' && field[i][2] == '0')
{
24
field[i][0] = '0'; return 3;
}
if (field[0][i] == field[1][i] && field[2][i] == '_' && field[1][i] == '0')
{
field[2][i] = '0'; return 3;
}
if (field[0][i] == field[2][i] && field[1][i] == '_' && field[2][i] == '0')
{
field[1][i] = '0'; return 3;
}
if (field[1][i] == field[2][i] && field[0][i] == '_' && field[2][i] == '0')
{
field[0][i] = '0'; return 3;
}
}
for (size_t i = 0; i < 3; i++)
{
if (field[i][0] == field[i][1] && field[i][2] == '_' && field[i][0] == 'X')
{
25
field[i][2] = '0'; return 3;
}
if (field[i][0] == field[i][2] && field[i][1] == '_' && field[i][0] == 'X')
{
field[i][1] = '0'; return 3;
}
if (field[i][1] == field[i][2] && field[i][0] == '_' && field[i][2] == 'X')
{
field[i][0] = '0'; return 3;
}
if (field[0][i] == field[1][i] && field[2][i] == '_' && field[1][i] == 'X')
{
field[2][i] = '0'; return 3;
}
if (field[0][i] == field[2][i] && field[1][i] == '_' && field[2][i] == 'X')
{
field[1][i] = '0'; return 3;
}
26
if (field[1][i] == field[2][i] && field[0][i] == '_' && field[2][i] == 'X')
{
field[0][i] = '0'; return 3;
}
}
if (field[0][0] == field[1][1] && field[2][2] == '_' && field[1][1] == '0')
{
field[2][2] = '0'; return 3;
}
if (field[0][0] == field[2][2] && field[1][1] == '_' && field[2][2] == '0')
{
field[1][1] = '0'; return 3;
}
if (field[2][2] == field[1][1] && field[0][0] == '_' && field[1][1] == '0')
{
field[0][0] = '0'; return 3;
}
if (field[0][2] == field[1][1] &&
27
field[2][0] == '_' && field[1][1] == '0')
{
field[2][0] = '0'; return 3;
}
if (field[0][2] == field[2][0] && field[1][1] == '_' && field[2][0] == '0')
{
field[1][1] = '0'; return 3;
}
if (field[2][0] == field[1][1] && field[0][2] == '_' && field[1][1] == '0')
{
field[0][2] = '0'; return 3;
}
if (field[0][0] == field[1][1] && field[2][2] == '_' && field[1][1] == 'X')
{
field[2][2] = '0'; return 3;
}
if (field[0][0] == field[2][2] && field[1][1] == '_' && field[2][2] == 'X')
{
field[1][1] = '0';
28
return 3;
}
if (field[2][2] == field[1][1] && field[0][0] == '_' && field[1][1] == 'X')
{
field[0][0] = '0'; return 3;
}
if (field[0][2] == field[1][1] && field[2][0] == '_' && field[1][1] == 'X')
{
field[2][0] = '0'; return 3;
}
if (field[0][2] == field[2][0] && field[1][1] == '_' && field[2][0] == 'X')
{
field[1][1] = '0'; return 3;
}
if (field[2][0] == field[1][1] && field[0][2] == '_' && field[1][1] == 'X')
{
field[0][2] = '0'; return 3;
}
29
int MoveIndex = rand()%9;
while (field[MoveIndex/3][MoveIndex%3]
!= '_')
{
MoveIndex = rand()%9;
}
field[MoveIndex / 3][MoveIndex % 3] =
'0';
return 3;
}
Файл main.c:
#include <stdio.h> #include <time.h> #include <stdlib.h>
int GameResult(char field[3][3]); int ComputerMove(char field[3][3]); int PrintField(char field[3][3])
{
if (field == NULL) return 1; for (size_t i = 0; i < 3; i++)
{
for (size_t j = 0; j < 3; j++)
{
if (printf("%c ", field[i][j])
< 0)
{
printf("Error\n");
30