Pare pytan o GUI

Pare pytan o GUI
KR
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:353
0

Na razie problemow jeszcze nie ma, bo nie zaczalem nic pisac ;), ale mam za wczasu pare pytan.
Jesli napisze najpierw podstawe, czyli gre ktora bedzie dzialac w konsoli, chodzi glownie o sprawdzenie poprawnosci, to czy potem stworzenie GUI sprowadzi sie do przerobienia samego wyswietlania?
Mysle o tworzeniu tego w Qt.
Moze znacie jakies bardziej przystepne poradniki do qt gui, jakies wstawianie wlasnej grafiki, odswiezanie planszy itd.(oprocz dokumentacji). Nie to, zeby mi sie nie chcialo szukac, ale chcialbym sie troche przygotowac i moze ktos zna jakies dobre sprawdzone strony. Youtube tez srednio mi odpowiada.

SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 6 godzin
0

Nie tylko wyświetlania ale również wprowadzania danych, na pewno będziesz musiał zrezygnować ze wszystkich cin-ów oraz cout-ów. Generalnie lepiej jest tworzyć program od razu jako graficzny, dużo mniej problematyczne.

ps sama "część obliczeniowa" czyli przetwarzanie danych zostanie naturalnie ta sama.

MI
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 11 lat
  • Postów:26
0

Odnośnie książki to ja korzystam z tego http://developer.qt.nokia.com/books/view/c_gui_programming_with_qt_4_2nd_edition_the_official_c_qt_book
Do dostania w internecie.

KR
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:353
0

Gra jako tako bedzie prosta, bo to taki eurobiznes, wiec raczej wprowadzania danych nie bedzie, jedynie moze wybor ilosci graczy z menu. Reszta to tylko kolejne rzuty kostka i ewentualnie kupno/sprzedaz posiadlosci. Zaczniemy robic to zobacze co z tego bedzie wychodzilo ;) W razie problemow bede pytal.

Ogolnie sama obsluga gry i wprowadzaniem danych zajmie sie klasa nadrzedna, wiec mysle ze jedynie przerobka bedzie w tej klasie w razie czego.

edytowany 1x, ostatnio: Krycho
PS
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad 13 lat
0

Zadbaj o dobrą architekturę, modułowość. Rozdziel wyraźnie warstwę związaną z prezentacją (wypisywaniem) od logiki gry, danych itp. (np. tradycyjny schemat model-widok-kontroler). No i jak będziesz pisał klasy to miej cały czas w głowie, żeby zachować modułowość tzn. im mniej zależności między warstawą prezentacji a innymi tym lepiej.

Jak tak zrobisz, to zmiana interfejsu nie powinna potem nieść ze sobą wielu problemów (oczywiście tych niezwiązanych z tworzeniem samego GUI).


Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Jeśli ładnie podzielisz to według wzorca MVC to zmiana View nie powinna być specjalnie bolesna :)


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
djszalas
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:8
0

Wydaje mi się że najrozsądniejszym wyjściem jesli chodzi o programowanie gier w Qt to QML. Sam tworzysz GUI, możesz wrzucać obrazki, nadawać akcje w tanym rejonie oraz tworzyć jakieś fajne efekty żeby coś się działo na planszy.

KR
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:353
0

Mozecie powiedziec czy ten szablon jest zgodny z tym modelem? Mam takie klasy

Widok - zadnych zmiennych jedynie operuje na danych przekazanych przez gre i wyswietla(na razie bedzie konsolowo potem GUI)
Gra - kontroler calej gry ma informacje o planszy i graczach
Gracz - informacje o graczu i akcje kupowania sprzedawania itd.
pole -klasa abstrakcyjna, przechowuje podstawowe informacje jak nr pola i do kogo nalezy
posiadlosc - dziedziczy po polu i przechowuje odpowiednie dla siebie informacje
akcje - tez dziedziczy po polu nie ma zadnych danych jedynie wykonuje pewne akcje na graczach

edytowany 1x, ostatnio: Krycho
0

bump? ;)

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Wygląda ok, oprócz tego akcje, bo nie rozumiem czemu jest szczególnym przypadkiem pola. Chyba że to jest takie magiczne pole które coś robi jak ktoś na nim stanie?
Tylko jeśli używasz MVC to musisz tu gdzieś wcisnąc Observera. To znaczy View musi skądś wiedzieć ze zaszła zmiana w modelu. Jeśli model sam go o tym poinformuje za pomocą jakiegoś Listenera to będziesz mial MVC. Jeśli to kontroler gry będzie jednocześnie wykonywał akcje na modelu i informował Widok że coś się zmieniło, to będziesz mial MVP.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
KR
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:353
0

Akcje to sa wlasnie takie magiczne pola na planszy, ze jak gracz na nim stanie to cos tam sie dzieje. Zabiera mu kase, daje, stoi kolejke itd. Ogolnie Klasa gry ma w sobie 2 vectory graczy i planszy, i odpowiada za odpowiedni ruch graczy po planszy. Teraz myslalem zeby po prostu ona zwracala pewne dane potrzebne do wyswietlenia danymi funkcjami, z ktorych moglby korzystac widok. On by sobie co kazdy ruch pobieral(dostawal żądanie od kontrolera na odswiezenie) nowe informacje i wyswietlal je. Swoich danych nie ma jedynie operuje na tym co dostanie z zewnatrz.

edytowany 1x, ostatnio: Krycho
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

No tak, póki ta gra jest turowa to możesz tak zrobić. Ale myśl szerzej ;) Gdyby gra nie była turowa to nie byłoby wiadomo kiedy Widok powinien się aktualizować. Dlatego wyzwalaczem powinna być informacja albo od Prezentera albo od Modelu.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
0

Rozumiem o co Ci chodzi. Tutaj po prostu staram sie dostosowac do problemu ;) i taki sposob wydawal mi sie najprostszy bez dolaczania kolejnych klas. Gra juz prawie gotowa to czas wziac sie za GUI, czuje ze troche problemow bedzie xD

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)