11.08.2014 / 18:59 |  | 
AHiLLA    Пользователь  
   Сейчас: Offline 
 Имя: Али Откуда: Махачкала Регистрация: 19.01.2010
   | SeTSeR, Это не то. Если оставить только одну часть этого кода, то и без перерисовки работает.  А это один цикл, поэтому значение одновременно и прибавляется и убавляется, и стоит на месте, не меняясь
   | 
  11.08.2014 / 19:10 |  | 
SeTSeR    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
   | AHiLLA,  разбей на два цикла, цикл подъёма и цикл спуска.
   | 
  11.08.2014 / 19:18 |  | 
AHiLLA    Пользователь  
   Сейчас: Offline 
 Имя: Али Откуда: Махачкала Регистрация: 19.01.2010
   | SeTSeR, Все-таки так я не вкуриваю, я только начинаю МП юзать
   | 
  11.08.2014 / 19:33 |  | 
SeTSeR    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
   | procedure jump;  
begin  
for i:=1 to 10 do  
y:=y-2;  
repaint;  
end;  
for i2:=1 to 10 do  
y:=y+2;  
repaint;  
end;  
 Вотъ  Изменено SeTSeR (11.08 / 19:34) (всего 1 раз) | 
  11.08.2014 / 20:10 |  | 
Kalter    Пользователь  
   Сейчас: Offline 
 Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
   | SeTSeR, не думаю, что такое кто-то будет использовать в играх. Вот прыжок на несложном примере: program jump;  
   
var  
    x,y:integer; //координаты  
    jmp:boolean; //состояние прыжка  
    jmps:integer; //счётчик для прыжка  
   
//инициализация приложения перед запуском  
procedure init;  
begin  
    x:=(240+16)/2;  
    y:=320-32;  
    jmp:=false;  
    jmps:=0;  
end;  
   
//отрисовка нашего малого и фона  
procedure draw;  
begin  
    //рисуем фон  
    setcolor(255,255,255);  
    fillrect(0,0,240,320);  
    //рисуем нашего малого  
    setcolor(0,0,0);  
    fillrect(x,y,16,32);  
end;  
   
//здесь проверяем нажатые кнопки  
procedure keypressed;  
var  
    key:integer;  
begin  
    key:=getkeypressed;  
    if key=ke_key4 then begin x:=x-2; exit; end;  
    if key=ke_key6 then begin x:=x+2; exit; end;  
    key:=getkeyclicked;  
    if key=ke_key2 then  
    begin  
        jmp:=true; //активируем прыжок  
        jmps:=0; //онулируем счётчик прыжка  
    end;  
end;  
   
//контроль физики (в нашем случае прыжком)  
procedure phyctrl;  
begin  
    if jmp then //если надо прыгать  
    begin  
        y:=y-4;  
        jmps:=jmps+1;  
        if jmps>5 then jmp:=false;//если уже достаточно прыгнули, то перестаём прыгать  
    end  
    else //а если мы не прыгаем  
    begin  
        y:=y+2;  
        if (y+32)>320 then y:=y-2; //не выходим за пределы экрана  
    end;  
end;  
   
begin  
    init;  
    //игровой цикл  
    repeat  
        draw;  
        keypressed;  
        phyctrl;  
        repaint;  
        delay(1);  
    until false;  
end.  
  __________________
   Homo homini penis est.  | 
  11.08.2014 / 21:42 |  | 
RblSb    Пользователь  
   Сейчас: Offline 
 Регистрация: 25.07.2011
   | 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    Пользователь  
   Сейчас: Offline 
 Имя: Али Откуда: Махачкала Регистрация: 19.01.2010
   | Kalter, RblSb, Спасибо    Только я не понял, что это значит if key=ke_key4 then begin x:=x-2;  exit; end;  | 
  12.08.2014 / 12:43 |  | 
SeTSeR    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
   | AHiLLA, выход из приложения
   | 
  12.08.2014 / 12:44 |  | 
AHiLLA    Пользователь  
   Сейчас: Offline 
 Имя: Али Откуда: Махачкала Регистрация: 19.01.2010
   | SeTSeR, А зачем там выход, если просто перемещаешь персонажа? Я чето не вкуриваю   | 
  12.08.2014 / 14:48 |  | 
HoldFast    Пользователь  
   Сейчас: Offline 
 Имя: Андрей Откуда: Великие Луки Регистрация: 18.04.2011
   | выход же halt; вроде
  __________________
   Да, детка, я - Король Ящериц!!!  Изменено HoldFast (12.08 / 14:49) (всего 1 раз) |