• 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
405 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ź 153 wizyt
pytanie zadane 17 listopada 2019 w C i C++ przez fff Gaduła (3,950 p.)
0 głosów
0 odpowiedzi 206 wizyt
0 głosów
1 odpowiedź 319 wizyt

92,762 zapytań

141,686 odpowiedzi

320,499 komentarzy

62,106 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

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!

...