Показать содержимое по тегу: Box2D
Вторник, 18 декабря 2012 09:05
Диплом C++ Qt Box2D Google Protobuf
Как всегда на написание дипломного проекта времени оставалось мало поэтому решено было искать что то полу-готовое и делать из этого что то свое J
В условиях дипломного проекта было:
1. Код на C++
2. работоспособность под Linux
3. Использование сети
4. Использование открытых библиотек
Поиск по яндексу дал интересный проект «2D Шутер на C++ & Qt» а именно http://ru.twitch.tv/fippobak/b/330941403. Исходники здесь: https://github.com/bakwc/Epsilon5/
Все что нужно есть осталось это все собрать.
Для начала были скачаны:
1. Qt: http://qt-project.org/downloads
2. Box2D: http://code.google.com/p/box2d/
3. Protobuf: http://code.google.com/p/protobuf/
И тут началось самое интересное.
Сначала я пытался объединить Qtlibraries и QtCreator. При открытии проекта выскакивало Подходящие профили Qt не найдены. После лазания по интернету и прочих мытарств я нашел лучшее решение. Все снес и скачал Qt SDK. Он, что называется, заработал из коробки. Почти… При сборке в окне вывода и проблем (issue) появились «крокозябры» (проблема с кодировкой). Опять яндекс и поиском я нашел: http://lab113.ru/qtcreator_kodirovka.php . Решилось заменой файла jom в папке C:\QtSDK\QtCreator\bin\ на скачанный по ссылке с сайта: http://lab113.ru/jom/x86/jom.exe
Ура. Теперь я могу прочитать что пишет мне копилятор. А пишет он мне следующее:
c:\distrib\programmer\bakwc-epsilon5-a625e59\bakwc-epsilon5-a625e59\eps5client\..\Eps5Proto\Epsilon5.pb.h:9: ошибка: C1083: Неудаетсяоткрытьфайлвключение: ../google/protobuf/stubs/common.h: No such file or directory
Ок. Изархива protobuf-2.4.1.zip доставемпапку google, котораялежитв \protobuf-2.4.1\src\ икопируемв C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\
Новаяошибка: c:\distrib\programmer\bakwc-epsilon5-a625e59\bakwc-epsilon5-a625e59\eps5client\..\Eps5World\world.h:12: ошибка: C1083: Неудаетсяоткрытьфайлвключение: Box2D/Box2D.h: No such file or directory
Изархива Box2D_v2.2.1.zip копируемпапку Box2D тудаже C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\
Следущая ошибка :-1: ошибка: LNK1104: не удается открыть файл "protobuf.lib"
Нужно скомпилировать библиотеку protobuf. По нему хорошая статья здесь: http://mrnone.blogspot.ru/2011/05/google-protobuf.html В кратце:
Распакованный архив исходных файлов protobuf-2.4.1.zip в числе прочего содержит каталог vsprojects, содержащий проекты, для сборки Protobuf в Visual Studio. Открываем Visual Studio и в нем солюшен protobuf.sln
Собираем. Теперь собранные библиотеки, скопированные заголовки и компилятор protoc можно использовать в своём проекте. Копируем libprotobuf.lib, libprotobuf-lite.lib и libprotoc.lib в C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\lib\. Обращаем внимание что проект ищет protobuf.lib а у нас libprotobuf.lib. В окне проектов Qt щелкаем на Eps5Client.pro и меняем строку
LIBS+=-lprotobuf-lbox2d-lglui–lfreeglut
на
LIBS+=-llibprotobuf-lbox2d-lglui–lfreeglut
Тожесамоеделаемив Eps5Server.pro толькотамстрока «LIBS += -lprotobuf». Тем более меняем на «LIBS+=-llibprotobuf-lbox2d-lglui–lfreeglut» во избежании дальнейших проблем.
Теперь проекту не хватает :-1: ошибка: LNK1104: не удается открыть файл "box2d.lib"
Нужно собрать Box2D. По той же схеме идем в Box2D_v2.2.1\Box2D_v2.2.1\Build\vs2010\ открываем с помощью Visual Studio солюшн Box2D.sln и получаем Box2D.lib FreeGLUT.lib GLUI.lib. Их тоже копируем в C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\lib\.
БРАВО! У нас все скомпилировалось. Дальше проще: в файле network.cpp клиента исправляем в строчке _socket->connectToHost(QHostAddress("193.169.33.254"),1238); адрес на свой, где будет запускаться сервер. Если вы тестируете н локальном компьютере можно написать 127.0.0.1. Пересобираем, запускаем, радуемся первому успеху!
Все запускается но видим черный экран клиента. Просто нет картинок.Копируем arbuz.png, mad.png и peka.png в папку с клиентом \Eps5Client-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2010__Qt_SDK__Debug\debug\ Пересобираем.
Все теперь можно побегать и пострелять.
P.S. в следующий раз опишу по изменениям - как я прикручивал сюда Box2D движок...
Опубликовано в
Блог
Теги