Редактировать: Это делает мне больше смысла, теперь я сделал шаг в сторону от кода, спасибо за помощь.Gameloop для j2me "пошаговая игра"
Только что нашел переполнение через день через Coding Horror, и это выглядит потрясающе. Рисунок, что я бы спросил сообщество о проблеме, которую я сейчас пытаюсь решить.
Я разрабатываю игру с рогейнами, используя j2me для телефонов midp 2.0. Проект все еще находится на основных этапах развития, поскольку я выясняю, как он будет работать. Часть, к которой я сейчас привязана, связана с потоками.
В игре есть пользовательский класс HaxCanvas
, который расширяет GameCanvas и реализует runnable. Он запускает метод call repaint(), а затем спит в течение 50 мс, в результате получается частота кадров 20 FPS. Это позволяет мне писать остальную часть игры без необходимости перерисовывать всюду и делать анимации и эффекты более легкими в дальнейшем. (по крайней мере теоретически).
Поток игры контролируется классом GameManager, который пересекает всех NPC на карте, делая свои повороты, пока не станет чередой игрока. На этом этапе мне нужно ввести вход, чтобы игрок мог перемещаться и/или атаковать вещи. Я изначально звонил gameManager.runUntilHeroTurn()
в методе keyPressed
моего HaxCanvas
. Однако после прочтения системных потоков j2me я понял, что использование метода с возможностью запуска в течение обратного вызова - плохая идея. Однако я должен использовать keyPressed для ввода ввода, так как мне нужен доступ к числовым клавишам, а getKeyStates()
не поддерживает это.
Софтвер мои попытки поместить мой галлуп в свою собственную нить привели к катастрофе. Странное «uncached ArrayIndexOutOfBoundsException» без трассировки стека появляется после того, как игра запустилась на несколько оборотов.
Так я полагаю, мой вопрос заключается в следующем:
Для «пошаговых» игр в j2me, что это лучший способ реализовать цикл игры, позволяя для ввода handeling только тогда, когда это ход игрока?
Кстати, хороший вопрос. +1 – Fostah