Fehlerhaftes Snake! hoffentlich nicht mehr lange ;-)



  • 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?


Anmelden zum Antworten