- Разработка компьютерной игры «Морской бой»
- Описание правил игры «Морской бой». Особенности современных компьютеров и искусственного интеллекта. Создание общей блок-схемы программы, ее внешний вид. Необходимые переменные, процедуры и функции. Характеристика объектов, используемых в приложении.
- Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Разработка компьютерной игры «Морской бой»
Описание правил игры «Морской бой». Особенности современных компьютеров и искусственного интеллекта. Создание общей блок-схемы программы, ее внешний вид. Необходимые переменные, процедуры и функции. Характеристика объектов, используемых в приложении.
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание проекта
Игры и искусственный интеллект
Общая блок-схема программы
Внешний вид рабочей программы
Необходимые переменные, процедуры и функции
Описание объектов, используемых в приложении
Листинг программного кода
Описание правил игры «Морской бой».
На игровой площадке размером 10 на 10 клеток Игрок расставляет один корабль размером четыре клетки, два корабля размером три клетки, три корабля размером две клетки и четыре корабля размером в одну клетку (для облегчения корабли расставляются автоматически). При этом корабль представляет собой последовательность соседних клеток, стоящих на одной вертикали или на одной горизонтали. Соседние корабли не должны иметь общих точек. Противником Игрока является Комп (Компьютер), который автоматически расставляет корабли на своем поле по указанным выше правилам.
После расстановки начинается бой. Он представляет собой поочередные выстрелы Игрока и Компа. При попадании в корабль противника участник боя получает возможность проведения внеочередного выстрела. Игра заканчивается при уничтожении одним из участников всех кораблей противника.
В данном проекте необходимо реализовать известную игру «Морской бой». Наиболее важные алгоритмы этой игры: алгоритмы расстановки кораблей по полю, выбора направления удара Компа в поле Игрока и непосредственно нанесение удара им.
I. Теоретическая часть
Игры и искусственный интеллект
Человек наделен интеллектом. А компьютер? Сейчас много говорят о так называемом искусственном интеллекте. У компьютера это, прежде всего память. Его оперативная память (предназначенная для быстрого использования) позволяет записывать слова и получать информацию за микросекунды.
Компьютер обладает большими возможностями по логической обработке информации, его логический инструментарий весьма обширен и непрерывно совершенствуется. В программы компьютера могут быть заложены эвристические приемы, выработанные людьми при различных видах деятельности. Например, при построении программ для игры в шахматы используется опыт лучших шахматистов мира.
Конечно, люди имеют неоспоримые интеллектуальные преимущества перед компьютерами, но ведь компьютеры — это порождение высокоразвитого человеческого интеллекта, следовательно, взаимодействуя с ними, человек сталкивается по существу с модифицированным человеческим интеллектом.
И все же самое слабое место компьютера — его интеллект. Сейчас происходит необычно быстрое расширение сфер применения машинного интеллекта, но движение вглубь, в направлении совершенствования его механизмов идет медленно.
Следует отметить еще одну особенность современных компьютеров — возможность их связи между собой и создание на этой основе вычислительных систем и сетей. С помощью локальных сетей объединяют компьютеры одного здания или предприятия. Телефонные сети и спутники позволяют создать глобальные вычислительные сети.
Большое применение находят оптические волоконные каналы связи. Через каналы связи компьютеры обмениваются программами и данными, происходит информационное объединение ресурсов. Таким образом, компьютер становится терминалом вычислительной системы, и когда человек имеет с ним дело, то он сталкивается с распределенным в пространстве и во времени машинным интеллектом.
Человек использует компьютер либо в качестве партнера в игре, либо в качестве посредника при играх с другими людьми. А можно ли компьютер рассматривать как партнера? Ведь он не обладает эмоциями, чувствами, у него нет души и сердца. Конечно, разница между человеком и компьютером громадная, но человек передал компьютеру часть своего интеллекта, опыта, знаний, навыков с соответствующей эмоциональной окраской. Недаром говорят о дружественном программном обеспечении. А вместе с интеллектом человек передал компьютеру и часть своего тепла, свое умение любить и ненавидеть, свое отношение к окружающему миру и другим людям.
Компьютерные игры появились вместе с первыми компьютерами. По мере совершенствования машин совершенствовались и игры. Компьютерные игры заняли важное место в программном обеспечении ЭВМ. В производственной сфере они используются для обучения, психологической разгрузки персонала.
Компьютерные игры реального времени на персональной ЭВМ для одного играющего без применения специального оборудования («мышек», «джойстиков» и др.) можно рассматривать как определенную задачу — в ней имеются условия, цель и средства ее достижения. Решение задачи — процесс, управляемый играющим в реальном времени по определенным правилам. Течение процесса оценивается по установленному критерию.
В компьютерной игре можно выделить три компонента: игровую среду, взаимодействие с играющим и оценку игровой ситуации.
Игровая среда — совокупность объектов, связей в игре и правил их изменения. Так, в шахматах игровая среда представляет совокупность доски, двух наборов фигур, правил перемещения фигур по доске и правил их взятия или превращения.
Взаимодействие с играющим — совокупность средств, предоставляемых играющему для изменения игровой среды. Чаще всего это клавиатура персонального компьютера. При имитации автомобильных гонок водитель изменяет направление и скорость движения по трассе, при этом большое значение имеет быстрота реакции на перемену декораций, изменение трассы, появление препятствий (на трассе могут быть повороты разной крутизны, камни, стекла, лужи, машину может занести, она может потерпеть аварию).
Оценка игровой ситуации — соотношения и условия, которые определяют цель поведения играющего. Сюда включается система очков и штрафов за игровые действия, описание начальной и конечной ситуации.
После разработки сюжета, описания игровой среды, выбора способов взаимодействия с играющим и системы критериев оценки поведения играющего начинается этап создания компьютерной программы. Игровая программа чаще всего состоит из двух частей: первая реализует внутреннюю, логическую структуру компьютерной игры, т. е. отображает игру в системе машинных данных и алгоритмов, вторая — отображает процесс игры на терминале (эта часть связана с эстетическими и эргономическими аспектами, поэтому ей придается особое значение, ведь игра должна приносить играющему удовольствие). В компьютерных играх используется небольшое количество сюжетов, чаще всего это модификации обычных, традиционных игр и жизненных ситуаций, но формы их реализации огромны.
Программирование изобразительной стороны игры более трудоемко, чем логической. Основу игровой программы составляет ее логическая структура, в которой выделяют три иерархических уровня (плана) — оперативный, тактический и стратегический.
Оперативный план — совокупность действий внутри программы между двумя возможными действиями играющего.
Тактический план — совокупность игровых действий, ведущих к достижению какой-либо локальной цели.
Стратегический план — план всей игры, которая должна строиться так, чтобы достичь цели и добиться выигрыша (при автомобильных гонках не потерпеть аварии, быстро прийти к финишу, уменьшить затраты на восстановительный ремонт машины). Достижение стратегических целей — дело не простое. Лишь многократное участие в игре, постижение всех ее особенностей, быстрота реакции, предвидение позволяют добиваться хороших результатов.
II. Разработка приложения
Общая блок-схема программы
Размещено на http://www.allbest.ru/
P1Left и P2Left — количество неубитых палуб кораблей полей 1 и 2 соответственно.
Блок-схемы алгоритмов.
Размещено на http://www.allbest.ru/
Описание программы
Программа «Морской бой» состоит из трех форм и одного модуля, в котором находятся все основные процедуры. На основной форме расположены объекты, при помощи которых выполняются различные события. Так с помощью управляющих кнопок можно:
начать игру (тут же автоматически расставить корабли)
получить информацию о правилах игры;
получить справку об авторе.
Внешний вид рабочей программы
Необходимые переменные, процедуры и функции
игра морской бой компьютер
Visual Basic, как и большинство языков программирования, использует для хранения значений переменные. Переменная характеризуется именем — словом, используемым для ссылки на значение, которое содержит переменная, и типом, определяющим вид данных, который можно хранить в переменной.
В приложении использованы следующие переменные:
S2 (9, 9) as Byte — поля 1 и 2, содержат полную информацию о расставленных на них кораблях, прострелянных и непрострелянных местах. Каждая клетка может содержать 4 значения: 0 — пусто и непростреляно, 1 — неподбитая часть корабля, 2 — пусто, но простреляно, 3 — подбитая часть корабля.
V2 (9,9) as Byte — аналогично S1 (9,9) и S2 (9,9), только содержат информацию лишь об открытых игроком либо компьютером местах.
Num — номер текущего поля. Может быть либо 1, либо 2.
Slozhnost — уровень Компа. Может быть от 1 до 9.
StrX, StrY — координаты, выбранные компьютером для «удара». Могут быть от 0 до 9.
P1Left, P2Left — содержат количество «неубитых» сегментов кораблей для полей 1 и 2 соответственно.
ShotResult — содержит результат последнего выстрела: «Ранен», «Убит», «Мимо», «Повторная стрельба (было попадание) — ход засчитан» и «Повторная стрельба (мимо) — ход засчитан». Тип переменной — String.
ShipL — содержит длину последнего «убитого» корабля (от 1 до 4).
Moves — количество проделанных ходов Компа.
Moixody — количество проделанных ходов Игрока.
Err — индикатор ошибки. Может быть True, если ошибка была, либо False, если её не было.
ErrName — описание ошибки, если она была. Тип переменной — String.
Можно упростить программирование, разбивая задачу на небольшие логические компоненты. В Visual Basic используется несколько видов процедур:
Процедуры Sub (не возвращают значения)
Процедуры Function (возвращают значения)
Процедуры Property (могут возвращать и присваивать значения), а также устанавливать ссылки.
В приложении использованы следующие процедуры:
DrawSea (Num) — отображает всё поле номер Num
ViewSea (Num) — отображает открытые места поля номер Num
HideSea (Num) — скрывает поле номер Num
NoErr — отключает запись об ошибке: делает Err = False, а ErrName = «»
SetShips (Num) — расставляет корабли на поле Num случайным образом
Strike (Num) — выбирает ячейку на поле Num для «огня» по ней. Алгоритм эффективен в зависимости от уровня игры компьютера (Slozhnost).
На выходе выдаёт переменные StrX и StrY, которые используются в качестве X и Y для «выстрела» (Fire (Num, StrX, StrY)), а также увеличивает переменную Moves на 1 за каждый раз.
Fire (Num, X, Y) — производит «огонь» по ячейке с координатами X, Y на поле Num.
На выходе выдаёт переменные ShotResult и ShipL
OpenVSea (Num) — полностью открывает неизвестную игроку территорию поля Num
ClearSea (Num) — полностью стирает данные об «открытых» местах на поле Num.
CalcShipsLeft — подсчитывает, сколько «неубитых» сегментов кораблей есть на поле 1 и поле 2, и выдаёт на выходе соответствующие переменные: P1Left и P2Left.
Описание объектов, используемых в приложении
В приложении использованы объекты Microsoft Visual Basic, которые расположены на формах проекта для выполнения определенных событий, позволяющих пользователю визуально оценить процесс работы с данными.
В данной работе расположены следующие объекты:
· Picture box (Графическое окно)
· Command button (Кнопка управления)
Описание используемых объектов:
Label (Метка) — служит для размещения в форме статического текста, который не может редактироваться пользователем.
Command button (Кнопка управления) — выполняет команду или действие, выбранные пользователем
Image (Изображение) — отображает побитовые изображения, значки или метафайлы Windows, файлы JPEG или GIF; при нажатии ведёт себя как кнопка управления
Picture box (Графическое окно) — отображает побитовые изображения, значки или метафайлы Windows, файлы JPEG или GIF. Он также отображает текст и является визуальным контейнером для других элементов управления
Timer (Таймер) — выполняет события через определённые интервалы времени
Frame (Кадр) — используется для создания идентифицируемых групп других элементов управления, т.е. как контейнер.
Листинг программного кода
Morskoi_boi. Form
Private Sub CmdNewgame_Click()
Источник