if-de :: Forum Foren-Übersicht
Autor Nachricht
<  Java-Package für IF-Authoring
ChrisW
BeitragVerfasst am: Do, 5 Jan 2006 - 2:41  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

Crowley hat folgendes geschrieben:
Nachdem ich die Grundbegriffe der Sprache verstanden hatte, suchte ich zunächst einmal nach dem Befehl für das Anlegen eines neuen Objekts - und zwar dynamisch, also zur Laufzeit. Als ich herausfand, dass es einen solchen Befehl nicht gibt, sondern alle Objekte in einem Inform-Adventure lediglich statisch existieren, musste ich das System, das ich mir für die dynamisch handelnden NSCs ausgedacht hatte, komplett kippen.


Kleine Anmerkung meinerseits, wobei ich als Nichtprogrammierer deine Ausführungen sonst sehr plausibel finde: Auf sehr eingeschränkte Weise beherrscht Inform das schon. Beispiel:

Code:
class Liquid(3)            !Für flüssige Objekte (maximal drei
                                             ! dynamisch erschaffene
                                             !Liquid-Objekte
    with Menge,                     !in 100ml-Schritten
         short_name, name, dekl, description,
         before [; Take, PutOn, Lift: print_ret "Das gestaltet sich
                          bei Flüssigkeiten schwierig...";
                   Empty: print "Du verschüttest ",(der)self, ".^";
                          Liquid.destroy(self);return;];


Das hab ich mal benutzt, um Flüssigkeiten in Inform zu programmieren, die ja teilbar sein sollten. Nachteil ist, dass du exakt angeben musst, wieviele Objekte du von dieser Klasse höchstens dynamisch anlegen kannst (die Zahl in Klammern).

Dann könnte ich mit

Code:
Wasser = Liquid.create()


einen Wasserhahn Wasser erzeugen lassen. Das Objekt wird dann durch Verschütten wieder gelöscht.

Wie gesagt, von den Möglichkeiten her sehr beschränkt. Aber vollständig unmöglich ist es nicht.
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Oliver
BeitragVerfasst am: Do, 9 Feb 2006 - 22:12  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 06.08.2004
Beiträge: 9

So, ich melde mich mal wieder (Entschuldigung dafür, daß ich so lange "untergetaucht" bin, aber ich hatte tlw. noch andere Dinge zu tun, tlw. war ich schlicht und einfach zu müde und lustlos). Mit Eclipse unter Linux hatte ich immer Probleme, so daß dies dem Fortschritt des Projekts nicht gerade nützlich war. Jetzt bin ich aber auf NetBeans umgestiegen (da ist gerade die neue Version 5.0 herausgekommen, die enthält auch einen der besten GUI-Builder in der Branche). Eine erste Version von JAGD ist jetzt auf meiner Homepage verfügbar, und zwar sowohl als JAR-Archiv wie auch als Quelltext. Die URL ist:
http://www.mydarc.de/dl1yov/java.html
Das ist nur eine erste "Rohversion", die sicher in der nächsten Zeit noch erweitert wird.

Gruß,

Oliver
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
olav.mueller
BeitragVerfasst am: Do, 16 Feb 2006 - 14:17  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 14.10.2004
Beiträge: 15
Wohnort: Düsseldorf

Hiho,

Oliver hat folgendes geschrieben:
Eine erste Version von JAGD ist jetzt auf meiner Homepage verfügbar, und zwar sowohl als JAR-Archiv wie auch als Quelltext. [...]
Das ist nur eine erste "Rohversion", die sicher in der nächsten Zeit noch erweitert wird.


Jo, der war gut ;-) Wenn ich mir die bislang publizierte API dieses Projekts so anschaue, steht Dir noch eine Menge Arbeit bevor. Evtl. würde ich auch ein Redesign der schon exisiterenden Klassen empfehlen.

Entschuldige, nicht in den falschen Hals bekommen, aber bist Du Dir sicher, dass Du das schaffst? Hast Du Dir mal den Sourcecode von anderen Textadventure Libraries angeschaut? Ist Dein Ansatz da nicht etwas zu "einfach"?

Ich will wirklich nicht nur "runtermachen", aber sowas (4 Klassen, 20 Zeilen Sourcecode) selbst als "Rohversion", zu veröffentlichen ist etwas gewagt.

Meine Vorschläge: Entwickle Deine Konzepte erstmal etwas detaillierter auf dem Zeichenbrett. Ein strukturierteres Klassenkonzept muss dringend her.

Nichts für ungut,
Olav
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Crowley
BeitragVerfasst am: Fr, 24 Feb 2006 - 11:19  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 15.12.2005
Beiträge: 32
Wohnort: Düsseldorf

