MIDlet Pascal
Поиск по сайту
Форма входа

Статистика

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


Яндекс.Метрика

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Воскресенье, 15.07.2018, 20.01.00
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №5.4 - Аркада! - MPS - Леталка стелялка
Всем привет) начнем с обновления изо)
И обновляем процедуру LoadImages;
Procedure LoadImages;
Begin
 im:=LoadImage('/images.png');
 Pers[1]:=Rotate_Image_From_Image(im, 0,0,30,50,0);
 Pers[2]:=Rotate_Image_From_Image(im, 30,0,30,50,0);
 Pers[3]:=Rotate_Image_From_Image(im, 60,0,30,50,0);
 Bots[1]:=Rotate_Image_From_Image(im, 0,0,30,50,2);{NEW}
 Bots[2]:=Rotate_Image_From_Image(im, 30,0,30,50,2);{NEW}
 Bots[3]:=Rotate_Image_From_Image(im, 60,0,30,50,2);{NEW}
 Klen[1]:=Rotate_Image_From_Image(im, 0,50,30,40,0);
 Klen[2]:=Rotate_Image_From_Image(im, 90,0,90,90,0);
 ResArs:=Rotate_Image_From_Image(im, 30,50,15,6,0);
End;

Розбераем)
Мы не обновляем изображения, а лиш используя библиотеку
отражаем нашего персонажа и получается бот летяший на нас.


Новые пирименные)
 Bots:array[1..3] of image;
 bx,by:integer;
 j:integer;

Добовляем новые процедуры)
Procedure DBots;
Begin
 if (bx=0) then bx:=Random(wi)+wi;{начальная точка х}
 if (by=0) then by:=Random(he-100);{высота бота у}
 DrawImage(Bots[Random(3)+1], bx,by);{изо бота}
 
 bx:=bx-3;{движения бота}
 if (bx<-50) then {если бот за уйшел, делаем нового}
 Begin
 bx:=0;
 by:=0;
 End;
 
 For i:=1 To 50 Do {цыкл бесконечных пуль}
  Begin
 if (ars[i].x>bx) and (ars[i].x<bx+30) and
 (ars[i].y>by) and (ars[i].y<by+50) then{проверяем есть ли попадание}
 Begin
 SetColor(255,0,0);{красный цвет}
  For j:=1 To 200 Do Plot(bx+Random(30),by+Random(50));{200 капилек крови, в случайном порядке}
 bx:=0;{бот исчезает}
 by:=0;{бот исчезает}
 ars[i].x:=0;{пуля исчезает по х}
 ars[i].y:=0;{пуля исчезает по у}
 End;
 End;
End;


Главный цыкл розмещаем так:
Begin
 SInt;
 LoadImages;
Repeat
 key:=keyToAction(getKeyPressed);
 SetColor(250,250,255);
 FillRect(0,0,wi,he);

 DFon;
 DArs;
 DBots;
 DPers;
 
 Repaint;
 Delay(10);
Until False;
End.


Весь цыкл выглядит так:
Program MPS;
uses canvas;
var
 im:image;
 Pers:array[1..3] of image;
 Bots:array[1..3] of image;
 Klen:array[1..3] of image;
 ResArs:image;
 
 i,j,key:integer;
 wi,he:integer;
 x,y:integer;
 bx,by:integer;
 life:integer;
 zapas:integer;
 oblaka:integer;
 mx,my:integer;
 arsa:integer;
 
ars:array[1..50] of record
 x,y:integer;
End;
 

Procedure LoadImages;
Begin
 im:=LoadImage('/images.png');
 Pers[1]:=Rotate_Image_From_Image(im, 0,0,30,50,0);
 Pers[2]:=Rotate_Image_From_Image(im, 30,0,30,50,0);
 Pers[3]:=Rotate_Image_From_Image(im, 60,0,30,50,0);
 Bots[1]:=Rotate_Image_From_Image(im, 0,0,30,50,2);{NEW}
 Bots[2]:=Rotate_Image_From_Image(im, 30,0,30,50,2);{NEW}
 Bots[3]:=Rotate_Image_From_Image(im, 60,0,30,50,2);{NEW}
 Klen[1]:=Rotate_Image_From_Image(im, 0,50,30,40,0);
 Klen[2]:=Rotate_Image_From_Image(im, 90,0,90,90,0);
 ResArs:=Rotate_Image_From_Image(im, 30,50,15,6,0);
