Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

dejot44

Jaka biblioteka do tworzenia gier w C++?

Rekomendowane odpowiedzi

Witam!Zamierzam stworzyć grę w 2d działającą pod linuxem i windowsem.Chciałbym,aby grze był tryb multiplayer(chodzi ogrę sieciową jak i 2 osób(lub więcej)na jednym komputerze).Jaka biblioteka byłaby do tego najlepsza?Dziękuje za wszelką pomoc :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok,fajna opcja SFML by dało radę?Czy nie jest wieloplatformowe?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

instalacja SDL

 

jeśli chodzi o zapis to SFML jest C++, SDL C

funkcjonalnie dość porównywalne

SDL ma więcej backendów

 

QT to też niezła opcja bo to teraz taki kombajn co robi wszystko

nawet wypuścili wersję na Andka :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok,dzięki wezmę QT nawet znalazłem jeden fajny kurs :D Dzięki za pomoc :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

QGraphicsScene, QGraphicsEffect, QGraphicsAnimation i QGraphicsView, po instalacji QT Creatora sprawdź "examples" Mouse costam, przykład na zrozumienie nietypowego dzialania QT - model/view, zamiast podejścia piksel na scenie = piksel na ekranie, tworzysz obiekty na scene w podobnym stylu jak na OpenGLu (wartości względne) natomiast QGraphicsView zajmuje sie wyświetlaniem na rozmiar jaki chcesz,

może tłumaczyć pozycje myszki wzgędem sceny itd itp. może przesuwać, moze obracać, każdy osobno, wszystkie razem... to już nie jest zwyczajne rysowanie zajmowanie się buforami, a obiektowe rysowanie.

Można jako QGraphicItem wstawić nawet QWidget tj. QButton i traktować na równi z prostym kółkiem i kwadracikiem.

QGraphicsScene nie tylko rysuje kółka kwadraciki ale traktuje te elementy jako obiekty, wykrywa ich kolizje itd itp. umożliwia łatwiejsze nakładanie animacji, efektów

Jest to na swój sposób podobne podejście jakie stosuje Apple w Cocoa i całym tym aplowskim postscriptowo opengielowym UI

 

Sprawdź na youtube po wpisaniu powyższych hasełek ;)

 

Qt ma również zaszyte obiekty do komunikacji w necie - międzyplatformowe więc zadziałają na Windows, Linux, BSD, MacOS, Android, Sailfish, MeeGo, Blackberry itd. (lista jest długa)

Gorzej z dzwiękiem bo niby są ale niby się ich nie zaleca...

QSound, QMultimedia

 

Zalecana metoda na gry 2D to Qml czyli rodzaj interpretowanego języka zarówno do tworzenia elementów GUI jak i animowanych elementów tak jakby zaszytego w Qt, bardzo przypomina HTML i CSS a przede wszystkim - ma pełne sprzętowe wsparcie zarówno na PC jak i na Androidzie - GPU. Co kto woli.

 

Natomiast klasyczne QT wygląda od strony projektu:

main() - typowe jak dla programu konsolowego

tworzysz w nim QApplication globalnie lub lokalnie, moim zdaniem lepsza jest globalna "redefinicja" bazującą na QAplication i umieszczasz w niej QBasicTajmery wszystkie obiekty aplikacji w tym również zbiorowo okna.

Startujesz uruchamiając pętle mesedży(silnik) .exec(argc,argv);

następnie wywołujesz konstruktora okna + .show() i już..

Reszte obsługuje się w ramach slotów i eventów:

 

Event - dostępny jeśli dotyczy uzupełnianej klasy MojeOkno : public QDialog więc można go refefiniować i obsłużyć po swojemu(np. paintEvent, showEvent) a na koniec wywołać orginał bazowy QDialog::showEvent(e);

Proste?

 

signal slot które zobaczysz w Qt defacto to żadne Qt rozszerzenie C bo zarówno signal jaki slot, emit, Q_OBJECT to makrodefinicje o treści dla kompilatora gcc żadnej. Natomiast Meta Object Compiler(moc) przerabia pliki .cpp i tworzy przy użyciu znaczników signal, slot, emit, connect, Q_OBJECT ich uzupełnione wersje zgodnie z zadeklarowaniem powiązań w sygnało/slotowy sposob namespaceobiektu::connect(SIGNAL(akcja()), obiektwywołujący, SLOT(reakcja()),obiektobsługujący);

 

Cwanie zamieniając magię na formę zrozumiałą dla gcc a niezbyt potrzebną do ogarniania przez programiste.

Magia działa tak że obiekt wywołujący dostaje adres wskaźnika funkcji(callback - jeśli znasz WinAPI to wiesz o co kaman) który jest niejako węzłem i ten węzeł wywołuje kolejno wszystkie podane funkcje slotów... ale węzła podczas pisania programu nie widać, widzi i tworzy je moc.

 

Przykładowo - sygnał QTimer wyzwala slot odświeżania sceny QGraphicsScene. Tworzysz tajmer, startujesz a on uruchamia po czasie swój sygnał. Więc tworzysz scene i łaczysz przez connect sygnał tajmera ze slotem który coś z obiektem robi, nie interesując się wskaźnikami i innymi srotami pierdotami - konkretny tajmer uruchomi podane sloty podanego obiektu.

Można tak powiązać wiele elementów jednocześnie więc wiele funkcji moze być wywołane poprzez jeden sygnał kolejno jedna po drugiej, nie martwiąc się o logike jaka za tym stoi.

 

Konieczność używania slotów dotyczy niemodyfikowanych klas bazowych np. guzik w oknie QButton natomiast "redefinicja" MojeOkno : public QWindowWidget ma dostęp do eventów(ot funkcji klasy wywoływanych podczas zdarzenia. Zatem można eventy obsługiwać na zasadzie ich redefinicji i przechwycenia albo w stylu slotowo sygnałowym.

 

Całość Qt nie jest to równie intuicyjna i łatwa jak VCL Borlanda czy .NET (property, events, methods) ale dzięki kretowi w Nokii(Elopowi) i sprzedaży aktualnie darmowe również w programach o zamknietym kodzie.(dawniej wyłacznie na linuxie) Ma zadatki rozjechanie jak walec .NET i ewidentnie po 2011r na fali wznoszącej.

 

ojej ojej znowu się rozpisałem i nikt nic nie zrozumie

ale... myśle że to się przyda bo Qt jest dość dziwne, początkowo wydaje się mało intuicyjne ale szybko można ogarnąć.

Ja się nie chce przyzwyczajać do Qt, traktuje tak by mimo wszystko zachować bariery w stylu krew aplikacji::mózg natomiast po gruntownych analizach wszelkiego typu frejmworków of foxów, wxwidegetów i typowo growych sdlów to toolkit bomba.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...