Читать книгу «Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 9: Программирование на Visual C# искусственного интеллекта. Издание 3» онлайн полностью📖 — Валерия Алексеевича Жаркова — MyBook.

Часть I. Краткие основы Visual C#

Глава 1. Основные определения книги

1.1. Классификация компьютерных игр

Компьютерная игра (computer game) – это взаимодействие человека с компьютером по определённым правилам с целью обучения, тренировки или развлечения.

Правила игры задет алгоритм, который реализуется при помощи игровой программы (game program), написанной на различных языках программирования для разнообразных компьютеров и мобильных устройств, работающих под управлением различных операционных систем.

Во время игры на экране воспроизводится игровая ситуация, один или несколько игроков анализируют её и реагируют при помощи устройств ввода, для – это кнопки джойстика и кнопки клавиатуры. Компьютерные игры, хорошо спроектированные, развивают профессиональные, познавательные и художественные способности человека.

Большое количество игр для настольных компьютеров и мобильных устройств можно классифицировать по различным признакам и типам в зависимости от преследуемых целей.

С классификацией по типу операционной системы мы определились – это Microsoft Windows.

С классификацией по типу языка программирования высокого уровня мы также определились – это Microsoft Visual C# из среды разработки Microsoft Visual Studio последних версий.

С классификацией по типу размерности изображения (двухмерные и трёхмерные) также ясно. В данной серии книг мы спрограммируем ИИ в играх и приложениях как без использования технологии DirectX, так и с использованием DirectX и XNA последних версий, которые поддерживает Microsoft.

Далее, по сюжетам и целям, различают несколько типов игр.

Логические – игры, близкие по содержанию к обычным головоломкам (которые называются также пазлами, от английского слова puzzle – головоломка) и математическим упражнениям, а также компьютерные варианты различных настольных игр (шахматы, шашки, нарды и т.д.). В головоломке или математическом упражнении мотивация, основанная на азарте, сопряжена с желанием одного игрока решить задачу быстрее другого игрока. А в игре типа шахмат мотивация основана на желании обыграть компьютер, доказать своё превосходство над машиной.

Аркадные (arcade game) – игры с путешествиями и приключениями, сюжет которых, как правило, слабый линейный, игроку не нужно особо задумываться, а нужно только, управляя компьютерным персонажем или транспортным средством, быстро передвигаться, стрелять и уничтожать движущиеся объекты. При этом игрок набирает очки, зарабатывает дополнительные “жизни”, переходит на следующий более высокий уровень данной игры. В аркаде игрок в большей степени ориентирован не на процесс игры, а на результат. К этому типу относятся также разного рода “бегалки”, “стрелялки” (shooter) и экшны (action).

Игры на быстроту реакции. В этих играх игроку нужно проявлять ловкость и быстроту реакции при нажатии кнопок , уметь нажать кнопку на опережение с учётом перемещения объектов. Эти игры во многом похожи на аркады, но, в отличие от последних, обычно не имеют сюжета и сценария, абстрактны и не связаны с реальной действительностью. Но здесь также есть и азарт, и желание набрать больше очков, чем другой игрок.

Приключенческие или сюжетные (adventure game) – игры, в которых игрок действует по определённому сюжету и сценарию приключенческого, сказочного, фантастического или мистического содержания.

Стратегические или позиционные (extensive game) – игры, в которых игрок управляет армией, городом, страной и другими масштабными объектами.

Игры-имитации моделируют управление игроком автомобилем, вертолётом, самолётом, ракетой и другими подобными машинами.

Спортивные игры – компьютерные реализации разнообразных популярных спортивных игр (футбол, гольф и т.д.).

Традиционно азартные игры – это компьютерные варианты разнообразных карточных игр, игры в кости, рулетки, имитаторы игровых автоматов и других игр казино, существовавших задолго до изобретения компьютера.

Интерактивные (interactive game) – игры, имеющие чётко выраженную форму диалога игрока с компьютером или мобильным устройством.