So, ich hab ja lang nichts mehr geschrieben. Mein Java Textadventure-Projekt lebt noch. Genauer gesagt: Ich bin in die zweite Runde gegangen. Ich habe das Projekt nochmal auf einer solideren Basis begonnen und auf mehrere Programmcode-Projekte aufgeteilt: eins für die Modellierung der Spielwelt, eins für generelle Basisklassen und eins für die Modellierung natürlicher Sprache.

Dabei lege ich nach wie vor Wert auf ein erweiterbares, modernes OOP-Modell, sowie auf Thread-Sicherheit. (-> Die Basis soll potentiell multiplayerfähig sein.)

Ich möchte möglichst viele Informationen über die Objekte der Spielwelt in die Engine einbauen, damit die Engine den Spieler auf "intelligente" Weise unterstützen kann und besser als bei Inform-Adventures "versteht", was grade vor sich geht. Außerdem will ich ganz genau das in Objekten modellieren, was in meinem Kopf vor sich geht, wenn ich mir über die Korrellate in der Wirklichkeit Gedanken mache.

Ein Beispiel: Den normalerweise üblichen Weltbaum mit den Containment-Relationen lehne ich ab. Das ist nicht die Art, wie man normalerweise über Objekte in der wirklichen Welt nachdenkt. Stellen wir uns eine Kerze vor, die auf einem Tisch steht. Wie modellieren wir dies in Gedanken.

Also einmal haben wir die Kerze, die ist ein physischer Gegenstand. Das entspricht meinem Basis-Interface
Code:
interface IPhysical

Ferner hat die Kerze eine Position:
Code:
interface IPhysical {

   /**
    * Get the current position of the physical object.
    * @return the object's current position, which is
    * <code>null</code> if the object is not whithin the
    * game world.
    */
   IPosition position();
}

Die Position ist eine bestimmte Relation zu einem anderen Objekt:
Code:
interface IPosition {

   /**
    * Get the relation of the position, which is something like
    * <i>on top of</i>, <i>inside</i>, <i>besides</i>, <i>below</i>,
    * etc.
    * @return the position relation.
    */
   IPositionRelation relation();

   /**
    * Get the object that provides the position. That is, any object
    * that occupies the position is on top of, inside, below, besides
    * or in some other relation to the object returned by this
    * method.
    * @return the position provider, which is never
    * <code>null</code>.
    */
   IPhysical provider();
}

Tja, und so pedantisch gehe ich in allen Dingen vor. Die Engine könnte auf diese Weise bereits gewisse Default-Beschreibungen generieren, wie etwa:
Zitat:
In der Mitte des Raums steht ein Tisch.

> schau den tisch an

Ein gewöhnlicher Holztisch. Auf dem Tisch steht eine Kerze.

> nimm die kerze vom tisch

Du nimmst die Kerze.

> schau den Tisch an

Ein gewöhnlicher Holztisch.

> stell die kerze auf den tisch

Du stellst die Kerze auf den Tisch.

> schau den tisch an

Ein gewöhnlicher Holztisch. Auf dem Tisch steht eine Kerze.

(Anmerkung: Die Teile, welche die Engine per Default generieren und erkennen sollte, habe ich kursiv markiert.)

Und das wäre eine Standard-Funktion der Engine, der Tisch müsste nicht mit den speziellen Kommandos ausgestattet werden - weil die Engine ja "weiß", was auf, unter, in und so weiter bedeutet.

So, das Beispiel für IPosition ist übrigens nicht ganz korrekt. Es müsste beispielsweise auch die Positions-Relation "zwischen" geben, für die mehrere Objekte als Provider angegeben können. Und, ganz wichtiger Punkt: Die Provider-Objekte müssen nicht zwangsläufig physikalische Gegenstände sein! Es können auch sozusagen "virtuelle" Objekte sein, die nur in der Raumbeschreibung erwähnt werden, aber nicht als physikalische Gegenstände vorhanden sind. Für solche "virtuellen" Objekte werde ich vielleicht noch einen entsprechenden Typen ausarbeiten, so eine Art Referenz auf physikalische Objekte, die zwar beschreibbar ist, aber nur optional tatsächliche IPhysical-Instanzen enthält.

Das war nur ein kleiner Einblick, um mal exemplarisch zu zeigen, wie ich da rangehe. Ich halte Euch natürlich weiter auf dem Laufenden, aber wie ich schon schrieb: Erwartet keine schnelle Entwicklung, ich mache das a) nur nebenher und b) extrem pedantisch.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 3 von 3
Gehe zu Seite Zurück  1, 2, 3
if-de :: Forum Foren-Übersicht  >  Dies & Das

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05