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