Меню сайта
Форма входа

Категории раздела
Уроки по созданию игр [38]
Программирование игр разной сложности
Игровые алгоритмы [24]
Алгоритмы, которые уже реализованы для разных жанров игр
Графика [5]
Учимся работать с графикой в Делфи
Мультимедиа [3]
Работа с мультимедийными возможностями Делфи
Другие статьи [18]
Статьи не вошедшие не в один из разделов
Ошибки [4]
Всевозможные ошибки и пути их решения
Среда, 01.05.2024, 06:17
Приветствую Вас Гость

Статьи по программированию

Главная » Статьи » Уроки по созданию игр

Игра Танчики часть 2

Создание Танчиков часть 2

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

TTank=record

  Speed,x,y,Povorot,Anim:integer;

  Go,Fight,Vistrelil,poyehal:boolean;

  Zaderhka_Vistrela,Max_vistrel:integer;

  Visible:boolean;

end;

 

  Tpulya=record

  x,y,speed,povorot:integer;

  visible:boolean;

  end;

 

  TFlag=record

  x,y:integer;

  Pic:Tbitmap;

  end;

 

Характеристики танка, мы с Вами уже рассмотрели в предыдущей статье, на этом останавливаться не будем.

У пули, как видно, есть:

x,y - координаты ее нахождения

speed – скорость движения пули

povorot – куда был повернут танк, когда выстрелил эту пулю (чтобы знать в какую сторону пуля полетит)

visible – показатель того, вестрелена пуля или нет (сущетсвует на карте или нет).

У флага все просто:

x,y – координаты на карте

Pic – картинка флага

 

Идем далее. Теперь рассмотрим дополнительно объявленные  переменные:

var

  Tanki:array[1..4,1..4,1..2]of TBitmap;

  Textures:array[1..3] of TBitmap;

  Flag:array[1..2]of TFlag;

  Map:array[0..10,0..10] of integer;

  Tank:array[1..4]of TTank;

  Puli:array[1..20] of Tpulya;

  Pulya,Buf:Tbitmap;

  path:string;

  qUp,qDown,qLeft,qRight:boolean;

  i,j:integer;

 

Обьясню переменные

Tanki – массив картинок анимации танков

Textures – массив картинок кирпичей, покрытия и брони

Flag – массив с вашим флагом и флагом соперника

Map – игровая карта размеров 10 на 10 квадратиков

Tank – массив танков

Puli – массив пуль (ограничен до 20 пуль, которые могут одновременно прорисовыватья – остальные будут заменять предыдущие. Но для трех танков 20 пуль одновременно – это и так черезчур)

Pulya – картинка пули

Buf – буфер на который будет рисоваться вся игра, а сам буфер будет рисоваться на форму. (нужен чтобы рисуемая картинка не мигала)

Path – хранит путь к нашей папке с игрой (нужен для правильной загрузки картинок)

qUp,qDown,qLeft,qRight – переменные-показатели нажатых клавиш в каждый момент

i,j – просто переменные, которые мы будем использовать как для загрузки картинок так и для самой игровой структуры.

 

В свойстве нашей формы CREATE (по созданию формы) мы пишем следующий код:

//opredeleniye puti k papke s igroy

