Ein einfaches Spiel mit mehreren Objekten: Unterschied zwischen den Versionen

aus ZUM-Wiki, dem Wiki für Lehr- und Lerninhalte auf ZUM.de
Wechseln zu: Navigation, Suche
(Navigation eingefügt)
({{Seite umgezogen}})
 
Zeile 1: Zeile 1:
== Herunterladen von Bildern  ==
+
{{Seite umgezogen}}
 
+
Auf die Dauer ist ein einfaches Fenster, auf dem außer dem Hinweis nichts zu sehen ist, doch recht langweilig. Deshalb wollen wir nun auf diesem Fenster weitere Objekte platzieren, in diesem Fall: Bilder.
+
 
+
In vielen Computerspiele darf sich der Held an irgendwelche Gegenstände (magische Objekte, Werkzeuge, Waffen, ...) oder Charaktere/Rollen heraussuchen. So etwas soll hier programmiert werden. Dafür brauchen wir natürlich Bilder. Am besten eigenen sich für unsere Zwecke Bilder, die im Format <code>.png</code> gespeichert sind. Solche Bilder findet man in sehr großen Mengen und zu einer riesigen Anzahl von Themen legal auf der Seite http://www.openclipart.org; noch toller sind natürlich selbst gezeichnete Bilder aber nicht jeder von uns ist ein großer Künstler.
+
 
+
Für unser Spiel könnten wir z.B. brauchen:
+
 
+
* ein Schwert
+
* ein Buch
+
* ein magisches Kraut
+
 
+
Lade Dir entsprechende Bilder im PNG-Format herunter. Achtung: SVG-Bilder können von Lazarus nicht angezeigt werden. Eine geringe Auflösung des PNG-Bildes (kleines Bild) reicht vollkommen aus.
+
 
+
 
+
== Einbinden der Bilder in das eigene Programmierprojekt  ==
+
 
+
Zunächst erstellen wir ein neues Projekt und speichern es im Ordner '''ErstesSpiel''' (kein Leerzeichen). Dabei heißt das Projekt ebenfalls '''ErstesSpiel''', während wir das Fenster '''ErstesSpiel_fm''' nennen (wieder kein Leerzeichen).
+
 
+
 
+
Um ein Bild auf dem Fenster zu platzieren, wählt man im Lazarus-IDE-Fenster die Registerkarte '''Additional''' und wählt dort ein Objekt des Typs '''TImage''' durch Anklicken aus. Danach kann man auf dem Fenster das Bild mit der Maus in die gewünschte Größe ziehen (Größe und Ort kann man aber auch noch nachträglich ändern). Die Information, welches Bild nun tatsächlich angezeigt werden soll, steht in der Eigenschaft '''Picture''' im Objektinspektor. Neben dieser Eigenschaft steht ein Knopf mit drei Punkten ("..."). Drückt man diesen mit der Maus, so öffnet sich der "Bild-Laden-Dialog". Hier kann man eines der zuvor heruntergeladenen Bilder auswählen.
+
Es kann sein, dass das Bild zu groß oder zu klein für die Darstellung ist. Dieses Problem lässt sich aber leicht lösen, indem man die Eigenschaft '''Stretch''' im Objektinspektor auf '''True''' setzt.
+
 
+
Angenommen, wir haben Bilder zu den drei oben genannten Spielgegenständen heruntergeladen. Dann erzeugen wir jetzt insgesamt 6 Image-Objekte, von denen jeweils zwei den gleichen Gegenstand zeigen (wie in der  Graphik links).
+
 
+
'''BILD'''
+
 
+
Für die drei unteren Bilder setzen wird im Objektinspektor die Eigenschaft '''Visible''' auf '''False''', so dass beim Start des Programms diese drei Bilder nicht zu sehen sind (wie bei der Graphik rechts). Bei jetzt immerhin schon 6 Image-Objekten lohnt es sich, die Übersichtlichkeit dadurch zu vergrößern, dass man den Objekten statt Image1 bis Image6 sprechende Namen gibt (Eigenschaft '''Name''' im Objektinspektor). Wir verwenden hier <code>imSchwertOben, imSchwertUnten, imBuchOben, imBuchUnten, imimKrautOben</code> und <code> imKrautUnten</code>, wobei die "Vorsilbe" <code>im...</code> uns daran erinnern soll, dass es sich um Images handelt.
+
 
+
 
+
 
+
 
+
<source lang=pascal>
+
</source>
+
 
+
Wichtig: Da wir es hier jetzt mit mehreren Objekten zu tun haben, müssen wir im Objektinspektor zunächst tatsächlich Form1 auswählen und dann im Reiter „Ereignisse“ rechts neben dem Ereignis OnMouseDown einen Doppelklick ausführen.
+
 
+
In der zweiten Zeile kann man erkennen, dass innerhalb der Methode noch die Variablen X und Y zur Verfügung stehen. Diese liefern die Informationen, wo genau der Mauszeiger stand, als die Maustaste gedrückt wurde. Das lässt sich nutzen, um unsere geometrische Form mit der linken oberen Ecke genau an die Position des Mauszeigers zu setzen, wenn die Maustaste gedrückt ist. Will man, dass das geometrische Objekt z.B. unsichtbar wird, wenn man auf das geometrische Objekt ''selbst ''klickt, so muss man im Objekt Shape1 im Objektinspektor auswählen und dann dort neben dem Ereignis OnMouseDown den Doppelklick ausführen.
+
 
+
Die so entstandene Methode können wir nun ergänzen.
+
 
+
<source lang=pascal>
+
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
+
  Shift: TShiftState; X, Y: Integer);
+
begin
+
  Shape1.Visible:=FALSE;
+
end;       
+
</source>
+
 
+
'''Wichtig''': Egal, welches Objekt (hier: Fenster oder geometrisches Objekt) das Ereignis auslöst; die zugehörige Methode gehört in Lazarus immer zum Fenster.
+
 
+
 
+
 
+
 
+
{{Spiele in Lazarus objektorientiert programmieren}}
+

Aktuelle Version vom 10. August 2019, 07:59 Uhr

Diese Seite wurde in das neue Projekt ZUM Unterrichten umgezogen.

ZUM Unterrichten ist das neue Projekt der ZUM e.V. für die interaktive Erstellung von Lerninhalten.

Diese Seite findet sich ab sofort unter: https://unterrichten.zum.de/Spiele in Lazarus objektorientiert programmieren/Ein einfaches Spiel mit mehreren Objekten