Zum Inhalt springen

Snake in c++


helby

Empfohlene Beiträge

Hallo zusammen, ich habe als Projekt in der Schule die Aufgabe Snake zu programmieren. Da ich allerdings ein totaler Programmieranfänger bin stehe im augenblick extrem auf der leitung was mein PAP angeht. Könnte mir jemand helfen wie ich anfangen soll?

Aufgabe:

Entwickeln Sie ein Computerspiel nach dem Prinzip von "Snake". Der

Sinn des Spiels liegt darin, mit der Schlange Punkte einzusammeln damit sie

wächst. Allerdings darf die Schlange sich selbst nicht berühren. Die Schlange wird maximal 16 Punkte lang, dann kommt man ins nächste Level. Dadurch steigt der Schwierigkeitsgrad. Die Größe des Feldes soll variabel sein (zwischen ca. 20 bis 200 Elemente). Es sollen keine Ränder um das Feld sein, d.h. Schlange kommt auf der anderen Seite wieder rein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich würde das so machen:

2 char arrays anlegen

in einem werden die punkte dargestellt

bspw. X für die schlange

O für die items

das 2. array ist für die bewegungen da. w für nach oben a für links s für runter und d für rechts.

das is wichtig für die nächsten schritte...

eine schleife für die bewegung.

am anfang die coursor-tasten abfragen (wg. laufrichtung).

danach gehst du an das letzte teil der schlange (is von vorteil wenn man sich das immer irgendwo speichert)

das letzte stück der schlange wird gelöscht, deren bewegungsfeld im array auch. dann läufst du mit ner schleife im bewegungsarray bis an den kopf der schlange und fügst den letzten punkt vorn wieder an.

das wär jetzt mein vorschlag :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

du setzt ihn

array1[x][y] = '*'.

und dann malst du das HUD in der ?console? auf:

i = j = 0;

while (i < laenge_x)

{

while (j < laenge_y)

{

printf("%c",array1[j]);

j++;

}

i++;

}

so malt der dir die schlange und die items auf wenn sie im array1 liegen

(es lohnt sich alle felder des arrays mit leerzeichen zu initalisieren!)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier habe ich versucht das Spielfeld auszugeben. Wir sollen von der Aufgabenstellung her Klassen,Methoden usw. benutzen. Es werden 2 Fehlermeldungen aufgeführt mit denen ich nix anzufangen weiß. Könnte mir jemand helfen??

Quelltext mit Fehlermeldung:

int Feld[50][50];//Das Spielfeld

class Feld

{

public: int Feld_x,Feld_y;

Berechne_Feld(int Feldgroesse)

{// error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

for (Feld_x=0;Feld_x<Feldgroesse;Feld_x++)

{

for (Feld_y=0;Feld_y<Feldgroesse;Feld_y++)

{

if (Feld_x==0)

{cout <<"x0";}

else if (Feld_x==(Feldgroesse-1))

{cout <<"x49";}

else if (Feld_y==0)

{cout <<"y0";}

else if (Feld_y==(Feldgroesse-1))

{cout <<"y49";}

else {cout <<" ";}

if (Feld_y==(Feldgroesse-1))

{cout<<"\n";}

if (Feld_x==(Feldgroesse-1))

{cout<<"\n";}

}

}

}//warning C4183: 'Berechne_Feld': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen

};

int main()

{

int a;

Feld.Berechne_Feld(50); //error C2228: Links von ".Berechne_Feld" muss sich eine Klasse/Struktur/Union befinden.

return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, also ich würde dir raten ein Buch zur Hand zunehmen, denn du scheinst manche Syntaxdinge falsch verstanden zu haben.

Berechne_Feld(int Feldgroesse) //FALSCH

void Berechne_Feld(int Feldgroesse) // du musst den rückgabetypen der methode definieren, in deinem fall void

{

for (Feld_x=0;Feld_x<Feldgroesse;Feld_x++)

{

for (Feld_y=0;Feld_y<Feldgroesse;Feld_y++)

{

if (Feld_x==0)

{cout <<"x0";}

else if (Feld_x==(Feldgroesse-1))

{cout <<"x49";}

else if (Feld_y==0)

{cout <<"y0";}

else if (Feld_y==(Feldgroesse-1))

{cout <<"y49";}

else {cout <<" ";}

if (Feld_y==(Feldgroesse-1))

{cout<<"\n";}

if (Feld_x==(Feldgroesse-1))

{cout<<"\n";}

}

}

}

};

int main()

{

int a; // macht keinen Sinn, wofür?

Feld.Berechne_Feld(50); // Falsch

Feld bla;

bla.Berechne_Feld(50); //Du musst Klassen die du verwenden willst, wenn sie nicht statisch sind instanzieren und dann auf die Instanz zugreifen

return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...