Карточная игра на java по сети
Получил в вузе задание написать что-то с гуем. Нашел карточную игру, которую хочу реализовать, однако когда начал приступать появились вопросы:
- Как реализовать игру по сети? (какую библиотеку/фреймворк использовать)
- Чем рисовать игру? (
javaFX(которую предложили в вузе) или какая-то другая библиотека/фреймворк)
Подскажите пожалуйста, на чем удобнее будет это реализовать.
Так же очень приветствуется, чтоб библиотека была проста в освоении на базовом уровне и имела какие-то нормальные гайды в инете.
Заранее спасибо за ваши ответы
Ответы (2 шт):
JavaFX можете оставить, в нём нет ничего плохого.
Java в любом случае очень редко используется для программирования на Desktop, поэтому в этом направлении думайте о том, что удобно, а не что пригодиться в дальнейшей жизни (ИМХО)
Насчёт работы с сетью, то вам очевидно нужна работа с Socket (https://javarush.ru/groups/posts/654-klassih-socket-i-serversocket-ili-allo-server-tih-menja-slihshishjh)
Данную статью скинул исключительно как пример, чтобы вы понимали куда копать (просто мне показалась она слишком не понятная).
Но я не советую использовать Socket в чистом виде, хотя в годы своего студенчества делал на чистых сокетах. Можете поискать какие-нибудь библиотеки, которые упрощают с ними работу. Например Apache MINA (https://mina.apache.org/) или Grizzly (https://javaee.github.io/grizzly/)
То есть у вас должно быть постоянный коннект между пользователями, чтобы можно было пересылать данные друг другу и моментально реагировать на события, а это только прямой коннект, то есть сокеты...
Опять же, если хотите чтобы было всё понятно, то используйте всё таки Socket, так как есть огромная масса видеоуроков на YouTube и других ресурсах, где люди делают клиент-серверные приложения с помощью них. Если вы, например, будете использовать Apache Mina, то найти что-то типа гайда будет уже очень сложно. Останется только читать документацию и самому разбираться, но без понимания как устроен Socket будет ещё тяжелее (пример видео https://www.youtube.com/watch?v=pcIoZA2c-5k&t=4537s&ab_channel=GeekBrains)