Секреты программирования игр



Секреты программирования игр

Если вы не играли в свою любимую аркадную игру и не убивали кучу монстров уже несколько месяцев — вы явно заработались! Вернитесь к играм и увидите, как вы помолодеете и как разгладятся морщины на вашем утомленном лице. Дни Hunt the Wampus и Lunar Lander миновали, и теперь игры стали намного ярче, красочней и хитрее.
Игра сегодняшнего дня содержит целые мили туннелей, дорог и странных созданий. Они сопровождаются потрясающей графикой и звуком. DOOM - хороший пример такой игры. Она включает запутанные переходы и тайники с сокровищами, чудовищ, на которых вы можете охотиться и которых вы должны убить прежде, чем они убьют вас. Если вы хоть раз играли в DOOM, то не перестанете тосковать по кислотным лужам, ружьям, чудовищам, скрытым проходам, лифтам, взрывам... этот список можно продолжать до бесконечности. Все это было создано благодаря комбинации графики и звукового сопровождения.
Графика DOOM дает вам полное ощущение пространства и перспективы — как если бы вы действительно находились в центре событий. Для этого DOOM использует приемы работы с трехмерной графикой. Разработчики игр для ПК используют трехмерную графику для увеличения реалистичности игры любого типа — посмотрите на 7th Guest, MYST, X-Wing, Outpost, Indy Car Racing. Часто трехмерная графика применяется и в имитаторах спортивных игр, таких как скачки или бокс.

Что вы должны знать
Алгоритм Художника, Тест 1
Использование функций драйвера для проигрывания VOC-файлов
Алгоритмы Поиска. Выслеживание игрока
Оптимизация рисования пикселей

Технология Microsoft ADO.NET

Базы данных - это совокупность сведений (об объектах, процессах, событиях или явлениях), относящихся к определенной теме или задаче. Она организована таким образом, чтобы обеспечить удобное представление этой совокупности, как в целом, так и любой ее части.
Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного типа. Каждая строка таблицы содержит данные об одном объекте (например товаре, фирме, клиенте), а столбцы таблицы содержат различные характеристики этих объектов - атрибуты (например, наименования и цены товаров, адреса и телефоны фирм или клиентов). Строки таблицы называются записями; все записи имеют одинаковую структуру - они состоят из полей, в которых хранятся атрибуты объекта (рис. 1.1). Каждое поле записи содержит одну характеристику объекта и имеет строго определенный тип данных (например, текстовая строка, число, дата). Все записи имеют одни и те же поля, только в них содержатся разные значения атрибутов. Для идентификации записей используется первичный ключ. Первичный ключ - это одно или несколько полей (столбцов), комбинация значений которых однозначно определяет каждую запись в таблице.

Элементы работы с СУБД Microsoft Access
Подключение к базе данных - технология ADO .NET. Мастер Data Form Wizard
Связывание элементов управления с данными
Подключение к базе данных Microsoft SQL Server с разделенным доступом
Создание хранимых процедур в SQL Query Analyzer
Объект Command. Свойства CommandType и CommandText
Вызов хранимых процедур с входными параметрами
Понятие DataSet, DataTable и DataColumn
Объект DataView. Фильтрация и сортировка данных
Что такое HTML?
XML-схемы данных (XSD)
Конструктор объекта DataAdapter
Передача изменений в базу данных при помощи хранимых процедур MS SQL Server
Подготовка сервера IIS

Ассемблирование без секретов

Свою программистскую карьеру мыщъх начинал с микрокомпьютера "Правец-8D", оснащенного довольно экзотической версией Бейсика и нехилым руководством с кучей конкретных примеров (правда, на болгарском языке). Процесс освоения буржуинской техники происходил приблизительно так. Набрал программу. Запустил. Помедитировал над листингом. Попробовал что-нибудь изменить. Запустил. Посмотрел на реакцию. Осмыслил. Что-то еще изменил. И вот так, шаг за шагом мыщъх разобрался во всех операторах языка и научился писать эффективные программы, в которых нет ничего лишнего.

Введение или много лет тому назад
Лицо асматика в ASCII
Блокнот с записями начинающего асматика
Зоопарк ассемблеров
Зоопарк ассемблеров - 2
Определение целевой платформы
Метод ассемблерных вставок
Классический пример
Законченная программа anti-debug.c
Anti-debug.exe без отладчика

