Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] бомбермен с использованием qt, подскажите 
:(
    Опции темы
duckich
Дата 4.4.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.12.2008

Репутация: нет
Всего: нет



Здравствуйте! 
Мне до мая надо сделать программу бомбермен с использованием библиотеки qt. Но не просто игру с компьютером, а сетевую игру. А я ни изучал ничего подобного. Посоветуйте книги и если у вас есть программы(игры на с++) которые поддерживают сетевой режим покажите, дабы разбираясь в командах быстрее понять как мне реализовать свою программу.
Если знаете, где найти бомбермена на с++ под qt, то помогите ссылкой)
Но не надо сильно сложные программы в виде примеров давать, а что-то наподобе "скелета" игры с небольшими дополнениями. Заранее благодарю!
PM MAIL   Вверх
pan2004
Дата 4.4.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



хм... за месяц не имея опыта сделать игруху, да и еще сетевую - имхо слишком загнул)
Можешь посмотреть мой проект(игра в дурака по сети) по ссылке здесь. Сетевая часть там написана на основе библиотеки asio(используемая версия включена в trunk), но может быть в принципе переписана и для QtNetwork(я ее не использовал, чтобы не делать дополнительных зависимостей от Qt). Файлы networking.h и networking.cpp непосредственно работают с сокетами, messages.h и messages.cpp содержат классы и интерфейсы для передачи сообщений по сети. Комментариев там почти нет, если будут вопросы можешь писать в пм.
Да, дополнительно оно требует boost версии 1.36+


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
duckich
Дата 4.4.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.12.2008

Репутация: нет
Всего: нет



Ну вот так нам и сказали... Я думаю можно попозже сдать просто начнут принимать в мае. Да и нам не особо красивую надо сделать просто коричневые кубики-разрушаемые; серые-нет; бегает чёрный кружок и ставит бомбы. меню самое простое: подключится к серверу(если ты клиент) и создать игру(если ты сервер). Основное требование-чтобы не моргало и двигался чёрный кружок не лагая. Пересылать надо, как я думаю координаты разрушенного кубика, непосредственно перед взрывом и направление движение игрока(координаты 2-х точек). Просто я не знаю ни QT ни Сокеты... и не имею понятия как начать!

Это сообщение отредактировал(а) duckich - 4.4.2009, 13:38
PM MAIL   Вверх
pan2004
Дата 4.4.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



и прямо сказали на Qt надо сделать? Просто на нем с включенной по умолчанию double buffering требование типа "чтобы не моргало" теряет смысл)
Если Qt совсем не знаешь, сделать до мая наврят ли удасться. Но можно достать книжку "Qt4: программирование Gui" Бланшета, и выборочно ее изучить(первые главы - знакомство с Qt, главу 7 и 8(обработка событий, QPainter), и скорее всего глава 12/14(классы типа QDataStream, QtNetwork)). Параллельно читать соответствующие Overviews(статьи) в Qt Assistant. После знакомства с восьмой главой приступать к ознакомлению с Qt Graphics Framework(в качестве канваса для твоей игрушки скорее всего понадобится, если ты не собираешься делать вообще все рисование и расчеты координат вручную), куря при этом в основном Qt Assistant. 
Когда ознакомишься с основными принципами Qt, приступай к написанию каркаса программы(своего класса QMainWindow, структуры непосредственно связанные с игрой(класс игрового поля, игрока etc)). По мере ознакомления с соответствующими классами Qt пиши элементы Gui. С Graphics View желательно ознакомится в общих чертах пораньше, чтобы уже представлять как связать его с игровыми классами.

Добавлено через 7 минут и 14 секунд
Да, для анимации можешь скачать с Qt Labs проект Kinetic. Он пока еще не включен в основной Qt trunk, но уже выглядит многообещающе. Можешь почитать блог по нему - сам все увидишь. Хотя возмоно для твоей программки хватит и того, что есть в Qt относительно анимации сейчас


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
duckich
Дата 4.4.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.12.2008

Репутация: нет
Всего: нет



А сетевую часть тоже на QT лучше сделать? Я просто Qt для интерфейса хотел поюзать.. кнопки, меню, движение серверного игрока, а сетевую часть, например, с помощью winsock2.h
Не обязательно всё на Qt делать

Это сообщение отредактировал(а) duckich - 4.4.2009, 14:14
PM MAIL   Вверх
pan2004
Дата 4.4.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Не обязательно. В своем проекте я использую asio для сетевого интерфейса, только это заняло у меня примерно на три-четыре сотни строк больше, чем если бы я сделал то же с помощью Qt.
QtNetwork хорош тем, что он довольно прост в использовании и органично вписывается в уже написанное с применением Qt приложение. Так в нем используются преимущества механизма сигналов/слотов Qt а также класс QIODevice, позволяет писать/читать из сокетов через интерфейс типа QDataStream, делая их почти неотличимыми от обычных файлов.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
SABROG
Дата 4.4.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(pan2004 @  4.4.2009,  12:55 Найти цитируемый пост)
хм... за месяц не имея опыта сделать игруху, да и еще сетевую - имхо слишком загнул)

Я бы на такое не отважился (сделать за месяц), хоть с Qt не первый год. Совершенно нет навыков создания 2d игр. Могу лишь предположить, что карта - обычная сетка с квадратиками (массив тайлов). У бомбермена есть позиция - индекс в массиве. Она меняется в зависимости от нажатия клавиш. Соответственно функция отрисовки окна (скажем paintEvent()) должна знать о существовании всех объектов на карте с их индексами и сам массив квадратиков. Зная размер поля (окна) и размеры каждого тайла (размер ячейки карты, шага) можно определить в каком месте необходимо отрисовать нашего персонажа, стены, бомбы. Т.к. это не статичная картинка, а игра, то надо будет создать таймер, который будет вызывать перерисовку окна (repaint()) с необходимой частотой. Скажем 20 раз в секунду (20 = fps, 1000/20 = 50 мс таймер).
Каждый объект на карте имеет свои функции и состояния. Например земля по которой проходит взрывная волна, если на её пути находится персонаж (индексы в массиве совпадают), то отрисовать смерть персонажа, уменьшить количество жизней, поставить в точку респавна. По сути взрывная волна - составной временный объект занимающий несколько квадратов. По прошествии некоторого времени она должна исчезать, а взамен её должны уничтожаться объекты или персонажи.

В общем это моё видение, возможно подход не правильный. Но как я успел убедиться в большинстве программ приходится чётко знать алгоритм работы, что куда и зачем. Если опыта чего-то нет, то его придется получить. А за месяц скорее всего успеешь только копи-пастингом скопировать куски кода из примеров для организации связи по TCP/IP и нарисовать кружочек через painEvent. А когда дело дойдет до самого написания игры и фабрики объектов придет понимание того, что не знаешь как все это устроено и пока этого не узнаешь - дальше не двинуться. Да и месяц будет проходить таким образом - если что-то не понятно, создашь топик на форуме по Qt, где тебе ответят что-нибудь абстрактное через день (ну или вполне конкретное типа читай Assistant), вопросов будет куча, но основной контекст всех вопросов будет звучать так: "напишите за меня игру", а завуалирован он будет вопросом типа: "приведите рабочий пример".


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.