Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40

Оцените написанную игру

19.04.2016, 09:16. Показов 1031. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, написал игру - сетевые шахматы между игроками. Выложил на github, было бы круто узнать что скажут хорошие программисты, особенно по архитектуре и пр. моментам)

Игра: https://github.com/n-demidov/NetChess
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2016, 09:16
Ответы с готовыми решениями:

Как защитить игру?
Приветствую! Допустим, я написал на UE4 игру. Как мне ее защитить от копирования и запуска на другом компьютере?

Запустить игру, написанную на Java-языке
Доброго времени суток... Столкнулся с такой проблемой, мне нужно запустить игру написанную на ява языке, вот код: using System; ...

Как сохранить написанную игру в Delphi 7
Пишу игру по курсовой работе. Нужно сделать сохранение и загрузку игры в MainMenu, но облазив кучу форумов, так и не понял, как сохранять...

9
12 / 4 / 0
Регистрация: 23.11.2014
Сообщений: 390
25.04.2016, 05:33
ты всё сам писал или использовал готовый движок?

Добавлено через 2 минуты
где изображения фигурок взял?
0
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
25.04.2016, 11:05  [ТС]
всё сам, ну по Netty - смотрел обучалки, искал примеры, по JavaFX также, чё-то там на форумах пару раз спрашивал + гуглил вопросы, попутно продолжал обучаться.

Архитектуру\логику было интересно самому написать, а потом посмотреть как сделали другие. Вопросов потому что куча) Но руки так и не дошли посмотреть как в других приложениях.

Картинки с какого-то шахматного приложения на гитхабе взял

Добавлено через 2 часа 50 минут
Но шахматного бота я не писал - у меня только игроки могут играть друг с другом по сети.
0
12 / 4 / 0
Регистрация: 23.11.2014
Сообщений: 390
25.04.2016, 17:39
видел на андроиде, как много шахмат около сотни.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
25.04.2016, 18:39
wikkk, сделайте мултимодульный проект, вместо трёх отдельных. Там будет намного проще смотреть.
0
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
14.05.2016, 17:25  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
wikkk, сделайте мултимодульный проект, вместо трёх отдельных. Там будет намного проще смотреть.
Взгляните, пожалуйста, правильно ли сделал мультимодульный проект?
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
15.05.2016, 10:13
Ну не совсем логично раскидано по пакетам, это моё субъективное мнение.

А вот чисто по коду могу сказать следующее;

1) штуки типа
Java
1
if (nextLaunch.before(Calendar.getInstance().getTime()))
выносят в отдельный метод, с понятным названием

2) собственно не советую выносить блоки так, как вы это делаете, т.е. вместо
Java
1
2
3
4
if (nextLaunch.before(Calendar.getInstance().getTime()))
{
     // something
}
лучше
Java
1
2
3
if (nextLaunch.before(Calendar.getInstance().getTime())) {
     // something
}
так просто принято, это приятнее читается, экономит строку

3) у вас было что-то вроде
Java
1
2
for (final User playingUser : gameManager.getPlayingUsers(game))
            connectionManager.sendToUser(playingUser, gameMsg);
и примерно это же было где-то вообще в 1 строку.
Всегда заворачивайте блоки в фигурные скобки, не важно if это или for, однажды вы возможно допустите ошибку и будете её долго искать
Аналогично;
Java
1
if (isSendCurrentGame) messages.add(getCurrentGameMsg(user));
Собственно если это java8 то можно вообще streams использовать

4) вот это трешово смотрится;
Java
1
2
3
4
return new UserProfile(user.getName(), user.getRank(),
                user.getWins(), user.getDefeats(), user.getDraws(),
                user.getTotalTimeOnServer() + connectionManager.getUserCurrentTimeOnServer(user),
                isInvited, isPlaying
можно же было конструктор сделать отдельный

5) какие-то вещи повторяются в разных классах, т.е. их вообще следует вынести в отдельный класс, или если java8 то мб интерфейс с default поведением
0
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
16.05.2016, 08:39  [ТС]
Спасибо!

Цитата Сообщение от dzrkot Посмотреть сообщение
4) вот это трешово смотрится;
Java
1
2
3
4
return new UserProfile(user.getName(), user.getRank(),
                user.getWins(), user.getDefeats(), user.getDraws(),
                user.getTotalTimeOnServer() + connectionManager.getUserCurrentTimeOnServer(user),
                isInvited, isPlaying
можно же было конструктор сделать отдельный
Тут как было: У меня есть класс AbstractUser, от которого наследуются три класса: User, UserProfile и Player.
Изначально встал вопрос: отправлять ли на клиент тот же самый класс User (и занулять пароли\сделать transient), либо создать отдельный класс и отправлять его. Выбрал второй вариант, т.к. в UserProfile добавляются еще дополнительно два свойства: находится ли игрок в сети и был ли приглашён в игру. И конструктор в классе UserProfile не могу сделать, потому что в общая библиотека и клиент даже не знают о существовании класса User. А засорять класс User мне тоже как-то не захотелось.
Возможно стоило бы создать отдельный класс Converter...

Аналогично у меня сделан класс Player, которому добавились чисто игровые свойства: цвет игрока, очки, оставшееся время на ход и пр. Также благодаря этому можно знать какое состояние было у игрока на начало игры (для истории).

Цитата Сообщение от dzrkot Посмотреть сообщение
Ну не совсем логично раскидано по пакетам, это моё субъективное мнение.
...
5) какие-то вещи повторяются в разных классах, т.е. их вообще следует вынести в отдельный класс, или если java8 то мб интерфейс с default поведением
А как их лучше раскидать?))
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
16.05.2016, 10:38
Цитата Сообщение от wikkk Посмотреть сообщение
И конструктор в классе UserProfile не могу сделать, потому что в общая библиотека и клиент даже не знают о существовании класса User.
не понял... вы же на сервере создаёте UserProfile... и вам ничего не мешает создать констурктор или статический метод-инициализатор в userProfile, который принимает User и читает всё необходимое... Если это уц вас только в 1 месте встречается, и вы ничего не планируете менять, то можно конечно и оставить, но практика показывает, что такие вещи встречаются не в 1 месте, и засорять такими вызовами логику не стоит, лучше создать конструктор или метод...
Цитата Сообщение от wikkk Посмотреть сообщение
А как их лучше раскидать?))
чтобы ответить, мне надо изучить проект, я не особо его смотрел... но пакеты game , users , network внутри model для меня не очень понятны...
1
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
16.05.2016, 11:19  [ТС]
Цитата Сообщение от dzrkot Посмотреть сообщение
не понял... вы же на сервере создаёте UserProfile... и вам ничего не мешает создать констурктор или статический метод-инициализатор в userProfile, который принимает User и читает всё необходимое... Если это уц вас только в 1 месте встречается, и вы ничего не планируете менять, то можно конечно и оставить, но практика показывает, что такие вещи встречаются не в 1 месте, и засорять такими вызовами логику не стоит, лучше создать конструктор или метод...
Создаю на сервере, да, но сам класс UserProfile находится в проекте NetChessCommon. И эта общая библиотека ничего не знает о классе User - т.к. класс User находится в проекте NetChessServer. Это чтобы клиент ничего не знал о классе User и его туда случайно нельзя было передать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2016, 11:19
Помогаю со студенческими работами здесь

Где можно продать написанную 2D игру
Кто скажет где можно продать написанную 2D игру? заранее благодарен)))

Оцените игру
оцените пожалуйста игру и сделайте вердикт program pbnd; uses crt; var ...

Оцените игру-шутер
uses graphabc,events,Timers; type massiv=array of integer; var x1,y1,x2,y2:massiv; x:array of integer; y:array of integer; ...

Оцените простенькую игру
Написал небольшую игру, Суть в том что бы угадать число. Я старался хорошо закомментировать код и сделать его наиболее читабельным на...

Оцените консольную игру
Консольная игра, летает самолетик, убивает всякие бяки. Управление: движение - стрелочки стрельба - пробел магазин - 1 вкл./выкл....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru