Fehlerhaftes Snake! hoffentlich nicht mehr lange ;-)
-
Habs im Mom. soweit:
Jetzt bräuchte ich noch folgendes:
1. Wie kann ich das Spiel beenden, wenn man sich selber frisst?
2. Brauche ich bitte kleine Tipps, wegen dem "Futter".
3. Kann ich einfach, wenn sie nach links läuft, wieder nach rechts lenken.Müsste es bis Mittwoch schaffen.
Bitte helft mir so, dass auch ich es schaffe
SEITE 3
-
hmm so ... also deine Header stimmen alle nicht. Und du solltest dir überlegen, ob du wirklich Sleep nutzen willst, oder dir da nicht was eigenes schreiben willst, denn alleine diese Funktion braucht den Header windows.h. Desweiteren scheinst du eine ImprovedConsole zu verwenden. Standard C++ kennt gotoxy usw nicht.
std::cout anstelle von cout ... usw ..
aja die korrekten Header heißen:
#include <iostream> #include <windows.h> // NUR FÜR Sleep(); ... nicht sinnvoll! #include <conio.h> // Darin ist gotoxy nicht enthalten! Scheinst conioex.h zu nutzen....
-
(D)Evil schrieb:
hmm so ... also deine Header stimmen alle nicht. Und du solltest dir überlegen, ob du wirklich Sleep nutzen willst, oder dir da nicht was eigenes schreiben willst, denn alleine diese Funktion braucht den Header windows.h. Desweiteren scheinst du eine ImprovedConsole zu verwenden. Standard C++ kennt gotoxy usw nicht.
std::cout anstelle von cout ... usw ..
aja die korrekten Header heißen:
#include <iostream> #include <windows.h> // NUR FÜR Sleep(); ... nicht sinnvoll! #include <conio.h> // Darin ist gotoxy nicht enthalten! Scheinst conioex.h zu nutzen....
Danke erstmal.
Wir haben von unserem Lehrer eine Vorlage bekommen, in dem diese vorkommen:
#include <iostream.h> #include <conio.h> #include <stdio.h> #include <iomanip.h> #include <dos.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <vcl.h> #include <ctime.h> #pragma hdrstop #pragma argsusedEr sagte, dass wir das immer so nehmen sollen, da bei dieser Vorlage anscheinend nichts wichtiges fehlt.
Das mit dem std: lernen wir erst, das kapier ich noch überhaupt nicht...
Aber das ist Nebensächlich. bräuchte bitte diese Hilfen:
1. Wie kann ich das Spiel beenden, wenn man sich selber frisst?
2. Brauche ich bitte kleine Tipps, wegen dem "Futter".
3. Kann ich einfach, wenn sie nach links läuft, wieder nach rechts lenken.
-
Nein das ist nicht nebensächlich. Das eine ist korrekt und deins ist so nicht Standard konform bzw falsch.
Und wäre schon ganz gut das du uns sagst woher du die Punktion gotoxy nimmst usw. damit wir wissen was wir brauchen um es zu testen.
-
(D)Evil schrieb:
Nein das ist nicht nebensächlich. Das eine ist korrekt und deins ist so nicht Standard konform bzw falsch.
Und wäre schon ganz gut das du uns sagst woher du die Punktion gotoxy nimmst usw. damit wir wissen was wir brauchen um es zu testen.
Wie meinst du das jetzt genau?

