В данной курсовой работе будет использоваться программная реализация статических ботов для имитации соперников пользователя.
Данный вид ботов был выбран из-за легкости написания прикладного кода, точности исполняемых команд (игра бота зависит только от выпавших ему домино), легкости отладки и контролируемости действий.
Стоит отметить, что в данной курсовой работе не нужно использовать искусственный интеллект в силу небольшого функционала приложения.
Расчетная часть
Рисунок 1 - Основная функция алгоритма
На рисунке 1 (см. Рисунок 1 - Основная функция алгоритмаРисунок 1) показана основная функция алгоритма хода бота. Алгоритм начинается с ожидания указанное количество миллисекунд (для плавности и удобства). Вызываем функцию TryMakeMove и если она вернет true, то ход сделан и можно переходить к следующему ходу. Иначе пытаемся взять кость. Если кость взята, то устанавливаем флаг IsTurnToMove в true.
Рисунок 2 - Функция TryMakeMove
На рисунке 2 (см. Рисунок 2Рисунок 1 - Основная функция алгоритма) показана функция TryMakeMove алгоритма хода бота. Начинаем с проверки свойства класса FirstBoneIndexToMove, если оно не равно -1, то вызываем функцию MakeMoveFromSelectedBone, которая перемещает выбранную кость на игровое поле и выходим из функции, возвращая true. Сохраняем индекс максимальной кости и если он равен -1, то выходим из функции, возвращая false. Иначе сохраняем локацию максимальной кости в переменной boneLocation. Выполняем проверки на равенство количеству точек на кости с обоих сторон и в зависимости от них, выполняем перемещение кости на игровое поле и возвращаем true.
Рисунок 3 - Функция TryGetBoneFromRest
На рисунке 3 (см. Рисунок 3Рисунок 2Рисунок 1 - Основная функция алгоритма) показана функция TryGetBoneFromRest алгоритма хода бота. Проверяем количество наших костей – если не больше 1, то возвращаем false, иначе продолжим алгоритм. Случайно выбираем кость из остатка и перемещаем ее. Если в остатке у нас осталась 1 кость, то изменяем состояние приложения. Устанавливаем новый background и возвращаем true.
Достарыңызбен бөлісу: |