Сетевая игра "Танки"
Пользователь запускает программу и выбирает быть сервером или клиентом.
В первом случае пользователь пишет только порт, в другом - ip и порт.
Как только пара пользователей найдена, начинается раунд.
Игроки управляют танком в двумерном пространстве.
Цель каждого - набрать побольше баллов за попаданиия в чужой танк.
В арсенале есть несколько различных снаряды.
Раунд заканчиватся, когда набран максимум баллов.
Победитель выбирается по колличеству баллов.
Далее игрокам предлагается сыграть еще один раунд.
-
MainMenu - рисует первоначальное окошко, где пользователи могут изменять какие-нибудь параметры
-
Screen - Основное окошко, в котором будет картинка игры и несколько кнопочек
-
Connector - отвечает за соединение игроков и имеет интерфейс для их взаимодействия
-
Engine - графический движок
-
Controller - базовый класс управления игрой
- User_Controller - класс для управление игрой пользователем
- Socket_Controller - класс для управления игрой через сокет
-
Basic_Tank - Скелет любого танка
- Original_Tank - частный случай танка
- Super_Tank - частный случай танка
- ...
-
Basic_Misslie - Скелет любого снаряда
- Original_Misslie - частный случай снаряда
- Super_Misslie - частный случай снаряда
- ...
-
Basic_Blow - Скелет любого взрыва
- Original_Blow - частный случай взрыва
- ...
юзер запускает программу, та ему предлагает варианты: клиент или сервер, и может еще парочку параметров.
в одном случае юзер пишет ip и порт, в другом только порт и происходит соединение. за это отвечает целый класс. результатом его работы должен быть сокет.
юзер тыкает на старт и программа параллелится в три потока:
1й - работает с юзером. ждет нажатия кнопочек и все такое
2й - слушает сокет.
оба эти сокета создают объекты и пихают в расшаренный массив.
3й поток управляет этими объектами, меняет там, передвигает и удаляет.
к примеру ты жмякнул кнопочку "ОГОНЬ", в массиве появился объект снаряда с параметрами скорости, направления и текущей координаты.
затем 3й поток сам будет их менять (точнее вызывать метод, который все меняет)
Доп.инфа: у третьего потока есть публичный флаг - игра на паузе, первый и второй потоки ничего не создают. создавать объекты можно только когда флаг опущен.