Как играть в java игры на компьютере

Обновлено: 07.07.2024

Эта статья рассчитана на новичков в программировании. Её цель — объяснить азы языка Java (классы, методы, компиляция, байт-код, JVM, переменные, условия, циклы, импорт). Этот материал поможет:

  • научиться писать код, компилировать и запускать байт-код;
  • познакомиться с переменными;
  • узнать об условных операторах и циклах;
  • освоить использование классов из стандартных пакетов;
  • написать простую консольную игру «Угадай число».

Java Development Kit (JDK)

Счастливым обладателям Windows потребуется также настройка системных переменных. Как их найти: Панель управления → Система → Дополнительные параметры системы → Вкладка «Дополнительно» → кнопка «Переменные среды», второе окошко сверху. В нем надо создать переменную JAVA_HOME и изменить (дополнить) Path (для этого используются кнопки «Создать» и «Изменить». Значение для переменной JAVA_HOME содержит путь к папке JDK. Переменную Path дополняем значением %JAVA_HOME%\bin. Обратите внимание, что список путей разделяется точкой с запятой (;). Инструкция есть также на сайте Oracle.

JDK содержит много утилит, но нам потребуется только компилятор (javac) и виртуальная машина Java — JVM (java).

Проверить правильность установки и настройки можно в командной строке (на Windows: Win + R → cmd) или в терминале (Linux, Mac), набрав следующие команды:

В качестве альтернативы можно использовать онлайн-JDK вместе с редактором, например на сайте Repl.it.

Написание кода

Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале). Но удобнее будет работать в редакторе с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск.

Для Windows хорошим выбором будет Notepad++ с плагином NppExec. Для Linux и Мас существуют другие текстовые редакторы, например Atom или Geany. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».

Hello, world!

При изучении нового языка писать программу, выводящую «Hello, world!», — это традиция. Она возникла в 1978 году, с выходом в свет книги «Язык программирования С» Брайана Кернигана и Денниса Ричи.

Код начинается с ключевого слова class. Java-программы состоят из классов — это «кирпичики» приложения. В реальных приложениях их могут быть десятки, сотни и тысячи. Затем пишется имя класса — HelloWorld. Имена классов принято писать в стиле CamelCase (все слова слитно, каждое с заглавной буквы). Классам, как и другим сущностям — методам, полям и переменным — рекомендуется давать мнемонические, «говорящие» имена.

После имени в фигурных скобках записывается тело класса. Оно может содержать поля, методы и другие классы. Поля хранят данные. Они подобны переменным, однако в Java это несколько иная сущность. Методы содержат набор команд или код. Имена методов (как и полей, переменных) принято писать в стиле camelCase, со строчной буквы.

Наш метод main() содержит лишь одну строку, которая выводит в консоль текст "Hello, world!".

Перед компиляцией сохраняем написанный код в файл. Имя файла должно соответствовать имени класса с точностью до регистра символов (Java — регистрозависимый язык). Затем открываем командную строку (или терминал) и вызываем сначала компилятор (javac), а потом виртуальную машину JVM (java).

После компиляции возникнет бинарный файл HelloWorld.class, содержащий байт-код. Имя этого файла (без расширения) передаётся как параметр при вызове виртуальной машины. В результате видим строку «Hello, world!» — это результат выполнения программы.

Переменные

Переменные хранят данные (числа, строки, логические значения и другие). Они похожи на коробочки: надписи на них — это имя и тип переменной, а внутри находится значение. При этом возможны две операции:

  • запись значения в переменную (или присвоение значения);
  • чтение значения из переменной.

В Java перед использованием переменную нужно обязательно объявить, указав тип и имя, поскольку Java — язык со строгой и статической типизацией. Попытка использовать переменную без объявления приведёт к ошибке компиляции. По типу переменные могут быть простыми (числа, символы, логические значения) или ссылочными (массивы, строки, любые другие объекты). В Java есть восемь простых типов (byte, int, short, long, float, double, boolean, char) и бесконечное количество ссылочных.

