GTA-SA на Delphi к Новому году!



Всем привет! Вот и подходит к концу 2009 год! Хочется написать что-то новогоднее. Например, какую-нибудь мини-игру. А что, если замахнуться и написать что-то похожее на всеми любимую игру GTA-SA? Вот только на новогоднюю тему…

Для этого нам понадобится сама GTA! Заходим в GTA, выбираем пейзаж, радующий глаз (и чтобы окон по больше было), снимаем скриншот (клавиша «Print Screen») и переходим в Photoshop, создаем новый файл, размером 800x600 пикселей с разрешением 72 пикс/дюйм. Вставляем изображение (Ctrl+V), ну и чтобы превратить нашу игру в новогоднюю, давайте наденем на нашего героя новогоднюю шапку. Для этого вставляем шапку и подгоняем под размеры головы. Сохраняем изображение в формате bmp или jpeq.

После чего открываем Delphi, во вкладке Additional выбираем компонент «image», располагаем его на форме с параметрами: AutoSize=true, в параметре picture указываем путь к сохраненной ранее картинке. Добавляем еще несколько компонентов «image» с параметрами stretch=true, в pictures указываем путь к картинкам с эльфами, которые можно скачать в интернете или взять из нашего архива. Располагаем эльфов у окон и подгоняем размеры.

Создаем 2 компонента Label со свойством caption= «Попаданий» и «0». В разделе описания глобальных переменных вписываем: a, n:integer; Из вкладки System добавляем 2 компонента Timer на форму, в их процедурах пишем:

Первый таймер:

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
timer2.Enabled:=true; { прогоняем второй таймер, чтобы отключить отображение эльфа} 
a:=random(9)+2; {глобальной переменной «а» присваиваем случайное значение до 9 и прибавляем 2, так как оператор random работает с выбирает числа начиная с 0 и картинка с номером 1 у нас занимает фоновое изображение} 
 
{Если переменная «а» равна 2 тогда image2 сделать видимым} 
if a=2 then image2.Visible:=true; 
if a=3 then image3.Visible:=true; 
if a=4 then image4.Visible:=true; 
if a=5 then image5.Visible:=true; 
if a=6 then image6.Visible:=true; 
if a=7 then image7.Visible:=true; 
if a=8 then image8.Visible:=true; 
if a=9 then image9.Visible:=true; 
if a=10 then image10.Visible:=true; 
 
{если число попаданий больше 10, тогда увеличить скорость} 
if n>10 then timer2.Interval:=800;
if n>20 then timer2.Interval:=700; 
if n>30 then timer2.Interval:=600; 
if n>40 then timer2.Interval:=500; 
if n>50 then timer2.Interval:=400; 
if n>60 then timer2.Interval:=300; 
if n>70 then timer2.Interval:=200; 
 end; 


Второй таймер:
procedure TForm1.Timer2Timer(Sender: TObject); 
begin 
{Если переменная «а» равна 2 тогда image2 сделать невидимым} 
if a=2 then image2.Visible:=false; 
if a=3 then image3.Visible:=false; 
if a=4 then image4.Visible:=false; 
if a=5 then image5.Visible:=false; 
if a=6 then image6.Visible:=false; 
if a=7 then image7.Visible:=false; 
if a=8 then image8.Visible:=false; 
if a=9 then image9.Visible:=false; 
if a=10 then image10.Visible:=false; 
timer2.Enabled:=false; {выключить таймер} 
end; 


Для того чтобы курсор мыши сделать в виде прицела, выбираем Form1 в окне Object Tree view и ставим свойство курсор CrCross:

Вот описание создания простейшей игры, конечно на звание «Игра года» она немного не дотягивает, но ей можно убить время. Еще раз с Новым годом Вас!!!

Written by Агайгельдиев Руслан (AgRuMa)