forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_game (Game API Support) (http://forum.boolean.name/showthread.php?t=3522)

Cliffe Snake 03.10.2008 13:03

Ответ: Lib_game (Game API Support)
 
Скажите в чём проблема? У меня мидлет виснет на строчке game.init;
Соответствующие либы лежат в папке Libs, MP версии 2.02
Вот код программы:
program LandScroll;
uses game, sprite, tile;
var hero:integer;
begin
//.......
game.init; {если её пропустить, то доходит до sprite.append(hero);}
sprite.init(2);
setcolor(0,255,0);
fillrect(0,0,240,320);
repaint;
hero:= sprite.create_frames('/hero/walk/walk.png', 29, 39); {png-файл размером 116х312}
setcolor(255,0,0);
fillrect(0,0,240,320);
repaint;
sprite.append(hero); {Потом виснет на этой строчке}
setcolor(0,0,255);
fillrect(0,0,240,320);
repaint;
//....
end.

Piligrim 03.10.2008 20:10

Ответ: Lib_game (Game API Support)
 
я думаю он не виснет, а просто не находит файл /hero/walk/walk.png
МР не умеет класть ресурсы в папки, он их все пихает в корень.

Cliffe Snake 03.10.2008 21:26

Ответ: Lib_game (Game API Support)
 
Я вручную прописываю пути к файлам, и они после компиляции лежат по папкам внутри мидлета. Может быть библа ненаходит файл? Попробую положить в файлик в корень.

Piligrim 04.10.2008 09:38

Ответ: Lib_game (Game API Support)
 
пропущено game.show;
и нужно использовать game.refresh; вместо repaint;
при вызове sprite.create_frames в качестве параметров указываются ширина и высота фрейма, т.е. кадра. Ширина и высота картинки, соответсвенно, должна быть кратна им, иначе система не может корректно создать спрайт и виснет на этом шаге.
116 на 29 вроде не делится.

Cliffe Snake 10.10.2008 09:25

Ответ: Lib_game (Game API Support)
 
Спасибо, я понял в чём проблема. Маленькие файлы открываются без проблем, а мой размером в 47,7Kb ни в какую не хочет. Что делать?
....
Уменьшил размер файла до 33,1Kb и всё заработало, правда качество картинки пострадало :(
Если вы хотите чтобы ресурс лежал внутри мидлета в папке, то перед компиляцией откройте файл *.mpproj блокнотом и впишите туда соответственный путь к файлу.

Cliffe Snake 10.10.2008 11:09

Ответ: Lib_game (Game API Support)
 
Блин, а почему нельзя использовать стандартные средства вывода графики совместно с библиотеками Game_api? Или может ли переменная, используемая в библиотеке, повлиять на переменную в моей программе?

Romanzes 10.10.2008 18:22

Ответ: Lib_game (Game API Support)
 
Кстати, не знаю почему, но вроде бы у меня стандартные графические средства МП работают быстрее, чем Lib_game.

Piligrim 10.10.2008 20:59

Ответ: Lib_game (Game API Support)
 
Cliffe Snake, а кто сказал, что их нельзя использовать? можно
Romanzes, все зависит от реализации ява машины. Может где-то и быстрее. Ведь Lib_game работает через индексы, хотя я думаю это критично только для гонок, например.

Cliffe Snake 21.10.2008 23:16

Ответ: Lib_game (Game API Support)
 
Всё разобрался во всём, спасибо за такую полезную либу =)

Cliffe Snake 25.10.2008 02:31

Ответ: Lib_game (Game API Support)
 
Pilgrim, у меня к тебе ещё один вопрос.
Почему после game.init; функции getkeyclicked и getkeypressed перестают работать(т.е. всегда возвращают "0"), а набора в 9 клавиш (Right,Left,Up,Down,Fire,7,9,*,#) катастрофически не хватает :'(
Как можно деинициализировать библу?(Мол попользовался библой и вырубил её, а потом снова включил и т.д.)
Или как работать в либе game с другими клавишами?

Piligrim 25.10.2008 20:28

Ответ: Lib_game (Game API Support)
 
Обновил библиотеку. getKeyPressed теперь работает.
Отключается она простым переходом, например showCanvas.
Включается потом, через game.show
PS: init теперь с параметром!!!

mik703 02.11.2008 23:42

Ответ: Lib_game (Game API Support)
 
Помогите, что не так. Написанный мидлет просто показывает белый экран.
Program New1321;
uses sprite, tile, game, fmove;
type msprite=record
id:integer;
end;
var x,y,i,z:integer;
man:msprite;
begin
sprite.init(1);
game.init(0);
game.set_view_window(0,0,128,160);
x:=4;
y:=74;
man.id:=sprite.create_frames('/vorman.png',8,12);
sprite.append(man.id);
sprite.set_ref_pixel(man.id,4,6);
sprite.set_position(man.id,x,y);
i:=2;
z:=-1;
game.show;
repeat
z:=z*(-1);
sprite.move(man.id,x,y);
sprite.paint(man.id);
if z=1 then sprite.next_frame(man.id);
if z=-1 then sprite.prev_frame(man.id);
if x>124 then
begin
sprite.set_transform(man.id,2);
i:=i*(-1);
end;
if x<4 then
begin
sprite.set_transform(man.id,0);
i:=i*(-1);
end;
x:=x+i;
game.refresh;
delay(500);
until getkeyclicked=ke_key0;
end.

Cliffe Snake 03.11.2008 04:09

Ответ: Lib_game (Game API Support)
 
Удали строчку Game.show; и вставь её после game.init; больше ошибок не вижу

mik703 03.11.2008 08:49

Ответ: Lib_game (Game API Support)
 
Всё равно белый экран!

Cliffe Snake 03.11.2008 09:22

Ответ: Lib_game (Game API Support)
 
В коде всё правильно. Там чувак сам по себе должен то вправо, то влево бегать. Значит у тебя ошибка с расположением файлов.
Библиотеку распаковал в Libs? Проверь все файлы. Самый простой способ найти ошибку, это запустить проект у себя на компе, так что давай выкладывай сюды исходник.


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

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