path:=extractFileDir(Application.ExeName);

 

   //zagruzka kartinok tankov

   for i:=1 to 4 do

   begin

     for j:=1 to 2 do

       begin

       Tanki[1,i,j]:=Tbitmap.create;

       Tanki[1,i,j].TransparentColor:=clWhite;

       Tanki[1,i,j].Transparent:=true;

       Tanki[1,i,j].loadfromFile(path+'\img\'+'t'+inttostr(i)+inttostr(j)+'.bmp');

 

       Tanki[3,i,j]:=Tbitmap.create;

       Tanki[3,i,j].TransparentColor:=clWhite;

       Tanki[3,i,j].Transparent:=true;

       Tanki[3,i,j].loadfromFile(path+'\img\'+'v'+inttostr(i)+inttostr(j)+'.bmp');

 

       Tanki[2,i,j]:=Tbitmap.create;

       Tanki[2,i,j].TransparentColor:=clWhite;

       Tanki[2,i,j].Transparent:=true;

       Tanki[2,i,j].loadfromFile(path+'\img\'+'r'+inttostr(i)+inttostr(j)+'.bmp');

 

       end;

   end;

 

   //zagruzka tekstur

   for i:=1 to 3 do

   begin

   Textures[i]:=Tbitmap.Create;

   textures[i].Transparent:=false;

   Textures[i].LoadFromFile(path+'\img\'+inttostr(i)+'.bmp');

   end;

 

   flag[1].x:=9;

   flag[1].y:=0;

   flag[2].x:=0;

   flag[2].y:=9;

   flag[1].Pic:=Tbitmap.Create;

   flag[1].Pic.Transparent:=true;

   flag[2].Pic:=Tbitmap.Create;

   flag[2].Pic.Transparent:=true;

   flag[1].Pic.loadfromfile(path+'\img\4.bmp');

   flag[2].Pic.loadfromfile(path+'\img\5.bmp');

   //zagruzka puli

   Pulya:=Tbitmap.Create;

   Pulya.Transparent:=true;

   Pulya.LoadFromFile(path+'\img\p.bmp');

   Buf:=Tbitmap.Create;

   Buf.Width:=600;

   buf.Height:=600;

   Tank[1].Speed:=12;

   Tank[1].x:=60;

   Tank[1].y:=540;

   Tank[1].Povorot:=1;

   Tank[1].Go:=false;

   Tank[1].Anim:=1;

   Tank[1].Fight:=false;

   Tank[1].Zaderhka_Vistrela:=0;

   Tank[1].Max_vistrel:=10;

   Tank[1].Vistrelil:=false;

   Tank[1].Visible:=true;

 

   Tank[2].Speed:=7;

   Tank[2].x:=480;

   Tank[2].y:=0;

   Tank[2].Povorot:=3;

   Tank[2].Go:=false;

   Tank[2].Anim:=1;

   Tank[2].Fight:=false;

   Tank[2].Zaderhka_Vistrela:=0;

   Tank[2].Max_vistrel:=10;

   Tank[2].Vistrelil:=false;

   Tank[2].Visible:=true;

   Tank[2].poyehal:=false;

 

   Tank[3].Speed:=5;

   Tank[3].x:=540;

   Tank[3].y:=60;

   Tank[3].Povorot:=3;

   Tank[3].Go:=false;

   Tank[3].Anim:=1;

   Tank[3].Fight:=false;

   Tank[3].Zaderhka_Vistrela:=0;

   Tank[3].Max_vistrel:=5;

   Tank[3].Vistrelil:=false;

   Tank[3].Visible:=true;

   Tank[3].poyehal:=false;

   //nachalniye harakteristiki pul'

   for i:=1 to 20 do

   begin

   Puli[i].x:=0;

   Puli[i].y:=0;

   Puli[i].speed:=20;

   Puli[i].povorot:=0;

   Puli[i].visible:=false;

   end;

   qLeft:=false;

   qRight:=false;

   qUp:=false;

   qDown:=false;

 

   //generirovaniye karti

   randomize;

   for i:=0 to 9 do

   for j:=0 to 9 do

   begin

   map[i,j]:=random(100)+1;

   if map[i,j]<=50 then map[i,j]:=1;

   if (map[i,j]>50) and (map[i,j]<=80) then map[i,j]:=2;

   if (map[i,j]>80) and (map[i,j]<=100) then map[i,j]:=3;

   end;

   //rasstanovka flagov i tankov

   map[9,0]:=1;

   map[9,1]:=1;

   map[8,0]:=1;

   map[0,9]:=1;

   map[0,8]:=1;

   map[trunc(Tank[1].x/60),trunc(Tank[1].y/60)]:=1;

 

   for i:=1 to 4 do

   for j:=1 to 2 do

   form1.Canvas.Draw(i*60,j*60,Tanki[3,i,j]);

 

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

Категория: Уроки по созданию игр | Добавил: Armageddets (04.11.2012)
Просмотров: 1658 | Теги: игровые алгоритмы, программируем танк, игра танчики, создание игр на делфи, танк | Рейтинг: 2.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Уроки по созданию каких игр Вам интересны?
Всего ответов: 167
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0