Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет_Владимиров_П_А_1363

.pdf
Скачиваний:
1
Добавлен:
02.12.2024
Размер:
452.39 Кб
Скачать

ПРИЛОЖЕНИЕ 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