Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Snake in c++

Empfohlene Antworten

Veröffentlicht

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.

Wie sind deine Anfänge?

Ich glaube dir wird niemand eine komplette Lösung posten.

Gruß

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 :)

  • Autor

eine frage: ich habe ein array mit koordinaten [x][y] erzeugt, x,y zufallswerte gezogen und will den futterpunkt * an der koordinate ausgeben wie macht man das??

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!)

  • Autor

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;

}

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;

}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.