Сетевые (network game) – игры, в которых могут участвовать несколько партнёров, взаимодействующих между собой через глобальную сеть Интернет или через локальную сеть LAN – Local Area Network.

Учебные (training game) – игры, способствующие развитию профессиональных возможностей человека.

По психологическому признаку игры условно делятся на ролевые и не ролевые. Ролевая игра (RPG – Role Playing Game) – это игра, в которой игрок принимает на себя роль компьютерного (конкретного видимого на экране или воображаемого) персонажа.

Известны также игры, не имеющие решения (no-solution game), и многие другие.

Современные игры сочетают свойства различных типов, имеют хорошее мультимедийное оформление, сложную мотивацию решения загадок, разветвлённую сюжетную линию, поэтому часто сложно определить, к какому же типу относится игра, и нужно выбрать наиболее подходящий тип.

Захватывающие игры для мощных мультимедийных настольных компьютеров и графических станций используют огромные возможности мультимедиа и погружают игрока в виртуальную реальность. Игры для мобильных устройств, описанные в наших предыдущих книгах, можно активно пользоваться там (например, в транспорте), где настольный компьютер недоступен.

В данной книге мы будем описывать игры для настольных компьютеров, ноутбуков и планшетов в соответствии с этой классификацией.

1.2. Требуемое программное обеспечение

Чтобы программировать искусственный интеллект в двух- и трёхмерных играх и приложениях, а также графику на основе Visual Studio, на нашем настольном компьютере (ноутбуке или планшете) должны быть установлены следующие программные продукты.

1. Среда разработки (называемая также как платформа, студия, пакет и т.д.) Visual Studio или сокращённо VS корпорации Microsoft. Системные требования к компьютеру сформулированы на сайте этой корпорации. Отметим, что имеются бесплатные версии VS, например, Express-версии и Бета-версии, которые можно загрузить с сайта Microsoft. Установка на компьютер и настройка любой версии VS подробно описаны в [Литература] и в наших книгах с сайта ZharkovPress.ru.

VS имеет исполнительную среду CLR (Common Languege Runtime), общую для всех основных языков программирования. Поэтому впервые появилась уникальная возможность соединять (в разрабатываемом нами приложении) программы, написанные на различных языках (соответствующих спецификации CLR). Программа, написанная на любом языке или на нескольких различных языках, сначала компилируется в промежуточный язык MSIL (Microsoft Intermediate Language) и только затем преобразуется в машинный код. Такое двух шаговое выполнение программ позволяет достичь хорошей межъязыковой совместимости при высоком быстродействии.

Чтобы читателю легче было изучить и применить на практике самый популярный и перспективный (в мире программирования) язык Visual C#, он дан в сравнении с другими языками, и базовые сведения об этих языках (Visual Basic, C#, С++, J#) сведены в таблицы (в наших книгах [Литература]). Программы, написанные на предыдущих версиях Visual Studio после конвертирования пригодны и для новой версии Visual Studio.

Графический интерфейс в операционных системах Windows, а также вся работа с графикой в Visual Studio, а следовательно, и в Visual C# основаны на использовании интерфейса устройств графики GDI+ (Graphics Device Interface) Этот интерфейс GDI+ для двухмерной графики подробно описан в наших предыдущих книгах из списка литературы.

Кроме двухмерной графики, в книгах с сайта ZharkovPress.ru по созданию трёхмерных графических систем описано применение технологии DirectX для компьютерных игр и приложений.

2. Если планируется применять DirectX и/или XNA, то с сайта корпорации Microsof необходимо бесплатно загрузить последнюю версию технологии DirectX в виде программного продукта DirectX Software Development Kit (SDK) и XNA. Каждые несколько месяцев на сайте выставляется новая редакция DX и XNA. Более подробно о DX и XNA описано в справке от Microsoft. Отметим, что на сайте корпорации Microsoft программный продукт DirectX для разработки трёхмерных изображений находится в разделе Windows и далее в подразделе Technologies. Следовательно, DirectX (или коротко DX) авторы называют технологией, так и мы будем называть (в случае применения).

