timurnav
21 уровень

2048 на JAVA

Статья из группы Архив info.javarush
участников
Я тут между делом решил пару игр написать, начал с "крестики нолики", но немного подзавис на ней с изучением многопользовательности, пока изучал наткнулся на мысль, что могу сделать игру чтобы поиграть одному. самое яркое воспоминание это 2048, логика в ней довольно простая. по традиции решил начать писать ее для консоли. Я ее сделал немного проще, чем оригинал:
  1. добавляется цифра только в крайний ряд против направления сдвига, т.е. сдвинул вверх в нижний ряд добавилась цифра;
  2. добавляются только 2, в оригинале иногда еще и 4 добавляются, я решил не заморачиваться;
  3. в консольной игре ввод и вывод производится (не поверите!) через консоль, соответственно вывод должен быть в виде импровизированной таблицы, на что у меня уже есть опыт :) ввод изначально планировался цифрами, но потом я вспомнил большие задачи и приспособил KeyboardObserver, минус - шухер наступает при малейших манипуляциях с мышью, т.е. запустили приложение, и дальше только стрелками вниз-вверх-вправо-влево. Честно пообещал себе разобраться в вопросе, но пока не знаю когда, так что вот вашему вниманию продукт полуночного тыкания пальцами в клавиатуру.
По самой логике программы объяснять нечего, в главном методе отслеживаем кнопки и в зависимости от последней ставим нужный Direction, потом переходим к Перемещениям, и выполняем нужный метод. "Нужный метод" сначала двигает все занятые ячейки в нужном направлении, если есть куда двигать, потом проверяет совпадения по столбцам/строкам, если находит совпадения, то суммирует и двигает остаток столбца/строки. Потом отрисовывает поле заново и так в бесконечном цикле пока не проиграешь, или пока кот не пробежит по клавише мышки. Старался в коде сделать комментарии, чтобы потом было всем понятно (в том числе и мне). Ссылка на архив с игрой 2048 Console Edition Доп. инфо, приятнее глазу играть не в идее, а в консоли винды. для этого в скачанном архиве заходишь в папку 2048 и запускаешь батник с логичным названием RUN. но тут снова нужно жать только на клавиши со стрелками, иначе приложение не спрашивая закрывается. P.S. тут только БД надо прикрутить, потом фронтом уже заняться можно будет, я это сделаю в ближайшее время. P.P.S. на андроид тоже возможно напишу, но это пока очень далекое будущее, которое как известно лучше не загадывать :)
Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
timurnav
Уровень 21
26 апреля 2015, 16:45
Сделал багфикс, добавил выбор размеров поля пользователем. никакого консольного ввода, только отслеживание нажатий на клавиатуре, только хард кор

спасибо, nicolas
timurnav
Уровень 21
22 апреля 2015, 21:01
уровень 34, уже наверно месяца два такой уровень. книжек много начинал, штук 20 в планшете валяется, но дочитал только Филисофию Джава. игру писал два вечера
AndreGold
Уровень 28
22 апреля 2015, 22:48
Премного благодарен за ответ!
olegvasylkov
Уровень 39
17 декабря 2015, 13:59
из 20ти штук что было наиболее полезным, а то тоже за несколько взялся, но дочитал ту же Философию (даже по 2му разу пошел), но это благодаря JR. из моих начатых: хорстман (1й том), сэджвик (алгоритмы), шилд. но еще смотрю в сторону Д.Блох, Я.Файн, Gof, Фаулер UML…
timurnav
Уровень 21
7 января 2016, 00:24
Полезные все, в каждой свой взгляд на одни и те же вещи. пока изучаешь нельзя опираться на один источник. по самой Джаве книг не так много: Х.Шилдт — Полное Руководство, К.Хорстман — двухтомник (всё читать не обязательно) и последняя в ряду Философия Java, читать последней и полностью, ну или пропуская неинтересные разделы. по java core больше книг читать не нужно. разве что статейки какие по тонкостям, но это уже отдельно
AndreGold
Уровень 28
22 апреля 2015, 20:19
я извиняюсь за не скромный вопрос не по теме, вы сейчас на каком уровне, сколько книжек прочитали, и как долго писали игру.
Я понимаю, что намешал всего, но лично мне интересно почитать слова людей, которые в программировании продвинулись дальше чем я. Если вас не затруднит конечно