В примере ниже мы видим объявление двух переменных целого типа (int). Причём переменная second инициируется при объявлении. Затем переменной first присваивается результат выражения, в котором присутствует переменная second. В результате выполнения программы в консоль будут выведены значения обеих переменных: 35 и 10.

Имя переменной может содержать буквы и цифры, знак подчёркивания и $. Имя не должно начинаться с цифры. В профессиональной разработке в именах переменных используют только буквы. Имя должно явно указывать на назначение переменной. Например: countString — счётчик строк, errorSign — признак ошибки. Рекомендуется избегать однобуквенных имён — за исключением временных переменных (существующих в рамках цикла или небольшого кодового блока).

Проверка условий

Любой язык программирования высокого уровня позволяет изменять порядок выполнения программы в зависимости от заданного условия. В Java для этого используется конструкция if. После этого ключевого слова в скобках записывается логическое выражение, затем в фигурных скобках — группа команд. Если результат логического выражения — true (истина), то эта группа команд выполняется, если false (ложь) — нет.

Результат этого примера — строка “i = 10” в консоли, так как результат логического выражения (проверка на равенство) будет true.

В качестве знаков сравнения допустимы: <, <=, >, >=, ==, !=. Добавив ключевое слово else, получаем полную форму оператора сравнения.

Циклы

Циклы предназначены для повторения группы команд. Java позволяет использовать два вида циклов:

  • с определённым количеством итераций: for;
  • без определенного количества итераций: while и do-while.

Запустив этот пример, мы увидим в консоли колонку чисел от 0 до 4. Это результат работы классического цикла for со счётчиком. В круглых скобках три параметра цикла, разделённые точкой с запятой: объявление и инициализация счётчика, проверка условия продолжения цикла, действие после каждой итерации. В фигурных скобках — тело цикла. В нашем случае это команда, выводящая значение счётчика i в консоль.

Когда будем писать игру, используем циклы while и do-while — там и увидим их работу на практике. Пока достаточно сказать, что их синтаксис проще for, а тело цикла повторяется до тех пор, пока логическое выражение в круглых скобках после while возвращает true.

Пример ниже иллюстрирует вторую форму цикла for — без счётчика. Такой вариант удобен при переборе элементов массива или списка.

Импорт и использование классов

Один из важных принципов программирования — DRY: Don’t Repeat Youself (не повторяйся). Разработчик должен уметь использовать то, уже создано, отлажено и работает.

В игре нам потребуется случайное число от 0 до 9. Писать генератор случайных чисел незачем, так как в пакете java.util есть готовый класс Random. Чтобы использовать класс из пакета, его нужно импортировать. Строки с директивами импорта располагаются в самом начале файла класса.

Создадим объект на основании класса, чтобы можно было вызвать нужный метод. Слева от знака присваивания (=) объявляем ссылочную переменную (объект) random типа Random. Справа создаём объект с помощью директивы new.

Вызываем метод через точку после имени объекта: random.nextInt(10). Цифра 10 ограничивает диапазон генерируемых чисел (от 0 до 9). В результате получим строку из 30 случайных чисел. Запустите программу несколько раз и обратите внимание, что последовательность чисел не повторяется.

Игра «Угадай число»

Мы узнали достаточно, чтобы написать игру «Угадай число». В ней компьютер «загадывает» целое число от 0 до 9, а человек должен угадать его — есть три попытки.

Создадим класс GuessTheNumber с методом main(), импортируем нужные нам классы и добавим соответствующие объекты. Класс Scanner обеспечит чтение чисел с консоли (System.in — консоль).

Объявим и инициируем три переменные: счётчик попыток count, для чтения числа с консоли — guess, для хранения загаданного числа — number.

Опишем основной игровой цикл, используя while. В цикле запрашиваем число с консоли, сравниваем с загаданным. В случае несовпадения выводим подсказку и увеличиваем счётчик попыток на 1.

Тело цикла while повторяется, пока логическое значение в скобках возвращает true. Таким образом наш цикл будет повторяться, пока значение счётчика попыток меньше 3 и число не отгадано. Обратите внимание на конструкцию, которая позволяет выбрать одно из двух значений согласно условию в скобках. Это тернарный оператор. Если условие в скобках true, то возвращается значение слева от двоеточия, если false — справа.

Остаётся добавить строку с выводом результата игры (победа или проигрыш) после цикла — тут снова используется тернарный оператор. Текст работающей программы выглядит так:

Сохраняем программу в файл GuessTheNumber.java, компилируем (javac), вызываем JVM (java) — и пробуем выиграть у компьютера.

Добавим заключительный штрих: используя цикл do-while, позволим пользователю повторять сеанс игры без перезапуска программы. В приведённом ниже коде комментарий нужно заменить на соответствующий фрагмент из предыдущей программы. Попробуйте сделать это самостоятельно.

Обратите внимание, что тело цикла do-while повторяется на тех же условиях, что и тело цикла while: логическое выражение в скобках должно быть true.

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!

Другие статьи из серии «Быстрый старт с Java»:

Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:

Казалось бы, чего еще не хватает современным пользователям Android и Windows, ведь практически все можно найти в официальных магазинах Play Market и Microsoft Store. Но не тут-то было, многих до сих пор интересуют Java-игры со старых смартфонов.

Действительно, есть продукты, которые не стареют и по-прежнему сохраняют популярность. И, если одни по сей день играют в первые части Doom, Serious Sam, Quake, Duke Nukem, Warcraft, Wolfenstein, Worms и «Жизнь» Конвея, то почему бы и другим не поностальгировать по былым временам, когда в ходу были аппараты Nokia 6600, 6630, 7610, N73 и N95.

К великому сожалению, ни ОС Windows, ни Android не позволяет так сходу взять и запустить файл с расширением JAR. Чтобы это сделать, необходимо использовать дополнительное ПО и, если с операционной системой от Майкрософт все немного проще, то с Андроидом придется повозиться. Но начнем с простого.

Запуск Java-игр на ПК

Чтобы запускать Java-игры на компьютере с ОС Windows, необходимо использовать эмулятор, по аналогии с тем, как мы запускаем на нем продукты с других платформ вроде Dendy, Sega Megadrive и Sony Playstation. Однако сначала нам понадобится установить компоненты языка Java – Java Runtime Environment или JRE, благо это несложно и осуществляется всего в пару кликов.

Теперь о самом эмуляторе. В последнее время наибольшее число положительных отзывов поступало о программе KEmulator. Данный продукт относительно прост в освоении, работает в 10-й Windows, не требует установки и распространяется бесплатно. Внешний вид его представлен ниже.

1 - Некогда популярная игра Tower Bloxx в программе KEmulator

Другая похожая утилита называется Sjboy Emulator. Принцип ее работы напоминает KEmulator, однако функциональность несколько беднее. Что касается поддержки различных игр, то здесь невозможно заранее предугадать, какой эмулятор сработает лучше. Собственно, вот таким нехитрым способом можно запустить множество Java-игр, да и прочих программ тоже. Ну а что же с Android?

Запуск Java-игр на смартфоне

Для того, чтобы поиграть в Java-игры на Андроид, одного эмулятора недостаточно. Перво-наперво нужно получить Root-привилегии на устройстве. Помочь нам в этом могут такие утилиты, как, например, Baidu Root, KingRoot, 360 Root или Lucky Patcher. Кстати, руководство по использованию последнего доступно абсолютно бесплатно здесь.

Важно: рутирование смартфона может привести к потере гарантии на устройство, а то и вовсе вывести его из строя. Поэтому мы настоятельно рекомендуем вам использовать эмуляцию ОС Android на ПК, например, с помощью виртуальных машин Memu и Bluestacks.

Далее необходимо установить на смартфон Java-машину. В большинстве случаев это, J2ME Loader, однако вы вольны выбрать любую другую, доступную в Play Market. После этого вы можете скачивать JAR-файлы из Интернета, а J2ME автоматически их подхватит и распознает. Если этого не произошло, запустите Loader вручную, нажмите кнопку «+» внизу справа и выберите загруженный JAR файл в памяти вашего устройства. Выглядит это примерно так, как показано на рисунке ниже.

2 - Добавление файлов в J2ME

А вот так выглядит запущенная в эмуляторе игра.

3 - Игра Air Combat на Android