-
Ich habe jetzt alles getestet, welche include - Dateien ich nicht brauche.
Ich hoffe, ich habe das richtig gemacht!Übrig bleiben würden nur diese:
#include <conio.h> #include <iomanip.h>Ich hoffe, dass ihr das braucht?
Vielleicht braucht ihr auch folgende Angaben:
Ich programmiere in Borland 5 mit der Konsole.
Ich freue mich auf Antworten !
-
Darum ging es nicht. Es ging darum, dass iostream**.h** veraltet ist und nicht mehr genutzt werden soll. Da heiszt jetzt einfach nur noch iostream, also #include<iostream> (ohne .h) gleiches gilt für string, time (wird ctime glaub ich) und ctime (wird cctime, bin mir aber nicht sicher)
-
<ctime.h> ist kompletter Müll, es gibt nur <time.h> (C-Version) und <ctime> (C++-Version). Zu den übrigen Headern: <iostream> wurde ja schon erwähnt, das selbe gilt für <iomanip>, <cstdlib> und <cstring> (OK, von den C-Headern könntest du beide Varianten nehmen, aber die C-Version ist bei C++-Programmierern (hmm) unbeliebt).
Zu deinen Fragen:
Stell dein Spielfeld intern als zweidimensionales char-Array dar und die Schlange als std::list<std::pair<int,int> > - bei jedem Schritt prüfst du nach, was vor dem aktuellen Kopffeld (in der gerade gültigen Richtung) für ein Wert steht, bei '#' (Schlange), '|' '-' (Wand) bringst du die Game-Over-Meldung (@Frage 1), bei '*' (Futter) setzt du ein neues Stück Futter für die Schlange, erhöhst den Punktestand und lässt sie etwas wachsen (@Frage2). Nach der Überprüfung hängst du die Koordinanten des kontrollierten Feldes ans Kopfende (push_front()) an, kürzt eventuell die Schlange am Schwanz (if(snake.size()>length)snake.pop_back();) und zeichnest dein Spielfeld neu.(@Frage3: Bei einer 180°-Drehung ist "vor" dem Kopf das erste Halsfeld. Ohne Sonderbehandlung wird die Kollisionsabfrage (s.o.)zuschlagen und die Schlange stirbt)
Und bevor du nochmal die selben Fragen stellst, lies dir diesen Beitrag bitte durch und versuch ihn zu verstehen. Andernfalls...
-
CStoll schrieb:
bei '*' (Futter) setzt du ein neues Stück Futter für die Schlange, erhöhst den Punktestand und lässt sie etwas wachsen.
Danke! Wie setze ich die Punkte zufällig auf einen Punkt.
Das muss ich irgenwie mit randomize machen oder?
-
srand() (Zufallsgenerator initialisieren) und rand() (Zufallswerte herausbekommen). Für Details kannst du gerne in unser Magazin schauen, dort steht ein brauchbarer Artikel von Marc++us.
-
Hallo wieder einmal

Habs ein bisschen erweitert
Jetzt bruche ich noch folgende Sachen:
Wie kann ich, nachdem die Schlange einen Punkt gefressen hat, einen neuen setzen?
Wie kann ich das Spiel abbrechen, wenn sie sich selber frisst?
Wenn ich nach z.B. links lenke, kann ich wieder nach rechts lenken, und sie dreht um...Das wär es...
Ich hoffe, dass es jetzt so passt, das mit den Headern?
Mein Programm schreibe ich zum Schluss professioneller, wenn alles fertig ist.
Hier das Programm, müsste es bis morgen fertig bringen:Gelöscht
-
Punkt 2 hat dir CStoll doch jetzt schon x Mal geschrieben oder nicht?
- Überprüfen des Punktes auf dem die Schlange als nächstes erscheinen würde. Wenn es ein Teil der Schlange ist-> gameover.
Und das mit dem links-rechts lenken glaub ich auch.
-
@Fried: Ich wiederhole mich nicht nochmal (und dadurch, daß du deine Fragen etwas umformulierst, wird es auch nicht besser). Lern Lesen!!
-
Danke euch allen, die mir wirklich geholfen haben, habs jetzt selber geschafft...
Das mit den Includes erde ich nie verstehen, da es einwandfrei funktioniert...
Egal. Thema kann geschlossen werden.PS.: In einem anderen Forum hat sich wegen den Includes keiner beschwert, und da kam sofort eine passende Antwort, wenn auch etwas spät.
Trotzdem nochmal Danke!
-
Hallo
Friedfischer schrieb:
PS.: In einem anderen Forum hat sich wegen den Includes keiner beschwert, und da kam sofort eine passende Antwort, wenn auch etwas spät.
Trotzdem nochmal Danke!
Was ist denn daran gut? Du hast Header eingebunden, die 1998!!! ihre Gültigkeit verloren haben und durch neue ersetzt wurden. Das haben wir dir gesagt. Das ist nicht schlecht, sondern gut, weil damit dein Programm standardkonformer wird.
chrische
-
Wann soll eigentlich Rollout sein? Benötigt man Schulungen für das Programm oder reicht das Handbuch?