• 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 )

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
465 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ź 174 wizyt
pytanie zadane 17 listopada 2019 w C i C++ przez fff Gaduła (3,950 p.)
0 głosów
0 odpowiedzi 215 wizyt
0 głosów
1 odpowiedź 356 wizyt

93,188 zapytań

142,204 odpowiedzi

322,027 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2704p. - Tomasz Bielak
  5. 2678p. - Łukasz Siedlecki
  6. 2627p. - CC PL
  7. 2485p. - Marcin Putra
  8. 2443p. - rucin93
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2156p. - Anonim 3619784
  13. 2127p. - Michał Telesz
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...