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

Статистика

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


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

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Понедельник, 28.05.2018, 04.12.57
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №5.2 - Первый Полёт! - MPS - Леталка стелялка
Всем привет) начнем с новых процедур)
Procedure SetInt;
Begin
  wi:=getWidth;{getWidth-получаем ширену устройства}
  he:=getHeight;{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));{прорисовуем облака на 100 метров в перед}
  For i:=0 To 100 Do 
  DrawImage(Klen[1], (i*30)-x,he-40);{прорисовуем дорогу на 100 метров вперед}
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;

Розбераем важное)
(y<(he-70)) - это присутствует почти во всех условиях,
     оно проверяет стоит ли наш пилот на зимле
     или летит!)

Главный цыкл розмещаем таким образом:
Begin
  SetInt;{Устанавливываем начальные пирименные}
  LoadImages;{Загружаем изображения}
Repeat
  key:=keyToAction(getKeyPressed);{Обработка зажатой клавиши}
  SetColor(255,255,255);{Белый цвет}
  FillRect(0,0,wi,he);{Зарисовуем экран}

  DFon;{Показываем Фон}
  DPers;{Показываем Пилота}
  Repaint;{Прорисовка}
  Delay(10);{Задержка}
Until False;{Безконечный цыкл}
End.

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

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);
  Klen[1]:=Rotate_Image_From_Image(im, 0,50,30,40,0);
  Klen[2]:=Rotate_Image_From_Image(im, 90,0,90,90,0);
End;

Procedure SetInt;
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));{прорисовуем облака на 100 метров в перед}
  For i:=0 To 100 Do 
  DrawImage(Klen[1], (i*30)-x,he-40);{прорисовуем дорогу на 100 метров вперед}
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;


Begin
  SetInt;
  LoadImages;
Repeat
  key:=keyToAction(getKeyPressed);
  SetColor(250,250,255);
  FillRect(0,0,wi,he);
  
  DFon;
  DPers;
  
  Repaint;
  Delay(10);
Until False;
End.

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

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