c++ Snake Problem mit Kurve

Robin92

Mitglied
Hallo,

ich wollte mal Snake Programieren, bis jetzt geht auch alles wunderbar, das einzigste Problem ist wenn die Schlanke um 2 Kurve gleichzeitig muss.
Zurzeit hab ich nur Links und Unten in dem code, da ich erst das Problem lösen möchte.



ich möchte keine Headerdatein aus dem Netz verwenden, also nur Boardmittel.

Hier mein Code:

Code:
#include <iostream>
#include <conio.h>
#include <windows.h>


using namespace std;

int main()
{
//----------yy--xx---
char  array[10][20];
int i=0;
int j=0;
int taste=0;
int zaehler=0;
int del=0;
int test=0;
int test3=0;
int test2=0;
int taste2=0;
int xsnake=0;
int ysnake=2;
int kurve=0;
int segment0x=0;
int segment1x=1;
int segment2x=2;
int segment3x=3;
int segment0y=5;
int segment1y=5;
int segment2y=5;
int segment3y=5;



for(i=0; i<10; i++)
{
	for(j=0; j<20; j++)
	{
	array[i][j]='X';
	}
}

//---Schlange--

//-------------


for(;;zaehler++)
{
if(kbhit())
{
test=0;
getch();
taste=getch();
	while(test<1)
	{
	taste2=taste;
	test=1;
	}
}




if(taste2==80)
{


kurve=segment3x;
segment3y++;


		if(segment0x!=kurve)
		{
		segment0x++;
		}
		else
		{
		segment0y++;
		}
		if(segment1x!=kurve)
		{
		segment1x++;
		}
		else
		{
		segment1y++;
		}
		if(segment2x!=kurve)
		{
		segment2x++;
		}
		else
		{
		segment2y++;
		}

	if(segment0x==kurve)
	{
	ysnake=1;
	}
test2=0;


}
else if(taste2==77) //--Rechts--
{
kurve=segment3y;
segment3x++;



	    if(segment0y!=kurve)
		{
		segment0y++;
		}
		else
		{
		segment0x++;
		}
		if(segment1y!=kurve)
		{
		segment1y++;
		}
		else
		{
		segment1x++;
		}
		if(segment2y!=kurve)
		{
		segment2y++;
		}
		else
		{
		segment2x++;
		}


	if(segment0y==kurve)
	{
	ysnake=2;
	}
test3=0;
}
else
{
segment0x++;
segment1x++;
segment2x++;
segment3x++;
}

if(segment0x==20)
{
segment0x=0;
}	
if(segment1x==20)
{
segment1x=0;
}
if(segment2x==20)
{
segment2x=0;
}
if(segment3x==20)
{
segment3x=0;
}


if(segment0y==10)
{
segment0y=0;
}	
if(segment1y==10)
{
segment1y=0;
}
if(segment2y==10)
{
segment2y=0;
}
if(segment3y==10)
{
segment3y=0;
}


if(ysnake==1)
{
while(test2<1)
{
del=segment0x;
del--;
array[segment0y][del]=' ';
test2=1;
}
//-------------------------------------------
del=segment0y;
del--;
array[del][segment0x]=' ';
del=segment1y;
del=del--;
array[del][segment1x]=' ';
del=segment2y;
del=del--;
array[del][segment2x]=' ';
del=segment3y;
del=del--;
array[del][segment3x]=' ';

	if(segment0y==0)
	{
	array[9][segment0x]=' ';
	}

}
else if(ysnake=2)
{
while(test3<1)
{
del=segment0y;
del--;
array[del][segment0x]=' ';
test3=1;
}

//-----------------------------------
del=segment0x;
del--;
array[segment0y][del]=' ';
del=segment1x;
del=del--;
array[segment1y][del]=' ';
del=segment2x;
del=del--;
array[segment2y][del]=' ';
del=segment3x;
del=del--;
array[segment3y][del]=' ';


	if(segment0x==0)
	{
	array[segment0y][19]=' ';
	}
}
//----------------------------------------
array[segment0y][segment0x]=(char)219;
array[segment1y][segment1x]=(char)219;
array[segment2y][segment2x]=(char)219;
array[segment3y][segment3x]=(char)219;
//----------------------------------------

array[6][10]='M';

for(i=0; i<10; i++)
{
	for(j=0; j<20; j++)
	{
	cout << array[i][j];
	}
	cout << endl;
}

Sleep(50);
system("cls");
}
return 0;
}
 
Um Himmels Willen :)

Mach aus der Schlange auch ein Array. Jedes Segment hat eine Position. Anhand dem aktuellen Array-Index und dem vorhergehenden Segment kannst du die Richtung bestimmen. Damit sind dann auch Kurven bei jedem Segment möglich.
 
wie meinst du das?


also wenn die schlange 5 elemente lang sein kann dann ein Char array[5][5]

und das array dann in dem Spielfeld-Array ausgeben?
 
wenn du c++ verwendest benutze doch Klassen, dannwürd das ganze übersichtlicher und mein Rat ist eine verkettete Liste (ist das sinnvollste).
 

Neue Beiträge

Zurück