End;

Procedure SInt;
Begin
 wi:=getWidth;
 he:=getHeight;
 x:=(wi/2)-30;
 y:=he-70;
 life:=30;
 zapas:=30*10;
End;

Procedure DFon;
Begin
 oblaka:=oblaka+1;
 if (oblaka>8000) then oblaka:=0;
 if (x>2000) then x:=0;
 if (y<he-70) then y:=y+1;
 
  For mx:=0 To 100 Do 
 For my:=0 To (he/90) Do 
 DrawImage(Klen[2], (mx*90)-oblaka,(my*90));
 
 For i:=0 To 100 Do 
 DrawImage(Klen[1], (i*30)-x,he-40);
End;

Procedure DPers;
Begin
 DrawImage(Pers[Random(3)+1], (wi/2)-30,y);
 
 SetColor(255,0,0);
 FillRect((wi/2)-28,y-6,30,2);
 SetColor(0,255,0);
 FillRect((wi/2)-28,y-6,life,2);
 SetColor(0,0,255);
 FillRect((wi/2)-28,y-4,zapas/10,2);
 
 if (y<(he-70)) then zapas:=zapas-1;
 else 
 if (zapas<=30*10) then zapas:=zapas+3;
 if (zapas<1) and (y<(he-70)) then y:=y+5;
 
 
  if (key=GA_UP) and (y>5) and (zapas>5) then
 Begin
 y:=y-5;
 x:=x+3;
 oblaka:=oblaka+1;
  End;
 if (key=GA_DOWN) and (y<(he-70)) then y:=y+3;
 if (key=GA_RIGHT) and (y<(he-70)) then
  Begin
 x:=x+5;
 oblaka:=oblaka+3;
 End;
 if (key=GA_LEFT) and (y<(he-70)) then
 Begin
 x:=x-5;
 oblaka:=oblaka-3;
  End;
End;

Procedure DArs;
Begin
 For i:=1 To 50 Do 
  Begin
 if (ars[i].x>0) and (ars[i].y>0) then 
 DrawImage(ResArs, ars[i].x,ars[i].y); 
  if (ars[i].x>0) and (ars[i].y>0) then 
 ars[i].x:=ars[i].x+5; 
 if (getKeyClicked=GA_FIRE) then
 Begin
  if (arsa=50) then arsa:=0; 
 arsa:=arsa+1; 
 ars[arsa].x:=(wi/2)-12; 
 ars[arsa].y:=y+14; 
 End;
 End;
End;


Procedure DBots;
Begin
 if (bx=0) then bx:=Random(wi)+wi;{начальная точка х}
 if (by=0) then by:=Random(he-100);{высота бота у}
 DrawImage(Bots[Random(3)+1], bx,by);{изо бота}
 
 bx:=bx-3;{движения бота}
 if (bx<-50) then {если бот за уйшел, делаем нового}
 Begin
 bx:=0;
 by:=0;
 End;
 
 For i:=1 To 50 Do {цыкл бесконечных пуль}
  Begin
 if (ars[i].x>bx) and (ars[i].x<bx+30) and
 (ars[i].y>by) and (ars[i].y<by+50) then{проверяем есть ли попадание}
 Begin
 SetColor(255,0,0);{красный цвет}
  For j:=1 To 200 Do Plot(bx+Random(30),by+Random(50));{200 капилек крови, в случайном порядке}
 bx:=0;{бот исчезает}
 by:=0;{бот исчезает}
 ars[i].x:=0;{пуля исчезает по х}
 ars[i].y:=0;{пуля исчезает по у}
 End;
 End;
End;

Begin
 SInt;
 LoadImages;
Repeat
 key:=keyToAction(getKeyPressed);
 SetColor(250,250,255);
 FillRect(0,0,wi,he);

 DFon;
 DArs;
 DBots;
 DPers;
 
 Repaint;
 Delay(10);
Until False;
End.

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

www.parkflyer.ru - радиоуправляемые модели, радиоуправляемые модели самолетов, магазин радиоуправляемых моделей
Роспись стен, скульптуры на заказ
Wladymyr © 2012-2018
Создать бесплатный сайт с uCoz