Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Delphi: Hinzufügen von Prozeduren

The MOD / 20 Antworten / Flachansicht Nickles

hi,


wie füge ich eine Prozedur ein, oder schalte sie hinzu, wenn bestimmte Bedingungen erfüllt sind???


NICHT: IF and then...

bei Antwort benachrichtigen
Andreas42 The MOD „oh, hätte besser noch sagen soll, dass ich ein relativer anfänger bin!!!...“
Optionen

Hi!

Tapeworm!

So nannte sich das erste Spiel für das uralte Atari VCS, dass mein Bruder (und ich) hatten. :-)

Schöner Klassiker, ich glaube aber, das ist nich so trivial, wie es aussieht. Was hast du denn dazu schon programmiert?
Ich verstehe jetzt, warum du nach "ohne IF" fragst, wenn man alle Elemente des Wurms (oder Mauer=Tron; oder der Schlange) in Variablen abspeichert und dann bei jedem Zug vergleichen will, gibt das eine IF-Orgie. ;-)

Es wird verscheide Wege geben, dass zu programmieren, man müsste sich einmal festlegen und dann mit dem Ansatz weitermachen.

Ich würde das Spielfeld auf eine feste Feldanzahl begrenzen. Z.B. auf 80*25 Zeichen (klassischer Textbildschirm).
Das hat den Vorteil, dass man das Spielfeld in einem recht kleinen Array unterbringen kann.

Etwa in der Art (Vorsicht, ist so runtergetippt, ohne es compiliert zu haben):

Ich schlage es erstmal "klassisch" vor, ohne Objekte und Klassen.

type
sfeldtype=record
art:byte;
richtung:byte;
end;

sfeld = array[1..80, 1..25] of sfeldtype;

Die Bedeutung der beiden Variablen in sfeldtype (Spielfeldtyp):

art:
Die Art des Feldes. Ein normales freies Feld, dass betreten werden kann, wäre z.B. 0 (Null), ein Teil der Schlange wäre 1 und eine Frucht (die die Schlange verlängert) z.B. 2.

richtung:
Ein Kniff, um die Bewegung der Schlnage zu erleichern. Hier wird abgelegt, in welche Richtung das nächste Teil der Schlange liegt:
1: Oben
2: Rechts
3: Unten
4: Links

Betrachtet vom Ende der Schlange.

Man braucht damit nur zwei Stellen der Schlnage zu kenne (bzw. in Variablen zu speichern): den Kopf (Anfang) und das Ende.

Wenn sich die Schlnage ein Feld weiterbewegt, dann hat man den alten Kopf (z.B. auf Punkt 60,15) und die Richtung (4: Links). Also prüft man Punkt 59,15 und wenn dort art=0 ist, dann wird dort art := 1 (schlangenelement) und richtung := 0. Im alten Kopf (6ß,15) muss richtung := 4 werden.
Das Ende der Schlange wäre z.B. auf 55,22. Dort haben wir eine richtung=2, damit liegt das nächste Element der Scglange auf Feld 56,22. Das machen wir zum neuen Ende der Schlanmge und setzen im alten Ende art := 0 und richtung := 0.

Wenn die Schlange frisst (länger wird), dann verzichten wir einfach auf das weiterziehen am Ende.

Schreib mal, was du dir ausgedacht hast.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen