Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка алгоритмов, реализующих логику поведения компьютерного интеллекта, отвечающего за действия виртуального игрока
К функциям логики поведения компьютерного интеллекта, отвечающего за действия виртуального игрока относятся: Ø функции, расстановки кораблей виртуального противника; Ø функции интерактивной расстановки кораблей игрока; Ø функции планирования и нанесения ударов виртуальным игроком. Автоматическая расстановка кораблей виртуального противника. Данная функция программы оказалась наиболее сложной в реализации. Расстановка кораблей противника происходит от 4х палубного к одно палубному. Координаты четырехпалубного корабль выбираются случайно (переменная m и переменная n) случайно лишь с условием того чтобы он не выходил за границы поля при этом выбирается случайное горизонтальное или вертикальное положение (переменная z). При этом координаты корабля помечаются цифрами «2» в матрице. Трехпалубные и двухпалубные корабли расстанавливаются точно также только дополнительно идет сравнение на пересечение и соприкосновение кораблей друг с другом. Однопалубным кораблям незачем проверка выхода за границы поля, поэтому проверка происходит только на пересечение и соприкосновение. Расстановка трехпалубных кораблей происходит в цикле до тех пор, пока не будет расстановлено два корабля, двухпалубные – пока не буду расстановлены три корабля, и однопалубные – пока не будут расстановлены четыре корабля. Так как сразу при запуске программы или при выборе пункта меню «Новая игра» все корабли виртуального противника уже должны быть расставлены на карте – выполнение действий по расстановке осуществляется непосредственно в процедуре FormCreate. Код данной процедуры можно посмотреть в приложении 3 (Исходный код модуля первой формы «Unit1.pas») Интерактивная расстановка кораблей игрока Данная функция программы реализована при помощи двух процедур: Ø процедуры rastkor; Ø процедуры nash. Процедура rastkor При передвижении мыши по полю игрока ячейкам матрицы (в зависимости от расстанавливаемого корабля) присваивается значение 1. При этом при каждом изменении происходит прорисовка матрицы, для того чтобы пользователь мог видеть происходящие изменения. При изменении ячейка матрицы со значением «0» рисуется белым квадратом, со значением «1» желтым.
При нажатии правой клавиши мыши происходит ротация корабля, проверка на ротацию происходит перед движением мыши. Расстановка корабля происходит по нажатии левой клавиши мыши на поле игрока. Процедура nash Расстановка происходит лишь в том случае если расстанавливаемый корабль не выходит за рамки поля, не пересекается и не соприкасается не с одним из расстанавливаемых кораблей. Также каждый из кораблей расстанавливается в зависимости от количества его палуб, т.е. четырехпалубный – один, трехпалубных – два, двухпалубных – три, однопалубных – четыре. При этом ячейке матрицы поля игрока присваивается значение «2». После каждого нажатия происходит прорисовка поля игрока, для этого каждая ячейка с цифрой «2» закрашивается серым. После того как все корабли расставлены (k11<0) начинается обмен выстрелами с компьютером. Планирование и нанесение ударов виртуальным игроком Данная функция программы реализована при помощи процедуры vistrel. Выстрел производится при нажатии на одну из клеток поля компьютера. Если ячейка имеет значение «0» (пустая клетка) то ячейке присваивается значение «3», ячейка имеет значение «2» то ячейке присваивается значение «4». Затем происходит прорисовка поля компьютера. Клетка, которой соответствует ячейка со значением «3» рисуется маленький квадрат, клетка которой соответствует ячейка со значением «4» проверяется ранен или убит корабль если убит, то рисуется красный квадрат, если ранен, то рисуется серый квадрат перечеркнутый красным крестом. После происходит проверка выиграл ли игрок или нет, для этого матрица компьютера сканируется и если не находится ни одной ячейки со значением «2», то выходит сообщение: – «Поздравляю! Вы победили.» Если же находится то проверяется если игрок опал в ячейку со значением «2» то ему предоставляется ещё один выстрел, и т. д. пока игрок не попадет в ячейку со значением «0». Тогда наступает очередь хода компьютера. Компьютер выбирает произвольную клетку из поля игрока и если её значение равно «0», то значение становится равным «3», если значение равно «2» от значение клетки становится равным «4».
Затем происходит прорисовка поля компьютера. Клетка, которой соответствует ячейка со значением «3» рисуется маленький квадрат, клетка которой соответствует ячейка со значением «4» проверяется ранен или убит корабль если убит, то рисуется красный квадрат, если ранен, то рисуется серый квадрат перечеркнутый красным крестом. Компьютер стреляет до тех пор, пока не попадет в клетку со значением «0». После происходит проверка проиграл ли игрок или нет, для этого матрица игрока сканируется и если не находится ни одной ячейки со значением «2» то выходит сообщение: – «Вы проиграли. Попробуйте ещё раз!»
|
||||||
Последнее изменение этой страницы: 2021-05-12; просмотров: 38; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.42.196 (0.005 с.) |