Отметим, что в данной серии книг будут разработаны игры и приложения с использованием искусственного интеллекта как без применения DirectX и XNA, что делает такие игры и приложения более универсальными, так и с применением DirectX и XNA.

Глава 2. Методика разработки приложений для выполнения расчётов с эффектами анимации

2.1. Алгоритм ввода-вывода данных

Сначала общими усилиями создадим приложение в виде традиционного калькулятора для сложения и вычитания чисел. А затем постепенно будем усложнять и увеличивать количество математических функций в приложении, и в изучении базовых дисциплин и методик расчётов, с использованием эффектов анимации, идти от простого к сложному. Алгоритм сложения вещественных чисел в нашем первом калькуляторе стандартен: в первое окно вводим первое слагаемое; во второе окно второе слагаемое; щёлкаем кнопку со знаком равенства; в третьем окне получаем результат сложения (сумму).

Примеры в этой главе (и все последующие примеры) позволяют достичь:

1) учебную цель, чтобы научить начинающего программиста (например, инженера – практика, который никогда раньше не применял этот алгоритмический язык и Visual Studio), или специалиста любого профиля, вводу исходных данных и выводу результатов расчёта, а также решению различных задач при помощи диалоговых панелей и форм (точнее, при помощи принципов визуального программирования) и объектно-ориентированного программирования (ООП) на языке высокого уровня Visual C#;

2) практическую цель, чтобы по аналогии с нашим приложением читатели могли быстро создать персональный калькулятор (а далее, вычислительную систему и многие другие приложения) для расчёта таких математических, экономических и других функций, которые дополнят функции настольного калькулятора (и калькулятора операционной системы, например, Windows) и заменят (или дополнят) другие известные системы компьютерной математики.

2.2. Проект приложения

Некоторые этапы разработки данного приложения-калькулятора в дальнейшем (в последующих главах) при создании других приложений будут повторяться. Поэтому в этой главе, в интересах читателей, мы дадим подробные инструкции выполнения всех основных этапов разработки, чтобы в последующих главах эти же этапы описывать кратко со ссылкой на эту главу (и не повторяться).

Создаём проект в пакете (или комплексе) на языке Visual C# среды разработки Visual Studio последней или предыдущих версий по следующей стандартной и типичной схеме.

1. Запускаем среду (называемую также: среда разработки, студия, платформа, пакет и т.п.) Visual Studio и щёлкаем значок New Project (или File, New, Project).

2. В панели New Project (рис. 2.1) в окне Project types выбираем тип проекта Visual C#, Windows и проверяем, чтобы в окне Templates был выделен (как правило, по умолчанию) шаблон Templates, Visual C#, Windows Classic Desktop, Windows Forms App (.NET Framework); в окне Name записываем имя проекта, например, Calculator.

В расположенном ниже окне Location мы видим каталог (папку с текстом пути к этой папке), в котором будет создан данный проект.

Мы можем щёлкнуть по стрелке в окне Location (или кнопку Browse) и в появившемся списке выбрать или записать другой путь и другую папку, которую здесь же можем создать при помощи значка Create New Folder.

3. Если создаваемое нами решение (Solution) будет состоять из одного проекта, и мы не планируем разрабатывать другие проекты в рамках этого решения (как в данном случае), то можно удалить (если он установлен) флажок Create directory for solution (рис. 2.1) с целью упрощения построения программы.


Рис. 2.1. В окне Project Types выбираем тип проекта Visual C#, Windows.

4. В панели New Projects (рис. 2.1) щёлкаем OK.

Visual C# создаёт проект приложения и выводит форму Form1 в режиме проектирования (иначе, дизайна или редактирования) с вкладкой Form1.cs [Design], при помощи которой далее можно будет открывать эту форму (рис. 2.2).





...
5