Подробное руководство по программированию на Java

Почему вам нужно изучать новый язык программирования Java?
Если ответить на этот вопрос кратко, то потому, что он специально ориентирован на самые передовые технологии, связанные с сетью Internet. Растущая популярность Internet и, в особенности, серверов Web, создает для программистов новые возможности для реализации своих способностей.
Огромное преимущество Java заключается в том, что на этом языке можно создавать приложения, способные работать на различных платформах. К сети Internet подключены компьютеры самых разных типов - Pentium PC, Macintosh, рабочие станции Sun и так далее. Даже в рамках компьютеров, созданных на базе процессоров Intel, существует несколько платформ, например, Microsoft Windows версии 3.1, Windows 95, Windows NT, OS/2, Solaris, различные разновидности операционной системы UNIX с графической оболочкой X­Windows. Между тем, создавая сервер Web в сети Internet, вы бы наверняка хотели, чтобы им могло пользоваться как можно большее число людей. В этом случае вас выручат приложения Java, предназначенные для работы на различных платформах и не зависящие от конкретного типа процессора и операционной системы.
Программы, составленные на языке программирования Java, можно разделить по своему назначению на две большие группы.
К первой группе относятся приложения Java, предназначенные для автономной работы под управлением специальной интерпретирующей машины Java. Реализации этой машины созданы для всех основных компьютерных платформ.
Вторая группа - это так называемые аплеты (applets). Аплеты представляют собой разновидность приложений Java, которые интерпретируются виртуальной машиной Java, встроенной практически во все современные браузеры.
Приложения, относящиеся к первой группе (мы будем называть их просто приложениями Java), - это обычные автономные программы. Так как они не содержат машинного кода и работают под управлением специального интерпретатора, их производительность заметно ниже, чем у обычных программ, составленных, например, на языке программирования C++. Однако не следует забывать, что программы Java без перетрансляции способны работать на любой платформе, что само по себе имеет большое значение в плане разработок для Internet.
Аплеты Java встраиваются в документы HTML, хранящиеся на сервере Web. С помощью аплетов вы можете сделать страницы сервера Web динамичными и интерактивными. Аплеты позволяют выполнять сложную локальную обработку данных, полученных от сервера Web или введенных пользователем с клавиатуры. Из соображений безопасности аплеты (в отличие от обычных приложений Java) не имеют никакого доступа к файловой системе локального компьютера. Все данные для обработки они могут получить только от сервера Web. Более сложную обработку данных можно выполнять, организовав взаимодействие между аплетами и расширениями сервера Web - приложениями CGI и ISAPI.
Для повышения производительности приложений Java в современных браузерах используется компиляция "на лету"- Just-In-Time compilation (JIT). При первой загрузке аплета его код транслируется в обычную исполнимую программу, которая сохраняется на диске и запускается. В результате общая скорость выполнения аплета Java увеличивается в несколько раз.

Введение в Java
Изучая Java, вы будете приятно удивлены тем, что его синтаксис близок к синтаксису языка C++. Унаследовав самое лучшее от языка программирования C++, язык Java при этом избавился от некоторых недостатков C++, в результате чего на нем стало проще программировать. В этом языке нет, например, указателей, которые сложны в использовании и потенциально могут послужить причиной доступа программы к не принадлежащей ей области памяти.

Проектирование логики
Визуальное проектирование
Браузеры
Подключение к Internet
Документация и литература
Мобильность
Мобильность Java
Перенос приложения с
Подготовка приложения
Типы данных

Первое приложение
В качестве инструментального средства для разработки автономных приложений и аплетов Java мы будем использовать интегрированную систему разработки Java WorkShop. Она доступна для операционных систем Windows 95, Windows NT, Solaris (платформы SPARC и Intel).

Первая диалоговая панель
Диалоговая панель Create
Основной файл созданного
Файлы проекта HelloJava
Измененный исходный
Работа приложения Hello Java!
Текст HelloJava
Исходный текст приложения HelloJava
Главное окно интегрированной
Окно Java WorkShop Startup