Вот, собственно, и весь процесс запуска Java-игр на смартфонах и ПК. Напишите в комментариях, все ли у вас получилось. Если нет, будем разбираться. Ну а пока прощаемся с вами. До новых встреч на нашем портале.

Как запустить JAR файл на компьютере?

Java-приложения и игры для мобильных телефонов пока ещё находят своих пользователей, хотя постепенно вытесняются продуктами, разработанными под популярные ОС Android или iOS. Java-мидлеты имеют расширение JAR или JAD и рассчитаны в первую очередь на запуск с телефона. Однако нередко пользователям необходимо запустить jar-файл сначала на компьютере. И для этого существует несколько утилит, выполняющих функцию J2ME эмуляции (Java 2 Mobile Edition, специальная модификация языка Java (Ява), адаптированная под мобильники) и запуск java-мидлетов.

Сразу отметим, что некоторые эмуляторы требуют наличия установленной в системе виртуальной Java-машины. Чтобы установить её, скачиваем версию Java SE JRE под Windows.

В простейшем случае достаточно кликнуть по JAR-файлу, чтобы увидеть результат выполнения Java-скрипта. Например, так мы увидим небольшое приложение Сапёр (Авт. Кенжебеков Марат), выполненное в виде jar-файла:

Пример запущенного java-скрипта

У каждого серьёзного производителя мобильных телефонов существуют собственные комплекты ПО для разработчиков (SDK), в которые, как правило, входят и эмуляторы. Но сегодня мы рассмотрим универсальные эмуляторы, позволяющие запустить любые jar-файлы на компьютере.

Эмулятор Java-приложений MidpX

Эмулятор MidpX позволяет быстро запустить JAD- или JAR-файл на компьютере буквально одним кликом. Это может быть как java-игра, так и любое приложение для мобильного телефона. Пользующиеся браузером Internet Explorer могут воспользоваться контекстным меню и выбрать пункт Link MidpX.

Запуск JAR файла через контекстное Internet Explorer

Остальным же пользователям, предпочитающим другие браузеры, лучше сначала скачать jar-файл, а затем уже в контекстом меню Проводника выбрать пункт Открыть с помощью – Midp2Exe Compiler.

Запуск JAR файла через контекстное меню Проводника

После получения файла MidpX генерирует исполняемый EXE-файл и автоматически запускает его. Результат выполнения exe-файла, первоначально бывшего JAR-файлом, мы видим в окошке с изображением сотового телефона. Для управления приложением или игрой здесь предусмотрены стандартные клавиши, имеющиеся в любом мобильнике. Хотя программа позволяет использовать управляющие клавиши обычной клавиатуры компьютера или цифровые клавиши на боковой клавиатуре, чтобы управлять приложением. Предусмотрены и кнопки для остановки, перезагрузки или запуска приложения. В строке статуса можно узнать частоту кадров. Настройки MidpX помогут изменить яркость и контрастность, изменить прозрачность и громкость музыки.

Запуск игры в MidpX

Сгенерированный EXE-файл, кстати, сохраняется программой в той же папке, где находится исходный JAR-файл. Отметим также возможность установки отдельной утилиты для конвертирования jar-файлов в exe под названием MIDP2EXE, однако работать с ней не очень удобно, так как все операции выполняются через командную строку. Имеется и графическая оболочка GUIMidp2Exe.exe. Она позволяет преобразовывать jar-файлы и целые каталоги, показывает полную информацию о выбранном jar-файле и иконку, умеет генерировать JAD-файл, запускает для проверки сгенерированный exe-файл, извлекает все ресурсы файла, включая картинки, текст и звуки во временную папку Test в папке с эмулятором (после закрытия все файлы удаляются), сохраняет скриншоты мобильных игр в JPG.

Эмулятор Java-игр SJBoy

