helby Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 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. Zitieren
twegele Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 Wie sind deine Anfänge? Ich glaube dir wird niemand eine komplette Lösung posten. Gruß Zitieren
helby Geschrieben 12. Februar 2007 Autor Geschrieben 12. Februar 2007 ich habe auch nicht drum gebeten. einfach nur einen ansatz, damit ich weiterkomme. Zitieren
deano Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 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 Zitieren
helby Geschrieben 12. Februar 2007 Autor Geschrieben 12. Februar 2007 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?? Zitieren
deano Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 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!) Zitieren
helby Geschrieben 16. Februar 2007 Autor Geschrieben 16. Februar 2007 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; } Zitieren
Wodar Hospur Geschrieben 23. Februar 2007 Geschrieben 23. Februar 2007 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; } Zitieren
Empfohlene Beiträge
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.