|
|
||||
| Wir werden am Ende dieses Exkurses (der mehrere Folgen umfasst) ein Adventuregame geschrieben haben, welches aus einem Helden besteht, der durch einen Dungeon herumirrt, dabei auf Monster trifft, die er bekämpfen muss und denen er Gegenstände abnehmen kann. Andere Gegenstände liegen auf den Feldern des Dungeons herum und können vom Helden aufgenommen werden. Auf diese Weise wandern die Gegenstände in das Inventar des Helden. Neben normalen Gegenständen gibt es auch noch Zauberrollen, die einen Zauber enthalten. Findet der Held einen solchen Zauberspruch, nimmt er ihn in sein Zauberbuch auf. Dieses hilft dem Helden beim Kampf gegen die Monster. Erst wenn der Held alle Monster besiegt hat, wird der Ausgang des Dungeons sichtbar, und der Held kann den Dungeon siegreich verlassen. Das Spiel ist dann beendet. Falls der Held vorher im Kampf stirbt, ist das Spiel natürlich auch beendet.
Alle orange unterlegten Begriffe stehen schon einmal für Java-Klassen. Sie sehen, das Spiel wird recht komplex. Aber keine Angst, in der heutigen Folge wollen wir nur eine einzige Klasse programmieren, und noch nicht einmal dies werden wir ganz schaffen. Aber zumindest bekommen wir so einen Einstieg in das Spiel. |
||||
Das Adventure-Projekt
1 Das Adventure-Projekt, Version 1.01 In Abb. 1 sehen Sie die allererste Version des Adventure-Projektes. Sie benötigen eine Klasse Gegenstsand sowie ein neues, leeres Java-Applet. Fall Sie noch nie zuvor mit Java-Applets gearbeitet haben, so können Sie den Exkurs "Java-Applets" machen. In diesem Exkurs lernen Sie, was man unter einem Applet versteht, und sie lernen die wichtigsten Zeichenbefehle für Java-Applets kennen. Wenn Sie eine schnelle Auffassungsgabe haben, können Sie auf diesen Exkurs allerdings auch verzichten, in diesem Adventure-Projekt wird Ihnen auch das Nötigste zum Umgang mit Applets erklärt. |
||||
Das Applet SpielSchauen wir uns mal den Quelltext der Klasse Spiel an. Wenn Sie mit BlueJ ein neues Applet erzeugen, wir immer ziemlich viel Quelltext erzeugt. Ich habe hier das meiste gelöscht und nur die wirklich wichtigen Sachen übrig gelassen. Aber sehen Sie selbst:import java.awt.*;
import javax.swing.*;
public class Spiel extends JApplet
{
Gegenstand schwert;
public void init()
{
schwert = new Gegenstand("Excalibur");
}
public void paint(Graphics g)
{
g.drawString("Spiel V 1.01", 20, 20);
schwert.anzeigen(g,20,50);
}
}
2 Quelltext der Klasse Spiel - komplett Sie können in BlueJ jetzt ein Applet "Spiel" erzeugen, sämtlichen Quelltext ausschneiden und über die Zwischenablage den Quelltext aus Abb. 2 einsetzen. Natürlich wird das Applet noch nicht funktionieren, weil Sie ja die Klasse Gegenstand noch nicht programmiert haben. Aber dazu später. QuelltextanalyseDie Quelltextanalyse ist doch etwas umfangreicher geworden, als ich anfangs dachte. Daher habe ich sie in eine eigene HTLM-Seite ausgelagert. Wenn Sie den Quelltext der Abb. 2 aber schon verstanden haben, können Sie die Quelltextanalyse gerne überspringen. |
||||
Die Klasse GegenstandAttribute der Klasse GegenstandDie Gegenstände liegen im Dungeon auf bestimmten Feldern herum oder werden von den Monstern mitgeführt und können dann vom Helden erbeutet werden, wenn er ein solches Monster besiegt hat. In unserer allerersten Version hat die Klasse Gegenstand nur ein einziges Attribut - nämlich die Bezeichnung. Aber vielleicht schauen wir uns auch hier einfach den kurzen Quelltext der Klasse an, damit Sie etwas schneller in die Spiele-Progammierung hereinkommen: import java.awt.*;
public class Gegenstand
{
String bezeichnung;
public Gegenstand(String bez)
{
bezeichnung = bez;
}
public void anzeigen(Graphics g, int x, int y)
{
g.drawString(bezeichnung,x,y);
}
}
3 Quelltext der Klasse Gegenstand - komplett Wenn Sie wollen, können Sie jetzt eine leere Klasse Gegenstand erzeugen und diesen Quelltext über die Zwischenablage hineinkopieren. Ihr Java-Projekt müsste dann eigentlich reibungslos funktionieren. QuelltextanalyseAuch hier lagern wir die Analyse des Quelltextes wieder in eine eigene HTML-Seite aus, so dass Sie diesen langen Abschnitt bei Bedarf lesen oder im Falle des Sofortverstehens auch überspringen können. |
||||
Darstellung von Klassen in UMLUML ist eine Art Sprache zur anschaulichen Darstellung von Klassen, Objekten und Beziehungen zwischen Klassen und Objekten. In diesem ersten Teil des Adventure-Games werden wir uns auf die Darstellung von Klassen beschränken.Eine Klasse wird durch ein Rechteck dargestellt, das durch waagerechte Striche in drei Abschnitte unterteilt wird. Oben schreiben wir den Namen der Klasse hinein, in den mittleren Abschnitt die Attribute, und in den unteren Abschnitt die Methoden der Klasse:
4 UML-Darstellung der Klasse Gegenstand Die Klasse Gegenstand hat hier drei weitere Attribute erhalten, nämlich angriffswert, verteidigungswert und goldwert. Zunächst werden diese drei Attribute als int-Zahlen deklariert. Später werden wir feststellen, dass man sinnvoller mit double-Zahlen rechnet. So ein UML-Diagramm ist recht schnell geschrieben, allerdings ist die Syntax eine etwas andere als die Darstellung in Java. UML ist unabhängig von einer bestimmten Programmiersprache und hat daher eine eigene Syntax. Die Plus- und Minus-Zeichen vor den Attributen und Methoden besagen, ob ein Attribut oder eine Methode nach außen hin sichtbar (+) oder unsichtbar (-) ist. In der Sprache Java drückt man dies durch die Schlüsselworte public (+) bzw. private (-) aus. Wir sehen also: Alle Attribute sind nach außen hin verborgen (Datenkapselung). Die Methode ausgeben() ist dagegen nach außen hin sichtbar, man spricht hier auch von einer öffentlichen Methode (public). Konstruktoren sind ganz besondere Methoden und werden daher mit einem C gekennzeichnet. Achten Sie darauf, dass der Konstruktor in der Abb. 4 vier Parameter erwartet, schließlich müssen jetzt vier Attribute mit Anfangswerten ausgestattet werden. Genug der Theorie - jetzt wollen wir erstmal ein bisschen programmieren. |
||||
|
||||
|
Allgemeine Frage zur Methode beschaedigen() Man hätte das Beschädigen der Gegenstände rein theoretisch auch völlig anders lösen können, nämlich ohne Veränderung der Attributwerte des Gegenstandes. Entwickeln Sie eine sinnvolle Idee, wie man dies bewerkstelligen könnte!
Wenn Sie die Hinweise zur Lösung der Aufgaben nicht lesen, so ist das Ihr Problem! |
|||
|
|
|||
|
||||
|
||||
|
||||
Weiter mit Folge 2: Der Held
|
||||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 21. Januar 2006. |
||||