Мы позиционируем SJBoy именно как эмулятор игр. Обусловлено это высокой скоростью эмуляции и не менее хорошим качеством, позволяющим без проблем запускать java-игры. SJBoy предоставляет на наш выбор одну из четырёх моделей телефона: две Nokia, SonyEricsson и Motorola. В зависимости от выбранной модели меняется скин передней панельки мобильника. После установки не потребуется никаких лишних махинаций с jar-файлами. Достаточно выбрать файл в списке и двойным кликом запустить его. SJBoy подхватит файл и тут же начнёт эмуляцию java-приложения. В большинстве случаев наиболее удобным будет использование SJBoy-эмулятора.

Запуск игры в SJBoy

Управление в меню выполняется как кликом по нарисованным клавишам телефона, так и управляющими и цифровыми клавишами компьютерной клавиатуры. Среди полезных функций можно отметить возможность создания скриншота (меню Tools – Snapshot). Картинка при этом сохраняется в файл формата BMP.

Как извлечь данные из jar-файла

В некоторых случаях пользователям необходимо не запускать jar-файл, а именно открыть его, чтобы увидеть содержимое. Многие знают, что jar-файл, хоть и имеет такое расширение, представляет собой фактически zip-архив. Соответственно, просмотреть содержимое jar-файла можно в любом архиваторе, поддерживающем формат ZIP. Просто открываем jar-файл, выбираем необходимые файлы и извлекаем их из архива. При наличии файлового менеджера Total Commander можно переименовать расширение jar-файла в zip, после чего войти как в архив и увидеть его содержимое, а позже и извлечь данные.


Привет хаброжители. Данный пост является «рерайтом» моего поста для песочницы. На этот раз я постараюсь охватить больше тем, чем тогда.

Почему Java?

Ничего объективного я тут не скажу, а скажу лишь то, что я люблю этот язык, и мне нравиться писать на нем. Да, на Java нет игр AAA-класса, но Java предоставляет огромные возможности, больше кол-во встроенных средств и быстроту написания кода.

Начнем с выбора IDE. Я являюсь фанатом Eclipse и посоветую вам его.
Если же почему-то вам он не понравился, вы можете использовать NetBeans, Intellij IDEA или командную строку и ваш любимый редактор.

И скачаем JDK последней версии: JDK 7u4

Скорее всего проблем с установкой IDE у вас не возникнет, а если у вас 64-битная система, все же посоветую устанавливать 32-битный Eclipse, так как иногда бывают ошибки и Eclipse у вас просто не запустится.

Под катом мы приступим к созданию игры.

Класс Game

Итак, создаем проект, в нем класс Game(попутно создав в нем точку входа). Данный класс должен наследовать класс Canvas и реализовать интерфейс Runnable:

Создадим переменную running типа Boolean, которая, как вы уже догадались будет показывать нам запущена ли игра, или нет.

Создадим функцию start() и в ней мы будем создавать новый поток и переводить running в true:

Создадим три функции — update(long delta), render() и init(). Я надеюсь что их значение вам понятно. В функции run() создадим главный игровой цикл, перед ним будем вызывать init(), а в нем самом render() и update(). Так же мы будем вычислять разницу между кадрами(delta time).

Пока поработаем над функцией render().

Вам наверное уже не терпится запустить и попробовать, но не спешите. Мы должны создать фрейм и добавить наш холст на него. Заодно и объявим три переменных.


Примерно вот так выглядит наш класс Game сейчас.

Класс Sprite

Создадим новый класс Sprite. Поскольку этот класс небольшой, я сразу приведу весь его код с комментариями:

Сразу же проверим работоспособность. Возьмем эту картинку и скопируем ее в папку с нашим классом Sprite. Добавим функцию getSprite() в класс Game(временно).


Добавим нашу картинку в папку assets(папку создать в корне проекта), саму папку надо добавить в build path.

Далее создаем переменную hero типа Sprite. В функции init() инициализируем ее. В Функции render() рисуем:


Input

Для обработки инпута мы создадим класс, наследующий KeyAdapter:


Тут же и объявим две переменных в шапке класса Game:

Внутри класса KeyInputHandler создадим две функции:

Теперь в функции init() добавим следующее:

Создадим переменные x и y для героя(так как пока что мы еще не написали класс Entity). Сделаем чтобы герой всегда рисовался на этих координатах.


А теперь в функции update() будем проверять нажаты ли клавиши и изменять x-координату.

Читайте также: