Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание ролевой компьютерной игры 37) Реальное время


Школа программирования

Разработка ролевой игры

37) Реальное время

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

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

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

  program LearningRPG;

  uses Map, LowLevel, Hero, Game, CRT, Monster, Combat, Magik, Dos;

  var k: Char;
      RealTimeFlag: Boolean;

  var
    h, m, s, hund : Word;
    lt, lt2: Longint;

  begin
  RealTimeFlag:= false;

  Randomize;

  VideoInitialize;
  MapGeneration(1);
  GenerateMonsters;
  InitHeroes;
  GenerateHero;

  while true do
    begin
    ShowGame;

    if RealTimeFlag then
     begin
     GetTime(h,m,s,hund);
     lt := h*60*60 + m*60 + s;
     while not KeyPressed do
      begin
      GetTime(h,m,s,hund);
      lt2 := h*60*60 + m*60 + s;
      if lt2-lt > 3 then
         begin
         MonstersStep;
         break
         end;
      end;
     end;

    k := ReadKey;
    case k of

       ' c ' : ShowHeroFullInfo;

  ...

Изменение в любой момент времени значения флажка RealTimeFlag приведет к переключению из пошагового в режим реального времени и обратно.

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

Далее: - добавляем в программу возможность поедания пищи.
Еда - одна из оригинальных игровых концепций, которая не всегда реализуется в коммерческих играх, однако по праву считается одной из увлекательных идей в roguelike-играх. Каждый игрок характеризуется таким параметром, как усталость - по мере ее накопления при движении и сражении повышается вероятность снижения здоровья. А когда усталости набирается много, здоровье теряется очень быстро. Снимается же усталость принятием пищи - еще одного типа игровых предметов.


Исходный код текущей версии для Turbo Pascal (всегда проверен и работоспособен, главный файл - main.pas):

тут, 2666.zip, 15650 байтов


(c) 2004-2006 Сергей Бобровский bobrovsky@russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное