Hallo Liebe Porno ehhhh Delphi-Freunde!
Gut aufgepasst! Extase-Production präsentiert, den neuen Knüller: „Der mit dem grünen Ball“!
Ja ihr habt richtig gelesen.
Mir wurde nämlich zugetragen, dass mein vorheriges Tutorial nicht den Erwartungen der meisten Delphianer zu Genüge tat, weshalb ich diese kleine Tutorialreihe starten will.
Hierbei werde ich jeden Schritt so detailliert wie ihr gerne haben würdet schildern und erkären.
Das Programm wird mit Sicherheit kein architektonisches Meisterwerk, aber seinen hehren Zweck wird es allemal erfüllen!
Zum Start erst mal eine kleine Geschichte wie es dazu kam:
Es war ein langer, zehrender Sonntag Abend. Meine Mitbewohner hatten das Haus schon lange verlassen, so dass ich einsam und alleine der gähnenden Ruhe ausgesetzt war.
Während ich so da saß und Löscher in die Luft zu starren versuchte, schoss mir ein Gedanke, scharf wie eine Rasierklinge, quer durch den Kopf: Wieso nicht mal einen kleinen Programmier-Speedrun hinlegen. Ein Pong-Spiel sollte es werden. Und mit der Geburt jener Idee begab ich mich umgehend an den heimischen Rechner um los zu legen.
Nach ca. einer Stunde stand das Grundgerüst, nach etwa 3 Stunden waren die gröbsten Verfeinerungsarbeiten abgeschlossen.
Die „fertige“ Version habe ich mal in den Anhang geschoben. Da könnt ihr sehen wo die Reise hin gehen soll.
Aber lasst uns nicht all zu lange um den heißen Brei herum reden, sondern einfach mal anfangen.
Erste Überlegung: Was brauchen wir eigentlich? Brainstorming ergibt:
Zitat: |
einen Ball
einen Schläger
noch einen Schläger |
Das sieht doch schon mal recht überschaubar aus.
Da wir nur ein sehr kleines Spielchen programmieren wollen, lohnt es sich nicht irgendeine OpenGL-Grafik-Nasa-Technologie oder sonst was zu verwenden. Wir können bei drei dar zu stellenden Objekten getrost auf die Delphi-VCL zurück greifen.
Übrigens: Ich verwende die Delphi-Version 7! Keine Ahnung wie das bei anderen Versionen alles so aussieht, ich habe bisher immer nur diese verwendet.
Wir wollen uns nun der Darstellung des Balles widmen:
Hierfür würde sich ein Tshape ganz gut eigenen.
Also Delphi öffnen, neues (leeres) Projekt anlegen.
Dem Ball spendieren wir eine neue Unit:
„File->New->Unit“
Abspeichern: „Uball“
Klasse erstellen: „TBall“
Weil der Ball ein Shape
ist, könnten wir
Tballjetzt von
Tshapeableiten (erben). Hab ich aber aus irgendwelchen Gründen nicht gemacht.
Stattdessen
hat Tball in unserem Beispiel ein Tshape:
Delphi-Quelltext
1: 2: 3: 4:
| TBall = class private fShape: TShape; end; |
Somit ist Tshape eine Instanzvariable von Tball (wobei Tball selber die Instanz sein wird). Tshape ist privat: Nur Tball selbst kann auf das Tshape zugreifen. Möchten wir später „von außen“ auf fShape zugreifen, müssten wir eine PROPERTY schreiben. Werden wir später auch
Alle Instanzvariablen werden mit einem kleinen „f“ am Anfang gekennzeichnet. Dies dient der Übersicht, dem Compiler ist das vollkommen egal.
Was instanziiert werden will, sollte einen Konstruktor vorweisen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| TBall = class private fShape: TShape; public constructor Create(parent: TWinControl); destructor Destroy(); end; |
Folgende Implementierung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| constructor TBall.Create(parent: TWinControl); begin fShape := TShape.Create(parent); fShape.Parent := parent; fShape.Name := 'ball'; fShape.Top := 0; fShape.Left := 0; fShape.Height := parent.ClientHeight div 20; fShape.Width := parent.ClientHeight div 20; fShape.Shape := stCircle; fShape.Brush.Color := clGreen; fShape.Show; end; |
Erläuterung:
Wenn wir einen Ball erzeugen wollen, übergeben wir dem Konstruktor einen..öhh...eine...ein „Parent“. Der die das Parent repräsentiert später usere Spielfäche (das schwarze wo der Ball und die Schläger drauf sind).
Der Rest sollte einigermaßen selbst erklärend sein.
Instanziierung in der Form-Konstruktor könnte dann so aussehen:
Delphi-Quelltext
1:
| fBall := Tball.Create(self); |
Cool, jetzt können wir bereits einen Ball darstellen
Das solls dann auch erst mal gewesen sein.
Wollt ihr mehr? Dann lasst mir ein wenig Feedback da und ich bin ab jetzt euer Tut-Sklave!
Alles Liebe,
Jones