Сегодня мы начнем писать серию статей по программированию игр для мобильного телефона. В серии будут освещены основные принципы написания игр и работа с классами для создания анимации.
В первой части мы приведем код, общий для типичного игрового процесса.
Ладно, давайте ближе к делу
Обычно игра состоит из циклического выполнения какого-то участка кода. Этот участок кода отслеживает значения переменных и обновляет игровое состояние. В зависимости от игрового состояния, код рисует на экране то, что должен увидеть игрок. Значения переменных могут изменяться после взаимодействия игрока с игрой, или если это предусмотрено смыслом игры.
Повторяющийся участок кода помещается в бесконечный цикл (loop или петля), но перед ним ставится проверка, должна ли игра быть запущена. Код в петле должен содержать задержку текущего потока на несколько миллисекунд, чтобы управлять частотой отслеживания игрового состояния, и как часто нужно обновлять изображение на экране.
На языке программирования наша теория выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | // Главный класс public MainClass { private GameCanvas canvas = new MyGameCanvas(); public MainClass() { // запускаем поток для бесконечного выполнения canvas.start(); } // остальной код } // класс для отрисовки экрана public MyGameCanvas extends GameCanvas implements Runnable { private boolean keeprunning; public MyGameCanvas() { // игровой процесс должен выполняться keeprunning = true; } public void start() { // выполняем инициализацию // и стартуем новый поток Thread runner = new Thread(this); runner.start(); } private void run() { while(keeprunning) { // Проверяем, достигла ли игра определенного состояния // Или просто какие-то условия verifyGameState(); // Получаем пользовательский ввод // Обновляем значения переменных, описывающих игровые объекты checkUserInput(); // Отрисовываем игровые объекты, отражающие процесс игры updateGameScreen(getGraphics()); // Управляем частотой, с которой нужно выполнять тело цикла, // и заодно даем выполняться другим потокам Thread.sleep(milliseconds); } } } |
В дальнейшем мы будем придерживаться такой же структуры кода.
http://javabegin.ru/
А какую среду разработки Вы используете для создания подобных игр?
NetBeans