Net Tank: танковый имитатор для двух игроков
Net-Tank — игра для одного или двух игроков. Я написал ее, чтобы показать как создаются игры для нескольких участников и осветить некоторые проблемы которые могут при этом возникнуть. Это самая примитивная игра (для её написания мне понадобилось всего три дня), имеющая один-единственный уровень. Более того, это двухмерная игра, в которой игрок смотрит на поле боя сверху вниз. Мы напишем полноценную трехмерную игру типа Wolfenstetn в девятнадцатой главе, а сейчас я хочу оставить программу достаточно простой чтобы акцентировать внимание не на алгоритмах игровой логики, а на коммуникационной части.
Перед тем как мы начнем разбирать игру, я предлагаю вам сыграть в нее с кем-нибудь или, по крайней мере, в одиночку, чтобы вы понимали, о чем сейчас пойдет речь. Как я упоминал ранее, все профессионалы в области разработки игр стараются писать уникальные программы и не повторять уже существующие игры. Я модифицировал некоторые модули наших старых программ и создал на их основе новые модули. Чтобы избавиться от массивных включений исходных файлов, не имеющих непосредственного отношения к игре, я разработал несколько библиотек:
SNDLIB.C библиотека звуковых эффектов;
GRAPH1.С низкоуровневый двухмерный спрайт и графическая библиотека;
KEYLIB.C библиотека ввода с клавиатуры;
SERLIB.C коммуникационная библиотека.
Все файлы заголовков для этих библиотек имеют те же самые имена:
SNDLIB.H GRAPH1.H KEYLIB.H SERLIB.H
Все эти модули объединяются в одну обширную библиотеку с помощью менеджера LIB.EXE. Для создания этой библиотеки вам надо:
1. Скомпилировать каждый Си-модуль с помощью файла СО.ВАТ:
cl -AM -Zi -с -Fc -Gs -G2 %1.с
2. После компиляции создается одна большая библиотека с именем MYLIB.LIB. Чтобы сделать это, вызовите библиотечный менеджер путем ввода команды
lib mylib.lib
3. Программа скажет, что библиотека с таким именем отсутствует, и спросит вашего согласия на ее создание. Ответьте утвердительно;
4. Дрбавьте в командную строку все модули, входящие в библиотеку, как это укаэано:
operations: +SNDLIB +GRAPH1 +KEYLIB +SERLIB
5. Затем появятся еще два запроса. Ответьте на них нажатием клавиши Enter.
После этого у вас появится библиотека MYLIB.LIB, которую вы можете присоединять так же, как и любую другую библиотеку.
Для создания игры, вам необходимо создать два исполняемых модуля:
§
Один для игрока 1;
§ Другой для игрока 2.
Чтобы это сделать, вам надо:
1. Откомпилировать NET1.C и NET2.C (2 версии игры) следующим с помощью командного файла СС.ВАТ:
cl -AM -Zi -с -Fc -Gs -G2 %1.С
if errorlevel 1 goto с fail
link /ST:16384 /CO %1/,,,graphics.lib+myiib.iib,,
:c_fail
Этот командный файл компилирует игру и объединяет ее с библиотекой, чтобы создать исполняемый модуль. Сделайте это, чтобы создать два файла:
NET1.EXE и NET2.EXE;
2. Поместите NET1.EXE ,на ПК1 и NET2.EXE на ПК2. Соедините обе машины нуль-модемным кабелем через СОМ1;
3. Теперь можно начинать игру. Наберите NET1.EXE на ПК1 и NET2.EXE на ПК2. Машины соединятся и вы можете сразиться со своим приятелем на танковой дуэли.
Используйте следующие управляющие клавиши:
Стрелка вправо Повернуть направо
Стрелка влево Повернуть налев
Стрелка вверх Двигаться вперед
Стрелка вниз Двигаться назад
Esc Выход из игры
Пробел Стрельба
Т Подразнить партнера
Поиграйте в Net-Tank и попутно обратите внимание на следующие вещи:
§ Возникает ли эффект запаздывания при перемещениях?
§ Теряет ли игра синхронизацию?
§ Если да, то в какие моменты?
Также обратите внимание на звуковые эффекты. Для их создания я использовал собственный голос и условно-бесплатную программу Blaster Master Наконец, игру можно проводить при установленной программе-ускорителе клавиатуры.Если при нажатии клавиши танк слишком резво устремляется вперед, попробуйте уменьшить скорость реагирования клавиатуры, установив программу TURBOKEY.COM, которая имеется на дискете.