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
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
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;
}
}