Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

MiniProjekt C++


Rekomendowane odpowiedzi

Opublikowano

Dobry, mam do napisania snejka w SFML'u problem w tym, że biję głową w ścianę z powodu zaliczeń, a na projekt nie ma ani pomysłu ani za bardzo czasu więc trochę stoję w miejscu, bo też i nie wiem jak rozwiązać pewne problemy.

 

Teoretycznie powinien być pisany w myśl OOP, ale z tego już praktycznie zrezygnowałem, a z obiektówki jest tutaj jedna klasa (bo czemu nie :') )

 

otóż zastanawia mnie jak w tym cholerstwie (SFML) poradzić sobie z utworzeniem grida na rysowanym polu (podane wymiary z palca w konsoli po odpaleniu programu - ale to można zmienić na stałe wartości jeśli zajedzie potrzeba, chcę nawet po najcieńszej linii oporu)

samo objekt.move(); juz zamienilem nawet na cos w stylu wiecie:

if (Keyboard::isKeyPressed(Keyboard::Left)) {
					glowa.setPosition(Vector2f(g_x -16, g_y));

i okej, o ile głowa węża porusza się o te 16 pixeli, tak moje "owocki" które wąż ma jeść pojawiają się jak im kazałem - czyli losowo. Specyfika getPosition jest taka, że zwraca koordynaty x i y obiektu, albo raczej, pixela tego obiektu z prawego górnego rogu - co uniemożliwia mi ( po prostu nie wiem jak to ominąć) utworzenie kolizji jakże niezbędnej w tej grze.

		if (glowa.getPosition().x  == owoc.getPosition().x  && glowa.getPosition().y ==owoc.getPosition().y) {
					owoc.setPosition(Vector2f(rand()  % wymiar_x, rand()  % wymiar_x));
					
					punkty += 1;
				}

   to oczywiscie działa raz na ruski rok jak uda się zespawnić owoc tak, że gdy najadę na niego wężem to górne prawe narożniki się stykną - i bum, będzie kolizja.

 

Czy ktoś wesprze podpowiedzią?

Utworzenie "gridu" po którym spawnić się będą owoce i poruszać wąż żeby mogły spokojnie ze sobą kolidować

LUB 

inny sposób na kolizję, tak, by następowała ona nawet po zetknięciu się chociażby krawędzi 2 obiektów

 

w miarę łopatologicznie... do programowania mam zamiar przysiąść dopiero w wakacje, więc skomplikowaną terminologią na razie prosiłbym mnie nie traktować <3 

167161466687770313241.png

Opublikowano

Zamiast losować x,y czyli dokładne koordy losuj kratkę, czyli "rand % ilośc_kratek". Jak wylosowaną kratkę pomnożysz razy jej szerokość to "owoce" zawsze będą ustawione w siatce. Jeszcze możesz zastosować układ nierówności, czyli warunki które sprawdzą czy wąż jest najdalej tu_szerokość_owocu na lewo od narożnika (który znasz) i najdalej tyle samo w dół od tegoż narożnika. Mam nadzieję, że Cię zrozumiałem, bo albo późno, albo post dosyć pokrętny.

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano

@MarcinWieczorekW sumie dość późno to pisałem, wybacz.

Mój problem polega na tym, że nie wiem jak okno podzielić na takie kratki (taak, czasem ciężko u mnie z myśleniem xd), stąd też nie wiem jak zrobić to co sugerujesz - losowanie jednej z kratek w której ma pojawić się owoc

167161466687770313241.png

Opublikowano

Przecież Ci napisałem.

Cytat

"rand % ilośc_kratek". Jak wylosowaną kratkę pomnożysz razy jej szerokość to "owoce" zawsze będą ustawione w siatce

rand % ilość_kratek zwróci Ci zawsze liczbę od 0 do ilości kratek - 1 z tego co pamiętam. % to modulo oczywiście.

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano

Tak jak mówiłem, czasem mam problemy z myśleniem :)

Dobra burza mózgów co robię źle / co jest popsute.

 

Font font;
font.setString(...)

 

Dupa, nie widzi metody.

 

w include mam 

#include "SFML\Graphics.hpp"
#include "SFML\Main.hpp"
#include "SFML\Window.hpp"

więc ...? ;__ ;

ogólnie wygląda to tak, jakby ani klasy font ani text nie miały metod?

167161466687770313241.png

Opublikowano

O ile font jest, to setString jakoś nie widzę.

Cytat

for file in `pacman -Qlq sfml|grep include`;do grep -Hn $file -e "setString" -C 10; done

SFML 2.4.2

 

Z tym wcześniej sobie poradziłeś czy nie?

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano

Oh, jak zwykle musialem cos namieszac. Chodzilo mi akurat o klasę Text, a w przykładzie napisałem font...

Tak czy tak - w kodzie 

Text licznik;
	licznik.setString(tekst);

gdzie tekst jest stałą typu string, Visual podswietla mi krope i nazwę obiektu twierdząc, że "this declaration has no storage class or type specifier"

 

Nah, po prostu robiłem to w ciele klasy :') Brawo ja.

Wychodzi pisanie strukturalne "na raty"...

 

nowy problem. Wyświetlanie zmiennej w SFML?   // rozwiązany. std::to_string(punkty);     

167161466687770313241.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...