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

Статистика

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


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

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Воскресенье, 15.07.2018, 20.12.43
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №4 - Завершение! - 2D erni
И первое с чего начнем, так это изображения)


14.png
 - это изображение мусора, да именно
мусора, веть эрни это уборщик мусора,
он будет собирать мусор)))

Суть игры можете менять веть это просто пример!


Новые пиременные!
  mysor_x,mysor_y:integer; - координаты мусора)
  mysor_count:integer; - количество собраного мусора)


Новые Процедуры/функции!
Procedure DrawSetcor;
Begin
  if ((x+30)/30=0) then x:=x+3; {контроль левой стороны}
  if ((x+25)/30=11) then x:=x-3;{контроль правой стороны}
  if ((y+15)/30=0) then y:=y+3; {контроль верхней стороны}
  if ((y+15)/30=11) then y:=y-3;{контроль нижней стороны}
End;

Procedure DrawMysor;
Begin
  if (mysor_x=0) then mysor_x:=Random(10)+1;{переизбераем кординату х;}
  if (mysor_y=0) then mysor_y:=Random(10)+1;{переизбераем кординату у;}
  DrawImage(img[14],prox+(mysor_x*30)-x,proy+(mysor_y*30)-y);{выводим изо. мусора;}

  if (k=GA_FIRE) then {проверяем нажата ли кнопка (5,ок);}
  if ((x+15)/30=mysor_x) and ((y+15)/30=mysor_y) then {проверяем стоит ли ерни на мусоре?;}
  Begin
    mysor_count:=mysor_count+1;{прибовляем количество собраного мусора;}
    mysor_x:=Random(10)+1; {переизбераем кординату х;}
    mysor_y:=Random(10)+1; {переизбераем кординату у;} 
  End;

  SetColor(255,255,255);
  DrawText('Мусор: '+mysor_count, 3,15);
End;



Розбераем)

Procedure DrawSetcor; - эта процедура не даст Ерни покинуть
участок, возвращая его назад)

DrawMysor; - эта процедура вывидит на экран мусор, и если подойти на него и нажать (5,ок) ерни поднимит мусор
но в этот же момент мусор появится на другом участке земли и поетому игра бесконечная.
Но вы можите импровизировать, добовляя все новые и новые функции вроди таймера, ботов и подобного. Все зависит от ваших навыков)


Главный цыкл розмещаем таким образом

begin
  LoadImages;
  prox:=width/2;
  proy:=height/2;
  anim:=1;
  x:=5*30;
  y:=5*30;
Repeat
  key:=keyToAction(getKeyPressed);
  k:=keyToAction(getKeyClicked);
  Background;

  DrawSetcor;
  DrawMaps;
  DrawMysor;
  DrawPers;

  Repaint;
  Delay(15);
  until false;
end.


Весь код выглядит так
program erni;
const
  image_count=13;
  width=240;
  height=320;

var
  key,k,x,y:integer;
  temp:integer;
  anim,tanim,n:integer;
  prox,proy:integer;
  img:array[1..image_count] of  image;

  mysor_x,mysor_y:integer;
  mysor_count:integer;

procedure LoadImages;
Begin
  For temp:=1 To image_count Do
  img[temp]:=LoadImage(''+temp+'.png');
End;

procedure Background;
Begin
  SetColor(0,0,0);
  FillRect(0,0,width,height);
End;

Procedure DrawSetcor;
Begin
  if ((x+30)/30=0) then x:=x+3;
  if ((x+25)/30=11) then x:=x-3;
  if ((y+15)/30=0) then y:=y+3;
  if ((y+15)/30=11) then y:=y-3;
End;

procedure DrawMaps;
var
 map_x:integer;
 map_y:integer;
Begin
 For map_x:=0 To 10 Do
 For map_y:=0 To 10 Do\
 DrawImage(img[1],(map_x*30)+x,(map_y*30)+y);
End;

Procedure DrawMysor;
Begin
  if (mysor_x=0) then mysor_x:=Random(10)+1;{переизбераем кординату х;}
  if (mysor_y=0) then mysor_y:=Random(10)+1;{переизбераем кординату у;}
  DrawImage(img[14],prox+(mysor_x*30)-x,proy+(mysor_y*30)-y);{выводим изо. мусора;}

  if (k=GA_FIRE) then {проверяем нажата ли кнопка (5,ок);}
  if ((x+15)/30=mysor_x) and ((y+15)/30=mysor_y) then {проверяем стоит ли ерни на мусоре?;}
  Begin
    mysor_count:=mysor_count+1;{прибовляем количество собраного мусора;}
    mysor_x:=Random(10)+1; {переизбераем кординату х;}
    mysor_y:=Random(10)+1; {переизбераем кординату у;} 
  End;

  SetColor(255,255,255);
  DrawText('Мусор: '+mysor_count, 3,15);
End;

procedure DrawPers;
Begin
  if (tanim=1) then anim:=1;
  if (tanim=4) then anim:=3;
  if (tanim=7) then anim:=1;
  if (tanim=10) then anim:=2;
  if (tanim=13) then tanim:=0;
  if (n=0) then n:=3;
  if (n=1) then DrawImage(img[4+anim],(width/2),(height/2)-35);
  if (n=2) then DrawImage(img[10+anim],(width/2),(height/2)-35);
  if (n=3) then DrawImage(img[1+anim],(width/2),(height/2)-35);
  if (n=4) then DrawImage(img[7+anim],(width/2),(height/2)-35);
  if (key=GA_UP) then
  Begin
    n:=1;
    tanim:=tanim+1;
    y:=y-3;
  End else
  if (key=GA_DOWN) then
  Begin
    n:=3;
    tanim:=tanim+1;
    y:=y+3;
  End else
  if (key=GA_RIGHT) then
  Begin
    n:=2;
    tanim:=tanim+1;
    x:=x+3;
  End else
  if (key=GA_LEFT) then
  Begin
    n:=4;
    tanim:=tanim+1;
    x:=x-3;
  End else tanim:=0;

  SetColor(255,255,0);
  DrawText(''+(x/30)+':'+(y/30),3,3);
End;

begin
  LoadImages;
  prox:=width/2;
  proy:=height/2;
  anim:=1;
  x:=5*30;
  y:=5*30;
Repeat
  key:=keyToAction(getKeyPressed);
  k:=keyToAction(getKeyClicked);
  Background;

  DrawSetcor;
  DrawMaps;
  DrawMysor;
  DrawPers;

  Repaint;
  Delay(15);
  until false;
end.

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

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