Первый аплет
Внешне аплет выглядит как окно заданного размера. Он может рисовать внутри этого окна (и только в нем) произвольные изображения и текст. Двоичный файл с интерпретируемым байт-кодом Java располагается на сервере Web. В документе HTML с помощью оператора APPLET организуется ссылка на этот двоичный файл.

Исходный текст документа HTML
Исходный текст документа HTML
Листинг 2
Новый текст
Изменяем исходный текст аплета
Измененный исходный
Листинг 3
Измененный исходный
Теперь наш аплет "умеет"
Метод paint

Рисование в окне аплета
Для окна аплета создается объект класса Graphics, ссылка на который передается методу paint. Раньше мы уже пользовались этим объектом, вызывая для него метод drawString, рисующий в окне текстовую строку. Объект, ссылка на который передается методу paint, и есть контекст отображения. Сейчас мы займемся контекстом отображения вплотную.

Битовые маски стиля шрифта
Конструкторы
Методы
Определение атрибутов
Определение атрибутов контекста отображения
Определение границ области ограничения вывода
Определение цвета выбранного в отображения
Определение шрифта выбранного в отображения
Определение метрик текущего шрифта
Определение метрик заданного шрифта

События
Если вы создавали приложения для операционной системы Microsoft Windows, здесь для вас нет ничего нового - вспомните, как вы обрабатывали сообщение WM_LBUTTONDOWN или WM_CHAR. Когда пользователь выполнял действие с мышью или клавиатурой в окне приложения, функция этого окна получала соответствующее сообщение. Методы класса Applet, обрабатывающие события от мыши и клавиатуры, являются аналогами обработчиков указанных сообщений.

Аплет LineDraw
Аплет LineDraw
Окно аплета LineDraw с нарисованными линиями
Исходный текст
Исходный текст аплета LineDraw
Листинг 1
Листинг 2
Метод getAppletInfo
Метод init
Метод paint

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

Переключатели
Класс Checkbox
Конструкторы
Методы
Переключатели с независимой фиксацией
Переключатели с зависимой фиксацией
Конструктор
Методы
Списки Choice
Списки класса Choice

Работа с системой Layout Manager
В том, что разработчик приложения никогда не знает характеристики устройства отображения, установленные у пользователя. Он, в частности, не может заранее знать разрешение монитора, размер системного шрифта и другие характеристики, необходимые для компоновки диалоговых панелей в терминах абсолютных координат.

Режимы BorderLayout
Режим BorderLayout
Конструкторы класса BorderLayout
Методы класса BorderLayout
Применение класса BorderLayout
Режимы CardLayout
Режим CardLayout
Конструкторы класса CardLayout
Методы класса CardLayout
Использование режима размещения CardLayout

Работа с панелями
Панели, создаваемые на базе класса Panel, являются мощным средством организации диалогового интерфейса. Так как класс Panel произошел от класса Container, панель может содержать компоненты и другие панели. Для каждой панели можно определить режим размещения компонент, что позволяет создавать достаточно сложный пользовательский интерфейс.

Аплет Options
Аплет Options
Окно аплета Options
Выбор цвета фона
Выбор цвета текста
Исходный текст
Исходный текст аплета Options
Листинг 1
Описание текста
Описание исходного текста аплета Options

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

Работа с классом MenuBar
Класс Menu
Класс Menu
Конструкторы
Методы
Работа с классом Menu
Класс MenuItem
Класс MenuItem
Конструктор
Методы

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

Методы
Создание дочернего класса на базе класса Thread
Реализация интерфейса Runnable
Многопоточность и анимация
Применение многопоточности для анимации
Синхронизация потоков
Синхронизация потоков
Синхронизация методов
Блокировка потока
Блокировка на заданный период времени

История экономических учений - перейти
История экономических учений - перейти
История экономических теорий - перейти
Познание экономической практики - перейти
История экономических учений в системе наук - перейти
Денежное обращение и регулирование - перейти
Денежное обращение - перейти
Валютное международное право - перейти
Первый сайт на Perl - перейти
Предисловие - перейти
Введение в мир Perl - перейти
Структура программы - перейти
Типы данных - перейти
Операции и выражения - перейти
Операторы - перейти