forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Простейшая бродилка (http://forum.boolean.name/showthread.php?t=2164)

Тренсфер 22.12.2006 17:56

Простейшая бродилка
 
Здравствуйте! Пожалуйста помогите написать простейшую бродилку на MP (типа марио на денди). Я хорошо знаю паскаль, но не догоняю -как сделать перемещение камеры вслед за игроком и препятствия которые можно разбивать, а так же монстров и "выстрелы" игрока. Возможно я прошу мгого, но я просто не могу представить этого на загружаемой карте. Я читал все темы, но такого не нашёл.PS буду рад любому коду и исходнику. Заранее спасибо.

Chip 22.12.2006 18:03

Re: Простейшая бродилка
 
Создай проект и кинь туда этот код , я думаю дальше можешь сам продолжить

program Ball;
var
img : image;
x,y,key : integer;
begin
img:=loadimage('/icon.png'); //загрузить изображение
setcolor(255,255,0); //установить цвет фона (R,G,B)
x:=((GetWidth/2)-(GetImageWidth(img)/2)); // центруем позицую изображения по горизонтали
y:=((GetHeight/2)-(GetImageHeight(img)/2));// центруем позицую изображения по вертикали
repeat
key:=KeyToAction(GetKeyPressed); // читаем нажатие джойстика
if key = GA_UP then y := y - 1; // смотрим какая клавиша нажата
if key = GA_DOWN then y := y + 1; // изменяем оси х,у
if key = GA_LEFT then x := x - 1; // в зависимости от нажатой клавиши
if key = GA_RIGHT then x := x + 1;
FillRect(0, 0, GetWidth, GetHeight); // заливка экрана ранее выбраным цветом
DrawImage(img, x, y); // перерисовать изображение с новыми координатами
Repaint; // вывести на экран
until key = GA_FIRE; // если нажата кнопкп Fire то завершить
end.

Тренсфер 22.12.2006 18:20

Re: Простейшая бродилка
 
Спасибо, но я делал подобное. Меня интересуют препятстивия которые можно загрузить с карты, чтобы не пропивывать каждое в программе вручную, а так же то что я описал выше. Ещё раз спасибо, но я знаю как реализовать само передвежение и гравитацию.
Ещё вопрос. Я видел на форуме реализацию 3D моделей, но можно ли реализовать на MP 3D игру. Памню в джаве есть такая айпи и если подключить библеотеку с ней ...

Chip 22.12.2006 18:23

Re: Простейшая бродилка
 
Ну тогда используй GAME API , там можно все реализовать , кроме 3D.

IVenoMI 23.12.2006 14:48

Re: Простейшая бродилка
 
Попробовал расписать пример по всем приведенным тобой запросам - получается, что я сам бродилку написал...

Тренсфер 28.12.2006 15:15

Re: Простейшая бродилка
 
Я буду рад даже небольшому кусочку кода...

IVenoMI 28.12.2006 23:42

Re: Простейшая бродилка
 
Если я тебе дам весь свой код - не научишся сам...

Спрашивай конкретно, какие моменты интересуют?..

Тренсфер 29.12.2006 15:29

Re: Простейшая бродилка
 
Меня интересует только перемещение экрана вслед за игроком (как во всех бродилках) и сдерживающие препятствия (стены). Остальное (загрузка карты и монстров, интеллект) я сам легко заделаю.

IVenoMI 30.12.2006 02:12

Re: Простейшая бродилка
 
Препятствия легко реализуются с помощью Game библиотеки уважаемого piligrima... Используй функцию int collides_with(int idx, int sprite,int pixelLevel) из библиотеки lib_sprite...

Что касается камеры - попробуй седующим образом :

Создай массив объектов карты, присвой каждому свой спрайт... Каждый объект иееет координаты относительно левого ВЕРХНЕГО угла карты, точно такие же координаты имеет игрок...

Теперь в главном цикле прорисовывай только те спрайты, которы имеют координаты +/- определенная величина относительно игрока...

Piligrim 30.12.2006 11:24

Re: Простейшая бродилка
 
set_position(int x, int y) - Sets this Layer's position such that its upper-left corner is located at (x,y) in the painter's coordinate system.
Т.е. левый верхний угол отображаемой части игрового поля настраивается.

IVenoMI 30.12.2006 13:14

Re: Простейшая бродилка
 
Цитата:

Сообщение от pilgrim
Т.е. левый верхний угол отображаемой части игрового поля настраивается.

Да, пардон, ошибся...

Тренсфер 03.01.2007 17:53

Re: Простейшая бродилка
 
А как их использовать set_position ? Дайте справку пожалуйста.

Piligrim 04.01.2007 10:34

Re: Простейшая бродилка
 
все игровое поле имеет размер, допустим 100 на 100, но на экране показывается кусок 20 на 20. этой функцией указывается, где будет расположена верхняя левая точка экрана на игровом поле, т.е. какая его часть будет видна на экране.

Тренсфер 04.01.2007 12:58

Re: Простейшая бродилка
 
Вложений: 2
а int collides_with ? И почему при компиляции программа так часто вылетает в виндовс если используешь какой нибудь uses ?
мне удалось реализовать препятствия без дополнительных библиотек, но этот способ подходит только для квадратных препятствий и очень тормозит...

Piligrim 05.01.2007 09:40

Re: Простейшая бродилка
 
int collides_with проверяет соприкосновение спрайта с окружением. т.е. проверка столкновений


Часовой пояс GMT +4, время: 06:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot