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

Статистика

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


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

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Понедельник, 28.05.2018, 04.13.33
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №9.3 - SpeedSanta
1. в модуле "parses"
   В разделе "initialization" пишем:

   For i:=0 To 150 Do //выставляем снег
   Begin
    sneg[i].x:=Random(240);//выставляем случайную координату х
    sneg[i].y:=Random(320);//выставляем случайную координату у
    sneg[i].s:=1+Random(6);//Выставляем случайный размер частиц
   End;

   block.x:=240+Random(240);//выставляем случайную координату блока
   block.y:=260;//выставляем случайную координату блока
   block.w:=4+Random(3);//Выставляем случайный вид препятствия

   SetUserLife:=4;//начальное количество сердечек у санты
   PosUserX:=60;//позиция х
   PosUserY:=251;//позиция у
   SetUserY:=PosUserY;//установка у
   SetWiew:=Random(4);//случайный вид кубиков
   //кубиков есть 4 вида 0,1,2,3.
   

   В разделе "initialization"  можно задавать начальные
   значения, параметры переменых.


2. В разделе "implementation" пишем:
   Procedure Game;//процедура игры
   Begin
    if (SetUserLife>0) then //если сердечки еще остались
    Begin
    InfoUserKm:=InfoUserKm+1;//прибавляем километры
    AnimUser:=AnimUser+1;//меняем анимацыю
    AnimMap:=AnimMap+3;//приближаем карту
    block.x:=block.x-3;//приближаем препятствие
    if (block.x<=-30) then //если препятствие пройдено
    Begin
     block.x:=240+Random(240);//переизбираем кор х
     block.y:=260;//переизбираем кор у
     block.w:=4+Random(3);//переизбераем вид
     InfoUserMoney:=InfoUserMoney+1;//прибавляем монетку
    End;
    if (KeyClicked=GA_UP) and (PosUserY=251) then SetUserY:=PosUserY-90;//если санта стоит на земле то можно прыгнуть
    if (PosUserY<251) and (PosUserY=SetUserY) then SetUserY:=PosUserY+90;//если санта в воздухе то возвращаемся
    if (PosUserY>SetUserY) then PosUserY:=PosUserY-6;//если установка не ровна позиции
    if (PosUserY<SetUserY) then PosUserY:=PosUserY+6;
    if (PosUserX+30>block.x) and (PosUserX+30<block.x+30) and (PosUserY=block.y-9) then //если произойшло столкновение
    Begin
     SetUserLife:=SetUserLife-1;//убераем сердечко
     SetUserY:=PosUserY-90;//подпрыгиваем)
    End;
    DrawImage(ImageIntro, 0,0);//рисуем фон
    For i:=0 to (240/30) do DrawImage(ImageBser[SetWiew], i*30-AnimMap,290);//прорисовываем блоки
    DrawImage(ImageBser[block.w], block.x,block.y);//прорисовываем препятствие
    DrawImage(ImageUser[AnimUser/2], PosUserX,PosUserY);//прорисовываем бегущего санту
    For i:=1 To SetUserLife Do DrawImage(ImageLife, 20*i,3);//прорисовываем сердечки
    For i:=0 To 300 Do //зацикливываем снег
    Begin
     if (sneg[i].x<=0) or (sneg[i].y<=0) then //если снег ушел за карту
     Begin
      sneg[i].x:=120+Random(240);//переизберем х
      sneg[i].y:=-Random(320);//переизбераем у
      sneg[i].s:=1+Random(6);//переизбираем размер частицы
     End;
     sneg[i].x:=sneg[i].x-3;//двигаем снег влево
     sneg[i].y:=sneg[i].y+sneg[i].s;//двигаем снег в низ
     //чем больше частица тем быстрее она летит вниз создавая эффект перспективы
     FillEllipse(sneg[i].x-10,sneg[i].y-10,sneg[i].s,sneg[i].s);//рисуем снег
    End;
    if (AnimUser=7*2) then AnimUser:=0;//если анимация дошла до предела обнуляем
    if (AnimMap=30) then AnimMap:=0;//если карта передвинулась на кубик то нулируем
    //эффект получается одинаковый если оно движется долго или только на одну клетку неотлечить)
    End;else
    Begin //если санта проиграл то
     if (KeyClicked=GA_FIRE) then//если хотим начать сначала то обнуляем всё
     Begin
      InfoUserKm:=0;
      InfoUserMoney:=0;
      SetUserLife:=4;
      block.x:=240+Random(240);
      block.y:=260;
      block.w:=4+Random(3);
      PosUserY:=251;
      SetUserY:=PosUserY;
      SetWiew:=Random(4);
     End;
    DrawImage(ImageIntro, 0,0);//выводим фон
    For i:=0 To 300 Do //выводим цыкл снега
    Begin
     if (sneg[i].x<=0) or (sneg[i].y<=0) then
     Begin
      sneg[i].x:=120+Random(240);
      sneg[i].y:=-Random(320);
      sneg[i].s:=1+Random(6);
     End;
     sneg[i].x:=sneg[i].x-3;
     sneg[i].y:=sneg[i].y+sneg[i].s;
     FillEllipse(sneg[i].x-10,sneg[i].y-10,sneg[i].s,sneg[i].s);
    End;
    SetColor(200,0,0);
    //выводим текст
    DrawText('Достижения', 3,getStringHeight('A')*1);
    SetColor(200,200,0);
    DrawText('Набрано км: '+InfoUserKm, 3,getStringHeight('A')*2);
    DrawText('Набрано монет: '+InfoUserMoney, 3,getStringHeight('A')*3);
    DrawText('Набрано очков: '+(InfoUserKm+InfoUserMoney*100), 3,getStringHeight('A')*4);
    SetColor(0,200,255);
    DrawText('Начать сначала', 6,getStringHeight('A')*6);
    End;
   End;


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

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