Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Snake (das Spiel) (https://www.delphipraxis.net/22871-snake-das-spiel.html)

Jens Schumann 25. Mai 2004 14:39

Re: Snake (das Spiel)
 
Zitat:

Zitat von Pr0g
Zu 2: Was könnte ich mit den globalen Variablen denn machen? Schließlich werden sie ja gebraucht.

Die werden gebraucht das stimmt. Du solltest Sie unter private als Formular Member deklarieren. Ist OOP mäßiger.

mirage228 25. Mai 2004 14:41

Re: Snake (das Spiel)
 
Ahja, was mir noch auffiel: Du benennst deine Prozeduren teils in Englisch und teils in Deutsch. Also entweder ganz oder gar nicht :shock:

mfG
mirage228

neolithos 25. Mai 2004 14:44

Re: Snake (das Spiel)
 
Zitat:

Zitat von 70UR157
...zum Thema "globale Variablen vermeiden": gibts denn in Object Pascal lokale Variablen mit globaler Lebensdauer? (C/C++ Stichwort "static")

mfg

Neue Frage neuer Thread!

NEIN! Da benötigt man eine Globale Variable! Den Zugriff beschränkt man mit der Position.


Delphi-Quellcode:
interface

...

implementation

... viel code ... << hier ist die Variable dwStatic NICHT sichtbar

var dwStatic : Cardinal = 10;

procedure Func;
begin
  Inc(dwStatic);
  Writeln(dwStatic);
end;

... viel code ... << hier ist die Variable dwStatic aber immernoch sichtbar

end.

Jens Schumann 25. Mai 2004 14:49

Re: Snake (das Spiel)
 
Wenn man gegen den rechten Rand läuft kommt die Meldung rechter Rand berührt und anschließend die Meldnung Sie haben sich selbst gebissen :shock:

Pr0g 25. Mai 2004 14:50

Re: Snake (das Spiel)
 
Zu 3: Meinst du mit den Messageboxen, dass ich bspw. in "calc_snake" nur zwei Variablen setze und dann nach dem Aufruf der Prozedur im Timer je nach Variablenwert die Messagebox anzeigen lasse?

nailor 25. Mai 2004 15:12

Re: Snake (das Spiel)
 
um pr0g mal ein wenig in schutz zu nehmen:

ich finde das tutorial ziemlich gut, weil es sehr ausführlich und sehr verständlich ist.

zu den einzelnen punkten mal ein paar sachen:

Indizes --> nicht wirklich schlimm und sehr einfach zu korrigieren
procedure (private) --> in einem anfängertutorial absolut unerheblich. und wer weiß, ob man nicht vielleicht irgendann mal davon ableiten will? alles panisch in privates zu bauen ist kappes, weil so sachen wie private zum schutz des programmieres vor selbstgemachten bugs dienen, nicht als um styleguides zu rechtfertigen
Globale Variablen --> nicht schön. aber das ist a) ein anfängertutorial und b) ist das in 10 sek per copy&past im private der form
Berechnung ist mit der Benutzeroberfläche --> a) anfängertutorial. b) man kann wie gesagt wegen jedem scheiss rumheulen, oder es auch lassen
Wenn man lange genug spielt könnte map[i,j] evt. den gültigen Bereich eines Integers verlassen !!! --> schon klar. zur seite? oder in welche richtung?
Englisch und teils in Deutsch --> ja uuuund???
Rand berührt und anschließend die Meldnung Sie haben sich selbst gebissen --> wow. ein fehler. aber das dürfte zu fixen sein

hugh, gereizter nailor hat gesprochen

naja, hab mich ein wenig aifgeregt. aber man muss ja nicht alles schlechtmachen

Pr0g 25. Mai 2004 15:21

Re: Snake (das Spiel)
 
Ich habe den Code nun angepasst und auch den Fehler mit den zwei Messageboxen behoben, wenn man den rechten Rand berührt.

phlux 25. Mai 2004 15:23

Re: Snake (das Spiel)
 
Hmm, mal abgesehen von den Fehlern die andere hier bemängeln (mich hätten sie nicht gestört, ich hätt dein Tutorial wenn eh nur als Denkanstoss genommen) würd ich sagen das ich deine Anleitung recht gut find und mir endlich mal ein Blick "Hinter die Kulissen" gewährt hat, wie Snake eigentlich funktioniert :thumb: :thumb:

neolithos 25. Mai 2004 15:29

Re: Snake (das Spiel)
 
Mal zur Systemmathik. Denkanstoß:

Ich habe das mal mit einem Ring-Buffer gelöst:

Delphi-Quellcode:
type
  TSnake = record
    aBody : array [0..ciMaxBuffer] of TPoint;
    iHead,         // Index des Kopfelementes
    iGrow,         // Um wieviel elemente soll die Schlange noch wachsen
    iLen : Integer; // Länge der Schlange
  end;
Ich hoffe das reicht.

EDIT: iGrow hinzugefügt

Pr0g 25. Mai 2004 15:46

Re: Snake (das Spiel)
 
Vielleicht ist es einigen nicht ganz ersichtlich. Es ging mehr um das Grundprinzip von Snake. Die Codes sind für Anfänger beigefügt, die das Erklärte nicht umsetzen können. Wenn nun bspw. noch ein Record im Code genutzt wird, dann müsste dies auch wieder erklärt werden und das war eigentlich nicht meine Absicht. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr.
Seite 2 von 6     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz