Файл: Создание игровой программы на языке C++.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 05.04.2023

Просмотров: 200

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

cout << "Введите координату X Y от 1 до " << A << " через пробел: ";

if ((!(cin >> X) || !(cin >> Y)) || ((!(X < (A + 1) && X > 0) || !(Y < (B + 1) && Y > 0))) || (!(MAP[--Y][--X] == NUL)))

{

cin.clear(); while (cin.get() != '\n');

return false;

}

else

return true;

}

Порядок хода игроков определяется следующими функциями, для обработки выбора игрока используется условный оператор if совместно с else, для предоставления игрокам возможности ходить по очереди:

short int move()

{

Nmove++;

if (whoMove == P1)

{

MAP[Y][X] = P1;

return P1;

}

if (whoMove == P2)

{

MAP[Y][X] = P2;

return P2;

}

}

void nextMove()

{

whoMove == P1 ? whoMove = P2 : whoMove = P1;

}

Для повышения быстродействия кода в функцию main() добавляются только функции, после разработки функция main принимает вид:

void winner()

{

system("cls");

displayMap();

if (win != NUL)

cout << "Выиграл игрок " << win << "!\n";

else

cout << "Ничья!\n";

}

int main()

{

setlocale(LC_CTYPE, "Russian");

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

allNull();

randomFirstMove();

do

{

system("cls");

displayMap();

while (!input())

{ system("cls");

displayMap(); }

move();

whoWin();

nextMove();

} while ((win == NUL) && (Nmove < A*A+1));

winner();

_getch();

return 0;

}

Основная функция, определяющая игрока, победившего в текущей игре:

short int whoWin()

{

short int a = 0;

for (int i = 0; i < A; i++)

{

for (int j = 0; j < B - 1; j++)

if ((MAP[i][j] == MAP[i][j + 1]) && (MAP[i][j] != NUL))

a++;

if (a == B - 1)

{

win = whoMove;

return i + 1;//столбцы

}

else

a = 0;

}

a = 0;

for (int i = 0; i < A; i++)

{

for (int j = 0; j < B - 1; j++)

if ((MAP[j][i] == MAP[j + 1][i]) && (MAP[j][i] != NUL))

a++;

if (a == B - 1)

{

win = whoMove;

return i + 4;//строки

}

else

a = 0;

}

for (int i = 0, j = A - 1; i < A; i++, j--)

if ((MAP[i][j] == MAP[i + 1][j - 1]) && (MAP[i][j] != NUL))

a++;

if (a == B - 1)

{

win = whoMove;

return 7;

}

else

a = 0;

for (int i = 0, j = 1; i < A; i++, j++)

if ((MAP[i][i] == MAP[j][j]) && (MAP[i][i] != NUL))

a++;

if (a == B - 1)

{

win = whoMove;

return 8;

}

else

a = 0;

}

После компиляции вышеуказанного кода перед разработчиком появляется стартовое окно программы (рисунок 6)

Рисунок 6 - Окно программы после компиляции проекта

Заключение

Таким образом в рамках курсового проекта было разработано программное средство, реализующее принципы игры Крестики - Нолики. Было проведено исследование компонентов и основных возможней программной среды разработки приложений Embarcadero Rad Studio, изучены процедуры и функции, реализуемые в рамках курсового проекта.