|
Основной форум Сюда все проблемы связанные с программированием. |
26.06.2012, 16:30
|
#1
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Проблемы с ...
Пишу игру, и на днях появилась проблемка. Когда приходит время начинать процедуру, вызванную зараннее forward-ом, игра виснет, можно выйти из ситуации если часто нажимать на кр кнопку, а потом отменять выход (nokia). В эмуляторе всё работает гладко, без ошибок. В этой же игре используется ещё одна процедура с forward-ом, но она работает прекрасно. Ни кто не сталкивался с этим?
PS: может проблема вообще не в нём. Используются библеотеки: arcade,keys,turn,font32,menu32,parse,memory.
Последний раз редактировалось Yadro, 29.06.2012 в 21:15.
|
(Offline)
|
|
26.06.2012, 21:42
|
#2
|
Разработчик
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений (для 182 пользователей)
|
Ответ: Проблемы с 'forward'
Если так важно forward описание - попробуй вынести процедуру в модуль.
Но интуиция мне подсказывает что проблема не в этом.
|
(Offline)
|
|
26.06.2012, 22:10
|
#3
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
Сообщение от AVL
Если так важно forward описание - попробуй вынести процедуру в модуль.
Но интуиция мне подсказывает что проблема не в этом.
|
А можно поподробнее про модули, или где про них можно почитать?
Проблема может и не в этом, но в эмуле всё нормално работает, а на телефоне в зависимости от нажимания "часто нажимать на кр кнопку, а потом отменять выход" зависит будет работать или нет или с пониженным fps.
|
(Offline)
|
|
26.06.2012, 22:19
|
#4
|
Разработчик
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений (для 182 пользователей)
|
Ответ: Проблемы с 'forward'
http://ru.wikipedia.org/wiki/Модуль_(программирование)
Почитай мануалы мидлетпаскаля, изучи примеры... И изучи, в конце концов, язык Pascal.
|
(Offline)
|
|
29.06.2012, 21:13
|
#5
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
Попробовал код без forward та же проблема. Дык как можно это устранить? Такое чувство, что ему не хватает repaint'а.
|
(Offline)
|
|
29.06.2012, 22:27
|
#6
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Проблемы с 'forward'
Распространенные причины зависона:
а) загрузка несуществующей картинки (то есть указал неверный путь). Соблюдай регистр, блеать!
бэ) выход за пределы массива.
Например - описано matrix:array [0..1] of integer; а в коде - matrix[2]:=100500;
Это - явный путь в ступор приложения.
вэ) Неверные математические функции. Делить на ноль МП не любит, так же, как и вычислять арктангес из 2, вычислить корень из отрицательно числа и прочее.
гэ) "Неквадратные" массивы типов Image и String. То есть сделать img:array [0..5,0..15] не получиться. Код компилиться, а работать - фигушки. Такой вот неприятный баг.
Ну вот вроде все. А вообще юзай дебаг, чтобы локализовать место ошибки, и устранить её.
Удачи!
P.S. Данные рекомендации написаны для версии 2.02.
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.06.2012, 22:33
|
#7
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
в эмуле всё нормално работает
|
, это значит что все перечисленные ошибки вроде как исключены.
а как пользоваться debag'om?
|
(Offline)
|
|
30.06.2012, 15:12
|
#8
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Проблемы с 'forward'
Проверь регистр расширений файлов. Эмулятор чисто пофигу на регистр, .png и .PNG для него едины.
А вот телефонам - в точности наоборот.
Дебаг? Есть спец функция, но она работает только в эмуляторах. По этому я предпочитаю свою, велосипедную процедурку.
procedure z(_z:string);
begin
setcolor (random(128),random(128),random(128));
fillrect (0,0,240,21);
setcolor (random(128)+128,random(128)+128,random(128)+128);
drawtext(_z,0,0);
repaint;
delay (512);
end;
Суть: пишет вверху заданный текст.
Пример использования
bla_bla_bla_bla_bla;
z ('прорисовка персонажа');
bla_bla_bla_bla_bla;
bla_bla_bla_bla_bla;
bla_bla_bla_bla_bla;
z ('вычисление скорости');
bla_bla_bla_bla_bla;
bla_bla_bla_bla_bla;
bla_bla_bla_bla_bla;
bla_bla_bla_bla_bla;
bla_bla_bla_bla_bla;
z ('проверка на столкновение');
если дебаг не появляется, значит - код после него не выполняется.
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
30.06.2012, 15:22
|
#9
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
Проверил регистр, всё нормально. Игра зависает после использования процедур NewMap, MoveMap библиотеки arcade. Повторюсь, что она запускается, если её приостановливать и запускать несколько раз. Может это проблема в нокиа.
ЗЫ Может мне скинуть ту часть кода где виснет?
Последний раз редактировалось Yadro, 30.06.2012 в 15:24.
Причина: добавил пару букфок
|
(Offline)
|
|
30.06.2012, 15:37
|
#10
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Проблемы с 'forward'
"ЗЫ Может мне скинуть ту часть кода где виснет?"
Годная идея.
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
30.06.2012, 15:48
|
#11
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
procedure load_map;
begin im:=LoadImage('/spriteshero2.png'); im2:=LoadImage('/spritessave.png'); SetColor(255, 255, 255);drawtext('Создание карты',2,2);repaint; NewMap(100,100, LoadImage('/sprites.png'),32,32); If select=1 then LoadCSV('/map3test.CSV'); If select=2 then LoadCSV('/map4test.CSV'); SetColor(255, 255, 255);drawtext('Заполнение',2,2);repaint; MoveMap(xm,ym); end;
procedure Loading;
begin SetColor(0, 0, 0); FillRect(0, 0, GetWidth, GetHeight); setcolor(255,255,255); drawtext('Load...',GetWidth/2-getStringWidth('Loading...')/2,GetHeight/2-getStringHeight('Load...')/2); repaint; end;
Procedure level_select; var key,i:integer;
begin SetColor(0, 0, 0); FillRect(0, 0, GetWidth, GetHeight); // ------------------------ Установка шрифтов -------------------------------- font32.init(1); // Всего 2 шрифта Font(0); LoadFont('Verdana_11'); // Основной шрифт // ------------------------ Установка меню -------------------------------- menu32.init; // инициализация меню LoadCursor(LoadImage('/selector.png')); // Создаем курсор SetMenuWindow(5, GetHeight/2, GetWidth-5, GetHeight); // Задаем окно, в котором будет отображаться меню MenuFonts(0, 0); // Основной и курсорный шрифты addItem2(None, 'Назад', 'back'); for i:=1 to 10 do addItem2(None, 'Level '+i, 'Level'); // Добавляем элементы меню DrawMenu; Repaint; repeat key:=KeyToAction(GetKeyClicked); Delay(50); if key=GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(100); end; // Вниз if key=GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(100); end; // Вверх if (key=GA_FIRE) then // Нажали огонь джойстика или двойной клик по сенсорному экрану begin for i:=1 to 10 do begin If Selected = 0 then begin menu32.init;font32.Init(0); Im:=nil; Im2:=nil; memclean.clean;//чистим память menu; end; if Selected = i then select:=i; end; end Delay(100);Scroll; until (key=GA_FIRE); end;
Procedure game;
begin repeat //все процедуры объявлены ранее getkeys; map; sprite; fps; preplay; if (GetKeyClicked=skl) or (GetKeyClicked=skr) then pause; while isMidletPaused do begin repeat SetColor(0, 0, 0); FillRect(0, 0, GetWidth, GetHeight); setcolor(255,255,255); drawtext('Приложение приостоновлено',GetWidth/2-getStringWidth('Приложение приостоновлено')/2,GetHeight/2-getStringHeight('0')); repaint; delay(100); until (KeyToAction(GetKeyClicked)=GA_FIRE); end; if n>28 then delay(1); repaint; key := GetKeyClicked; until (key = skl)or(key = skr); pause; end;
begin level_select; Loading; load_map; //ступор********************************************* game; end.
Сократил как мог.
Последний раз редактировалось Yadro, 30.06.2012 в 15:49.
Причина: Хотя думаю чтобы разобраться нужен весь код(
|
(Offline)
|
|
30.06.2012, 15:49
|
#12
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Проблемы с 'forward'
/map3test.CSV
Ты точно уверен, что соблюдил регистр?
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
30.06.2012, 15:51
|
#13
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
Да. Может скинуть саму игру на других аппаратах потестить?
Ещё вопрос появился, а когда forward используется, оператика тем самым нагружается?
Последний раз редактировалось Yadro, 30.06.2012 в 15:57.
Причина: 123
|
(Offline)
|
|
30.06.2012, 16:23
|
#14
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Проблемы с 'forward'
"Ещё вопрос появился, а когда forward используется, оператика тем самым нагружается?"
Вряд ли. Это просто указатель на то, что существует такая процедура/функция (где-то там, внизу).
Ну а ты все таки сделай расширения файлов в нижнем регистре. Во избежание...
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
09.07.2012, 20:09
|
#15
|
Нуждающийся
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений (для 10 пользователей)
|
Ответ: Проблемы с 'forward'
Нашёл 'причинное' место повисание, это NewMap(100,100, LoadImage('/sprites.png'),32,32); из arcade, у кого нидь были с ним проблемы?, недоработка либы? Знаю что если использовать разные значения клеток, те отрисовка не квадратом NewMap(100,50,..., то отображение не правильное. Хотя это похоже в другую тему.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:13.
|