"Ruch" węża w grze
Ostatnio zmodyfikowano 2010-08-03 08:04
Savail Temat założony przez niniejszego użytkownika |
"Ruch" węża w grze » 2010-08-02 08:16:53 Witam Ostatnio postanowilem sprawdzic sie czy umiem juz napisac prostego weza w konsoli. Troche dlugo nad tym myslalem i szukalem w google bo nie zawsze znalem odpowiednie funkcje. Mam jeszcze 1 problem. Nie wiem jaką metodą sprawić bo ciało węża poruszało się za głową. Próbowałem kawalki ciala umieszczac w tablicy i wyswietlac petla for ale to nic nie dawalo. Bede ogormnie wdzieczny za pomoc. |
|
lenrokskate |
» 2010-08-02 09:37:34 tak jak powiedziałeś tablice i pętle for - tylko teraz kombinuj jak je poprawnie napisać i masz węża |
|
Razi |
» 2010-08-02 10:35:57 Ja bym użył vector, bo ma metodę du usuwania pierwszego/ostatniego elementu i dodawania na końcu/początku, co przy wężu jest wyjątkowo przydatne. Przy każdym kroku usuwasz jeden z końca/początku, a na drugi koniec dodajesz współrzędne nowego kwadrata.
A jeżeli to chcesz zrobić konsolowe, to albo użyć jakiejś biblioteki do "rysowania" konsolowego (np. ncurses), albo samemu napisać coś podobnego, oparte na dwuwymiarowej tablicy charów i podczas "rysowania" zastępować komórki tej tablicy, a potem żeby wyświetlić, to jedna pętla for do wyświetlenia linii po linii. |
|
michalp |
» 2010-08-02 11:20:33 Jeżeli chcesz dodawać i usuwać elementy tak często to lepiej zamiast std::vector skorzystaj z std::list. Natomiast wystarczy tylko przejść po wszystkich elementach i zmienić im odpowiednio współrzędne. |
|
Savail Temat założony przez niniejszego użytkownika |
» 2010-08-02 15:07:50 aha, czyli rozumiem ze metoda list bylaby najwydajniejsza... Niestety nie za bardzo wiem jak sie do tego zabrac. Co mam dodawac i usuwac do listy, wspolrzedne ciala czy odrazu gotowe kawalki ciala? I powinienem utworzyc tablice obiektow wlasnej klasy? Czy nie jest potrzebna? Troche ciezko znalesc cos w internacie o std::list po polsku wiec prosze o wyrozumialosc i dzieki za nakierowanie mnie |
|
Bartaz |
» 2010-08-02 22:25:23 |
|
Razi |
» 2010-08-02 23:13:36 std::listAngielski wypadałoby znać.. Najważniejsze: Tworzysz strukturę: Tworzysz listę: std::list < point > punkty;
Dodajesz do listy pierwsze elementy: punkty.push_front( punkt1 ); punkty.push_front( punkt3 ); punkty.push_front( punkt2 );
...przy każdym kroku: punkty.pop_back(); punkty.push_front( nowy_punkt );
A przy rysowaniu: list < punkt >::iterator it; for( it = punkty.begin(); it != punkty.end(); it++ ) { draw( * punkt.x, * punkt.y ); }
mogłem się gdzieś pomylić. |
|
Savail Temat założony przez niniejszego użytkownika |
» 2010-08-03 08:04:20 Dzieki, wasze posty napewno mi sie przydadza. Jak mi sie uda zrobic weza to zaprezentuje na forum :p |
|
« 1 » |