Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program physic;
- uses WPFObjects;
- const
- height = 500;
- var
- //Гарантируется что истинным может быть лишь одна из двух переменных
- LeftButton: boolean = false;
- RightButton: boolean = false;
- UpButton: boolean = false;
- DownButton: boolean = false;
- elem: RectangleWPF; //Объект
- y_boost := 0.5;
- procedure move();
- begin
- //Движение по горизонтали с помощью клавиш лево/право
- if LeftButton then
- elem.dx := -5;
- if RightButton then
- elem.dx := 5;
- if not LeftButton and not RightButton then
- elem.dx := 0;
- //Прыжок с помощью клавиши вверх
- if UpButton then
- begin
- elem.dy := -15;
- UpButton := false;
- end;
- //Замедляющее ускорение направленное вниз
- if (elem.Bottom < height) and (elem.Dy < 8) then
- //Если тело в "воздухе" то прибавляем к его скорости ускорение
- //При этом максимальная вертикальная скорость не может быть больше 8
- //Так игра становится более плавной, но впринципе можно убрать
- elem.Dy += y_boost;
- //Предохранитель не позволяющий объекту оказаться внутри другого объекта
- //Должен идти в конце, чтобы скорость тела не изменилась
- if (elem.Bottom + elem.Dy) >= height then
- begin
- elem.Bottom := height;
- elem.Dy := 0;
- end;
- //Изменяем координаты объекта согласно его скорости
- elem.Move();
- end;
- procedure ButtonClickDown(k: key);
- begin
- case k.ToString of
- 'Left':
- begin
- LeftButton := true;
- RightButton := false;
- end;
- 'Right':
- begin
- LeftButton := false;
- RightButton := true;
- end;
- 'Up':
- begin
- UpButton := true;
- DownButton := false;
- end;
- 'Down':
- begin
- UpButton := false;
- DownButton := true;
- end;
- end;
- end;
- procedure ButtonClickUp(k: key);
- begin
- case k.ToString of
- 'Left': LeftButton := false;
- 'Right': RightButton := false;
- 'Up': UpButton := false;
- 'Down': DownButton := false;
- end;
- end;
- begin
- OnKeyDown := ButtonClickDown;
- OnKeyUp := ButtonClickUp;
- elem := new RectangleWPF(pnt(10, 10), 50, 50, rgb(0, 128, 0)); //Создаем прямоугольник
- elem.Direction := (0, 0); //Инициализуерм его скорость
- BeginFrameBasedAnimation(move, 80);
- end.
Advertisement
Add Comment
Please, Sign In to add comment