• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SFML - responsywność okna ( gra tic-tac-toe )

Object Storage Arubacloud
0 głosów
394 wizyt
pytanie zadane 2 sierpnia 2018 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

Witam, biorę się za pisanie już mojej drugiej gry w sfml, sama mechanika jest oczywiście banalna. Całe wyzwanie polega na tym że chce żeby była możliwość zmiany okna programu ( cała jego zawartość zostanie odpowiednio przeskalowana ). Początkowo chciałem skalować obiekty w grze. Pomyślałem jednak czy zamiast tego nie można pobawić się widokiem view? Tzn. żeby widok pokazywał stałych rozmiarów planszę a sam był dopasowany od rozmiaru okna. Już ktoś raz polecał mi zastosowanie view, była to jednak trochę inna sytuacja i nie do końca jeszcze wtedy to ogarniałem. Druga sprawa...

Chcę żeby rozmiar okna było można zmieniać tylko w ściśle ustalonych proporcjach, czyli np. mamy jakiś rozmiar okna w 'x' oraz w 'y' równy '2x':

Mam na dzieje że wiecie o co chodzi, mamy pewnego rodzaju blokadę która pozwala zmieniać rozmiar okna, ale stosunki boków będą musiały być niezmienne. Pewnie nie raz to widzieliście... jak to zaimplementować w sfml?

 

Dziękuję za pomoc i pozdrawiam :)

 

1 odpowiedź

+1 głos
odpowiedź 2 sierpnia 2018 przez C☺ndzi Stary wyjadacz (12,100 p.)
Może po prostu dodaj w ustawieniach gry presety rozdzielczości, jak to jest w grach? Na przykład: 200x400, 300x600, 400x800. Potem po prostu aktualizuj rozmiar okna.
komentarz 2 sierpnia 2018 przez Jakub 0 Pasjonat (23,120 p.)
Dziękuje za odpowiedź, tzn. że gra sama się dopasowuje do parametrów monitora a użytkownik nic już przy rozmiarze nie kombinuje? Czy może  chodzi o to że ustawioną przez użytkownika wielkość okna  zaokrąglamy do najbliższego presetu?

* to pierwsze rozwiązanie już wykorzystałem kiedyś

Możliwe że źle zrozumiałem, jeśli tak to będę wdzięczny za info.
1
komentarz 2 sierpnia 2018 przez C☺ndzi Stary wyjadacz (12,100 p.)
Chodzi mi o coś bardzo prostego, poprostu takie ustawienie: https://i.ytimg.com/vi/MU759GSVqf8/hqdefault.jpg .Dajesz użytkownikowi możliwość wybrania rozmiaru okna. Gdy użytkownik wybierze jakiś rozmiar powinno wystarczyć wywołanie `window.create(nowy rozmiar)`. Żeby jednak skala pozostała taka sama, elementy się nie rozjeżdżały czy coś, powinieneś albo użyć sf::View, albo skalować pozycje. To znaczy - przechowywać ją jako wartość od 0 do 1, a przy wyświetlaniu zamieniać na pozycję pixeli, tak myślę.
komentarz 2 sierpnia 2018 przez Jakub 0 Pasjonat (23,120 p.)

Żeby jednak skala pozostała taka sama, elementy się nie rozjeżdżały czy coś, powinieneś albo użyć sf::View, albo skalować pozycje. To znaczy - przechowywać ją jako wartość od 0 do 1, a przy wyświetlaniu zamieniać na pozycję pixeli, tak myślę.

To wiem, dotyczyła tego pierwsza część pytania ;)

Co do ustawienia rozdzielczości przed uruchomieniem stricte gry ( lub w jej ustawieniach ) to niby dobry pomysł. Też dzięki za info bo o tym nie pomyślałem. Zastanawiam się jednak czy dla takich prostych gier jak tic-tac-toe, saper itd... nie jest to zbyt prze komplikowane z punktu widzenia użytkownika... no chyba że jest inaczej. Co sądzisz o czymś takim że mamy okno które można dowolnie zmieniać ale i tak jest ono po wydarzeniu Resized dostosowywane do pewnych ustalonych proporcji. Czyli np. pod uwagę bierzemy jego szerokość a wysokość zostanie dopasowana na podstawie stosunku szerokości do wysokości.

 

komentarz 2 sierpnia 2018 przez C☺ndzi Stary wyjadacz (12,100 p.)
Może to być denerwujące - przetestuj na jakimś programie. Okno będzie "skakać" przy zmianie rozmiaru.
komentarz 2 sierpnia 2018 przez Jakub 0 Pasjonat (23,120 p.)
To chyba jednak zrobię z tym wybieraniem rozdzielczości w menu. Bo przypuszczam że do zrobienia dynamicznego przesuwania z zachowaniem proporcji musiał bym użyć jakiś dodatkowych bibliotek ( coś bardziej w stylu Qt )

Podobne pytania

0 głosów
1 odpowiedź 149 wizyt
pytanie zadane 17 listopada 2019 w C i C++ przez fff Gaduła (3,950 p.)
0 głosów
0 odpowiedzi 201 wizyt
0 głosów
1 odpowiedź 308 wizyt

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...