C++ Snake Tail - Pomoć

poruka: 2
|
čitano: 684
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
7 godina
neaktivan
offline
C++ Snake Tail - Pomoć

Zdravo :D

 

Poceo sam iz zezancije praviti igricu "Snake" pa sam zapeo kod dijela gdje se povecava rep.

Da li bi mi neko mogao taj dio uraditi i na neki nacin objasniti.

Evo kod: https://pastebin.com/Dv6rS3fy

 

Hvala unaprijed :D

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: C++ Snake Tail - Pomoć
Suttix kaže...

Zdravo :D

 

Poceo sam iz zezancije praviti igricu "Snake" pa sam zapeo kod dijela gdje se povecava rep.

Da li bi mi neko mogao taj dio uraditi i na neki nacin objasniti.

Evo kod: https://pastebin.com/Dv6rS3fy

 

Hvala unaprijed :D

 Pogledaj kako sam riješio kretanje u donjem metodu, kod je u C#.

Dakle, elemente sam stavio u listu i kod kretanja tu listu od kraja vrtio u petlji, tako svaki element dobije koordinate onog ispred njega, a prvi element prilagodi koordinate ovisno o smjeru kretanja.

Kolizija je u biti ista stvar, u ovakav metod ubaciš da se zapamte koordinate zadnjeg elementa, nakon toga izvrtiš pomak u petlji, ukoliko prvi element naiđe na koliziju u listu ubaciš element i dodaš mu one koordinate koje si zapamtio, odnosno koordinate na kojem se nalazio zadnji element prije kretanja.

Umjesto liste u C++ možeš uzeti vector.

 

   private void MovePlayer()
        {
            for(int i=Snake.Count-1; i>=0; i--)
            {
                if(i==0)
                {
                    switch(Settings.direction)
                    {
                        case Settings.Direction.Right:
                            Snake[i].X++;
                            break;
                        case Settings.Direction.Left:
                            Snake[i].X--;
                            break;
                        case Settings.Direction.Up:
                            Snake[i].Y--;
                            break;
                        case Settings.Direction.Down:
                            Snake[i].Y++;
                            break;
                    }
                }
                else
                {
                    Snake[i].X = Snake[i - 1].X;
                    Snake[i].Y = Snake[i - 1].Y;
                }
            }

Poruka je uređivana zadnji put pet 26.5.2017 16:48 (Floki).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice