Comments 17
Зачем реализовать интерфейс GameConstants? Если вы хотите иметь удобный доступ к константам из этого интерфейса, достаточно сделать import static GameConstants.*;
Этот же вопрос про BallGame. Это класс-лаунчер, ему-то точно не нужно иметь доступ к GameConstants.
Также у вас в каждом экземпляре Ball используется Timer. Каждый Timer — это отдельный поток. У меня подозрение, что это может плохо сказаться на производительности. Вам проще было бы сделать отдельный метод (например, update()) в классе Ball и из BallComponent вызывать этот метод.
Я советую вам дальше почитать «Чистый код» Роберта Мартина. Не воспринимайте ее очень уж серьезно, но стиль кода она должна вам поднять.
Почитайте про паттерны проектирования, это вам пригодится всегда, особенно если вы пишете игры.
Пользуясь случаем, хочу проагитировать libGDX, чудесный фреймворк для написания игр. Хорошая документация, отличная архитектура — если хотите двинуться в сторону разработки игр на Java, это отличный выбор.
В общем, поздравляю вас с первой игрой!
Этот же вопрос про BallGame. Это класс-лаунчер, ему-то точно не нужно иметь доступ к GameConstants.
Также у вас в каждом экземпляре Ball используется Timer. Каждый Timer — это отдельный поток. У меня подозрение, что это может плохо сказаться на производительности. Вам проще было бы сделать отдельный метод (например, update()) в классе Ball и из BallComponent вызывать этот метод.
Я советую вам дальше почитать «Чистый код» Роберта Мартина. Не воспринимайте ее очень уж серьезно, но стиль кода она должна вам поднять.
Почитайте про паттерны проектирования, это вам пригодится всегда, особенно если вы пишете игры.
Пользуясь случаем, хочу проагитировать libGDX, чудесный фреймворк для написания игр. Хорошая документация, отличная архитектура — если хотите двинуться в сторону разработки игр на Java, это отличный выбор.
В общем, поздравляю вас с первой игрой!
Пользуясь случаем, хочу проагитировать libGDX, чудесный фреймворк для написания игр. Хорошая документация, отличная архитектура — если хотите двинуться в сторону разработки игр на Java, это отличный выбор.
Подтверждаю, действительно очень хороший фреймворк. Учавствовал во флешмобе «100 игр за неделю», была придумана идея, для реализации выбрал libGDX. В итоге ни разу не пожалел — действительно отличная официальная документация, много информации на StackOverflow и хорошие примеры. Единственной странностью было то, что html-бэкенд не определял пользовательскую локаль, пришлось немного гуглить про GWT и делать определение отдельно.
Большое спасибо!
Учту советы, и поправлю код.
Как раз открыл для себя «Паттерны проектирования» от издательства Head First. Буду пугать народ в метро (точнее тех, кто любит читать через плечо).
Как-то услышал совет — «Если учитесь, изобретайте велосипеды». Естественно, что в серьезных проектах лучше всего использовать уже проверенные библиотеки и фреймворки, но в целях обучения, лучше поломать голову и попытаться написать все с нуля.
В будущем думаю двинуться в сторону Android (для чего собственно и вгрызаюсь в Java). Там же, в создании игр, сейчас как я понял рулит NDK?
Учту советы, и поправлю код.
Как раз открыл для себя «Паттерны проектирования» от издательства Head First. Буду пугать народ в метро (точнее тех, кто любит читать через плечо).
Как-то услышал совет — «Если учитесь, изобретайте велосипеды». Естественно, что в серьезных проектах лучше всего использовать уже проверенные библиотеки и фреймворки, но в целях обучения, лучше поломать голову и попытаться написать все с нуля.
В будущем думаю двинуться в сторону Android (для чего собственно и вгрызаюсь в Java). Там же, в создании игр, сейчас как я понял рулит NDK?
NDK — это «нативный» код для Andorid, пишете на С++. И как раз NDK и не рулит там. Я наблюдаю тенденцию, что люди хотят выпускать игры для нескольких платформ одновременно. NDK здесь никак не применим, его юзают, если нужно написать что-то низкоуровневое и быстрое.
Для игр на Android популярны кросплатформенные игровые движки. Это монстр Unity 3d, конечно же, это Cocos2d-x. Лично я использую libGDX, очень быстро и удобно писать — после написания очередного куска кода можно сразу запустить на десктопе, и намного реже — на телефоне.
Есть возможность создать сборки под Linux, Windows, Mac OS X, Android — эти платформы вообще без проблем. Несколько хуже, есть некоторые ограничения — для iOS. И если ваша игра очень уж простая — можно сделать сборку под html5. При этом пишете вы все на той же Java, просто под капотом в libGDX много черной магии, которая скрывает от вас много сложного :)
Для игр на Android популярны кросплатформенные игровые движки. Это монстр Unity 3d, конечно же, это Cocos2d-x. Лично я использую libGDX, очень быстро и удобно писать — после написания очередного куска кода можно сразу запустить на десктопе, и намного реже — на телефоне.
Есть возможность создать сборки под Linux, Windows, Mac OS X, Android — эти платформы вообще без проблем. Несколько хуже, есть некоторые ограничения — для iOS. И если ваша игра очень уж простая — можно сделать сборку под html5. При этом пишете вы все на той же Java, просто под капотом в libGDX много черной магии, которая скрывает от вас много сложного :)
Обязательно попробую. У вас, как раз смотрю есть подборка туториалов, почитаю.
Почему NDK вспомнился — где-то год или полтора назад, ZeptoLab, проводила конкурс на написание игры. И обязательным требованием было как раз использование NDK.
Почему NDK вспомнился — где-то год или полтора назад, ZeptoLab, проводила конкурс на написание игры. И обязательным требованием было как раз использование NDK.
Кстати, я игру реализовал еще как апплет, и поставил ее, как заглушку для своего сайта.
Не знаю, разрешено ли публиковать ссылки?
Не знаю, разрешено ли публиковать ссылки?
Вы можете добавить личный сайт в свой профиль. Желающие пройдут по ссылке
и еще небольшой комментарий в продолжение 1nt3g3r
Как написано в Item 19 в книге Effective Java: интерфейсы необходимо использовать только для определения типов. Там как раз в качестве плохого примера приводится интерфейс с константами. В таком случае советуют создавать самостоятельный утилитарный класс, в котором уже объявлять все константы, а потом обращаться к ним либо по полному имени ClassName.CONSTANT, либо через статический импорт, о чем уже было написано выше
и еще небольшой комментарий в продолжение 1nt3g3r
Как написано в Item 19 в книге Effective Java: интерфейсы необходимо использовать только для определения типов. Там как раз в качестве плохого примера приводится интерфейс с константами. В таком случае советуют создавать самостоятельный утилитарный класс, в котором уже объявлять все константы, а потом обращаться к ним либо по полному имени ClassName.CONSTANT, либо через статический импорт, о чем уже было написано выше
Я наблюдаю тенденцию, что люди хотят выпускать игры для нескольких платформ одновременно. NDK здесь никак не применимРасскажите это ZeptoLab, а то они не знают.
Статья про чистый код, а комментарии про то, что «надо использовать фреймворки» :facepalm:
Автор молодец, что не использовал фреймворк, а сделал все as is сам.
Это вечный холивар (чистый или грязный кодинг) и я на вашей стороне, я за чистоту.
Автор молодец, что не использовал фреймворк, а сделал все as is сам.
Это вечный холивар (чистый или грязный кодинг) и я на вашей стороне, я за чистоту.
Нет никакого «чистого» и «грязного» кодинга. Есть задача и есть время на её решение. Фреймворки дают приемлимое качество в приемлимые сроки.
P.S.: «чистый код» это уже устоявшееся выражение и означает оно отнюдь не «отсутствие фреймворков». Подкорректируйте свой словарик, пожалуйста, дабы не сбивать с толку собеседников.
P.S.: «чистый код» это уже устоявшееся выражение и означает оно отнюдь не «отсутствие фреймворков». Подкорректируйте свой словарик, пожалуйста, дабы не сбивать с толку собеседников.
Подкорректируйте свой словарик, пожалуйста, дабы не сбивать с толку собеседников.
Вы мне ваше мнение навязываете?
Чистый это: clear/clean. Первый — это и чистый и ясный (компактные методы и т.д.), второй — это четкий, соотвествующий неким принципам написания.
Теперь название статьи «Игра на чистой Java от новичка, для новичков» — вы внимательно прочитали? Чистый язык программирования подразумевает только этот язык, и в контексте статьи про чистую java уместно употреблять выражение чистый код. Не находите?
Код, который
Sign up to leave a comment.
Игра на чистой Java от новичка, для новичков