Вниз  MIDlet Pascal
- 11.08.2014 / 18:59
AHiLLA
  Пользователь

AHiLLA 
Сейчас: Offline
SeTSeR, Это не то. Если оставить только одну часть этого кода, то и без перерисовки работает.
А это один цикл, поэтому значение одновременно и прибавляется и убавляется, и стоит на месте, не меняясь
- 11.08.2014 / 19:10
SeTSeR
  Пользователь

SeTSeR 
Сейчас: Offline
AHiLLA, разбей на два цикла, цикл подъёма и цикл спуска.
- 11.08.2014 / 19:18
AHiLLA
  Пользователь

AHiLLA 
Сейчас: Offline
SeTSeR, Все-таки так я не вкуриваю, я только начинаю МП юзать
- 11.08.2014 / 19:33
SeTSeR
  Пользователь

SeTSeR 
Сейчас: Offline
  1. procedure jump;
  2. begin
  3. for i:=1 to 10 do
  4. y:=y-2;
  5. repaint;
  6. end;
  7. for i2:=1 to 10 do
  8. y:=y+2;
  9. repaint;
  10. end;
Вотъ

Изменено SeTSeR (11.08 / 19:34) (всего 1 раз)
- 11.08.2014 / 20:10
Kalter
  Пользователь

Kalter 
Сейчас: Offline
SeTSeR, не думаю, что такое кто-то будет использовать в играх.
Вот прыжок на несложном примере:
  1. program jump;
  2.  
  3. var
  4.     x,y:integer; //координаты
  5.     jmp:boolean; //состояние прыжка
  6.     jmps:integer; //счётчик для прыжка
  7.  
  8. //инициализация приложения перед запуском
  9. procedure init;
  10. begin
  11.     x:=(240+16)/2;
  12.     y:=320-32;
  13.     jmp:=false;
  14.     jmps:=0;
  15. end;
  16.  
  17. //отрисовка нашего малого и фона
  18. procedure draw;
  19. begin
  20.     //рисуем фон
  21.     setcolor(255,255,255);
  22.     fillrect(0,0,240,320);
  23.     //рисуем нашего малого
  24.     setcolor(0,0,0);
  25.     fillrect(x,y,16,32);
  26. end;
  27.  
  28. //здесь проверяем нажатые кнопки
  29. procedure keypressed;
  30. var
  31.     key:integer;
  32. begin
  33.     key:=getkeypressed;
  34.     if key=ke_key4 then begin x:=x-2; exit; end;
  35.     if key=ke_key6 then begin x:=x+2; exit; end;
  36.     key:=getkeyclicked;
  37.     if key=ke_key2 then
  38.     begin
  39.         jmp:=true; //активируем прыжок
  40.         jmps:=0; //онулируем счётчик прыжка
  41.     end;
  42. end;
  43.  
  44. //контроль физики (в нашем случае прыжком)
  45. procedure phyctrl;
  46. begin
  47.     if jmp then //если надо прыгать
  48.     begin
  49.         y:=y-4;
  50.         jmps:=jmps+1;
  51.         if jmps>5 then jmp:=false;//если уже достаточно прыгнули, то перестаём прыгать
  52.     end
  53.     else //а если мы не прыгаем
  54.     begin
  55.         y:=y+2;
  56.         if (y+32)>320 then y:=y-2; //не выходим за пределы экрана
  57.     end;
  58. end;
  59.  
  60. begin
  61.     init;
  62.     //игровой цикл
  63.     repeat
  64.         draw;
  65.         keypressed;
  66.         phyctrl;
  67.         repaint;
  68.         delay(1);
  69.     until false;
  70. end.

__________________
 Homo homini penis est.
- 11.08.2014 / 21:42
RblSb
  Пользователь

RblSb 
Сейчас: Offline
Kalter, Про векторы движения слышал? Скорость по х/у лучше выделять в отдельные переменные и уже ими управлять через клавиши
Пример:
x,y,iner,usk: integer
key: integer
jump: boolean

if key=GA_FIRE then jump:=true;
if jump then begin usk:=usk-10;
jump:=false;
end;
usk:=usk+1; //притяжение вниз
x:=x+iner;
y:=y+usk;
if usk<>0 then usk:=usk-abs(usk)/usk; //вычитаем единицу если больше нуля, добавляем единицу если меньше
//то же с iner

Изменено RblSb (11.08 / 21:53) (всего 2 раза)
- 12.08.2014 / 12:29
AHiLLA
  Пользователь

AHiLLA 
Сейчас: Offline
Kalter, RblSb, Спасибо :)

Только я не понял, что это значит
if key=ke_key4 then begin x:=x-2; exit; end;
- 12.08.2014 / 12:43
SeTSeR
  Пользователь

SeTSeR 
Сейчас: Offline
AHiLLA, выход из приложения
- 12.08.2014 / 12:44
AHiLLA
  Пользователь

AHiLLA 
Сейчас: Offline
SeTSeR, А зачем там выход, если просто перемещаешь персонажа? Я чето не вкуриваю:gg:
- 12.08.2014 / 14:48
HoldFast
  Пользователь

HoldFast 
Сейчас: Offline
выход же halt; вроде
__________________
 Да, детка, я - Король Ящериц!!!

Изменено HoldFast (12.08 / 14:49) (всего 1 раз)
Наверх  Всего сообщений: 1594
Фильтровать сообщения
Поиск по теме
Файлы топика (72)