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

question-closed Jak powiększyć małą gre w SFML-u

Object Storage Arubacloud
0 głosów
301 wizyt
pytanie zadane 17 stycznia 2018 w C i C++ przez Alan Hudela Początkujący (340 p.)
zamknięte 22 stycznia 2018 przez Alan Hudela
Hej!

Siadłem sobie dzisiaj i zabrałem się za instalowanie SFML-a. Po jakimś czasie przebrnąłem przez lawiny błędów.

Nauka składni szła bardzo sprawnie. Zacząłem sobie portować Snejka napisanego wcześniej w konsoli(wyświetlanego za pomocą znaków ASCII), żeby wszystko ładnie wyglądało.

Szło w miarę sprawnie. Udało mi się zmienić sterowanie z getchów i kbhitów na isKeyPressed oraz wyświetlanie na działające. NO ALE... Tu sie pojawił mój problem. Cała gra działa już sprawnie tylko wyświetla sie baardzo bardzo mała. Dokładniej to 10px x 10px. Ledwo co widać, ale widać że działa. Szukam już z godzine rozwiązania i nic nie działa. Może używam złych funkcji, a może źle je implementuje.

Edit: Dodam jeszcze, że mogę ustawić sobie plansze 500px x 500px i gra jest wtedy duża, ale snake dalej pozostaje grubości 1px oraz jedzonko tak samo. Chciałbym jakby zbliżyć moją planszę 10x10, a nie robić ją większą.

Próbowałem już: Sprite.setScale() oraz View,setSize(), View.zoom()

Nic nie potrafie już z tym zrobić. Jakiej funkcji tutaj użyć? Da sie tak w ogóle?

Edit2:{

main.cpp:

https://pastebin.com/9D1k5B3u

funkcje.hpp

https://pastebin.com/d3gFxj8z

plansza.hpp

https://pastebin.com/tzZXppQ1

struktury.hpp

https://pastebin.com/vJ5UQZqR

}
komentarz zamknięcia: Problem rozwiązany.
komentarz 17 stycznia 2018 przez criss Mędrzec (172,590 p.)
Kod. Kod powie wszystko.
komentarz 17 stycznia 2018 przez Alan Hudela Początkujący (340 p.)
Dodałem w edycji linki :)

2 odpowiedzi

+1 głos
odpowiedź 17 stycznia 2018 przez criss Mędrzec (172,590 p.)
wybrane 22 stycznia 2018 przez Alan Hudela
 
Najlepsza
void wyswietlanie()
{
    sf::Texture wazTxt, jedzenieTxt, pusteTxt;
    sf::Sprite wazSprite, jedzenieSprite, pusteSprite;
    wazTxt.loadFromFile("waz.png");
    jedzenieTxt.loadFromFile("jedzenie.png");
    pusteTxt.loadFromFile("puste.png");
    wazSprite.setTexture(wazTxt);
    jedzenieSprite.setTexture(jedzenieTxt);
    pusteSprite.setTexture(pusteTxt);
   // ...
}

Nope, nope, nope. W każdej klatce tworzysz nowe sprite-y i tekstury. O ile sprite-y, to właściwie żaden ból, to ładowanie tekstur co klatke jest niedopuszczalne absolutnie.

Co do wielkości: Tworząc sprite domyślnym konstruktorem on sobie ustawia wszystkie swoje wewnętrzne wierzchołki na (0, 0) (to jest tylko pozycja lokalna jeśli się zastanawiałeś dlaczego w takim razie wszystko nie jest renderowane w (0,0) ekranu). Czyli wszystkie są w tym samym punkcie - tym samym renderuje ci się pojedynczy punkt. Możesz to naprawić podając w konstruktorze sprite-a teksture (oczywiście już gotową, załadowaną żeby był znany jej rozmiar), albo wołając `.setTexture` z dodatkowym argumentem `true` przez co wymusisz wyliczenie wierzchołków na nowo (zobacz). Sprite będzie miał wtedy rozmiar tekstury. Generalnie ustawiając nową teksture powinieneś rozważyć przeliczenie na nowo wierzchołków, bo sprite zostanie rozmiaru poprzednio ustawionej tekstury (być może nieporządane zachowanie) i - co bardziej drastyczne - sprite będzie renderował teksture niepoprawnie (wynika to z konieczności przeliczenia pozycji na teksturze mapowanych na wierzchołki)

I to w kwestii rozmiaru, ale do poprawy jest znacznie więcej. To co widać na pierwszy rzut oka, to że twoja "siatka" ma pola rozmiaru (jedno przesunięcie pewnie ma być równoznaczne z przesunięciem o rozmiar jednego bloczku snake-a a aktualnie przesuwa się 1px).

komentarz 18 stycznia 2018 przez SimiVoid Pasjonat (19,790 p.)

W tym przypadku najlepiej byłoby użyć

sf::RectangleShape name;

ponieważ ma możliwość manipulowania rozmiarem poprzez funkcje

name.setSize(sf::Vector2f(x, y));

przy czym x i y są to nowe rozmiary w osiach x i y;

komentarz 18 stycznia 2018 przez criss Mędrzec (172,590 p.)
RectangleShape nie można teksturować.
komentarz 20 stycznia 2018 przez Alan Hudela Początkujący (340 p.)

@Criss, Jejku dzięki. Udało się wszystko naprawić. Snake się już wyświetla na całym ekranie. Za dużo nauki i kodowania w tamten dzień miałem. Dzisiaj jak usiadłem to już wszystko było oczywiste :'). Dzieki jeszcze raz

komentarz 20 stycznia 2018 przez criss Mędrzec (172,590 p.)
Super :) Prosze bardzo!
0 głosów
odpowiedź 17 stycznia 2018 przez SimiVoid Pasjonat (19,790 p.)
komentarz 17 stycznia 2018 przez Alan Hudela Początkujący (340 p.)
Próbowałem z tego korzystać, ale właśnie chyba nie potrafię tego zaimplementować jeżeli to ma działać.
komentarz 17 stycznia 2018 przez SimiVoid Pasjonat (19,790 p.)
Pokaż mi cały kod gry, bo inaczej ciężko pomóc.
komentarz 17 stycznia 2018 przez Alan Hudela Początkujący (340 p.)
Dodałem w edycji linki :)

Podobne pytania

0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 27 czerwca 2017 w C i C++ przez Meltern Początkujący (440 p.)
+1 głos
1 odpowiedź 379 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez zmiennoimienny Mądrala (5,540 p.)
0 głosów
1 odpowiedź 359 wizyt
pytanie zadane 31 maja 2016 w C i C++ przez Munvik Dyskutant (9,350 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 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!

...