Frage

Nachdem auf ganz wenige Artikeln über Artificial Life nachlesen (A Thema, das ich sehr interessant finde) zusammen mit einigen Fragen hier auf SO, ich habe mit der Idee zu Spielzeug begonnen von der Gestaltung eines (sehr, sehr, sehr) einfacher Simulator. Keine Grafik erforderlich, auch. Wenn ich eine Frage übersehen habe, können Sie sich frei, es zeigen auf mich aus.

Wie ich schon sagte, wird dies kaum eine Sims-Level-Simulation sein. Ich glaube, es wird kaum als „akzeptabel Freeware“ Niveau erreichen, es ist einfach eine Übung lernen und etwas zu meinen Fähigkeiten zu halten während einer Pause auf. Die Grundvoraussetzung ist, dass eine generische Person erstellt wird. Kein Name, Höhe oder etwas ähnliches (Wie ich schon sagte, einfach), die einzige wirkliche Sache, die es erhalten wird, ist eine Liste der „Verbände“ und generischer „Verwendung“, „Pick up“ und „Look“ Fähigkeiten.

Meine erste Frage ist in Bezug auf die Verbände. Was bedeutet SO als eine effiziente Art und Weise empfehlen, solche Dinge zu behandeln? Ich dachte, ein multimap, mit dem relativ einfachen Aufbau der Schlüssel sein, was es will (Food, Essen, Ruhe, etc.) und das andere Bit (Leider hat mein Geist erloschen) sein, was es mit diesem Bedarf zuordnet.

Zum Beispiel, sagen wir einen Kühlschrank. Der Kühlschrank enthält Essen (Nur ein allgemeines Basisobjekt). Zunächst wird die Person nicht assoziiert Kühlschrank mit Essen, aber es tut verbinden Lebensmittel mit Hunger. Also, wenn sein Hunger wächst beginnt es willkürlich nach Nahrung zu suchen. Wenn kein Essen in Reichweite ist es „verwendet“ Objekte Nahrung zu finden. Da es keine bekannten Assoziationen mit Essen hat nutzt es Dinge wohl oder übel (Wahrscheinlich für das nächste Objekt suchen und erweitern out). Sobald es verwendet / den Kühlschrank öffnet es Essen sieht, die Verbindung herstellen (Lesen Sie: das Paar „Essen, Kühlschrank“ Einfügen)., Dass der Kühlschrank Lebensmittel enthält

Jetzt merke ich, dies weitaus komplexer sein wird, als es scheint, und ich bin bereit, es zu hämmern. Die Frage ist, wäre ein multimap für eine (möglicherweise) geeignet seine exponentiell wachsende Liste von Verbänden? Wenn nicht, was wäre?

Die zweite Frage ich habe, ist wahrscheinlich viel einfacher. Einfach gesagt, wäre eine generische Objekt / Element-Schnittstelle für die meisten jedes Element geeignet sein? Mit anderen Worten würde eine generische „Verwendung“ Schnittstellenarbeit für das, was ich beabsichtige? Ich glaube nicht, Ich erkläre dies gut.

Wie auch immer, sind keine Kommentare zu schätzen.

War es hilfreich?

Lösung

Wenn Sie dies als Hard-Core-Entwicklungsprojekt wurden zu tun, würde ich vorschlagen, um das Äquivalent von Java Reflexion unter Verwendung von (passen Sie die Sprache Ihrer Wahl dort). Wenn Sie ein Spielzeug Projekt als Starter Mühe machen wollen, würde ich vorschlagen, zumindest Ihre eigene einfache Version der Reflexion rollen, nach folgenden Begründung.

Jeder Artefakt in Ihrer Umgebung bietet bestimmte Fähigkeiten. Ein einfaches Modell dieser Tatsache ist zu fragen, was „Verben“ jeder anwendbar sind Objekt der virtuellen Charakter Begegnungen (einschließlich einem möglichen Abhängigkeit vom aktuellen Zustand des Objekts). Zum Beispiel können Sie Ihr Charakter „offen“ über einen Kühlschrank, eine Schachtel Müsli, oder ein Buch, vorausgesetzt, dass jeder von ihnen in einem „geschlossenen“ Zustand befindet. Sobald ein Buch geöffnet ist, können Sie Ihr Charakter sie lesen oder es schließen. Sobald ein Kühlschrank geöffnet wird, kann Ihr Charakter „Look-in“ eine Liste der sichtbaren Inhalte zu bekommen, kann ein Objekt von ihm entfernen, setzen Sie ein Objekt darin, etc.

Der Punkt ist, dass eine typische Situation, Ihren Charakter umsah einbeziehen könnte, um zu sehen, was sichtbar ist, die Abfrage ein Objekt seinen aktuellen Zustand zu bestimmen, oder was kann man (zB „Was-wäre-Zustand“ und „Was-wäre-Can- erfolgen i-do“sind die allgemeinen Verben auf alle Objekte anwendbar), und dann das Wissen über seinen aktuellen Zustand verwenden, um den Zustand des Objekts, und das verb Liste für das Objekt verschiedene Dinge versuchen zu tun.

Durch eine Reihe von positiven und negativen Feedback Umsetzung im Laufe der Zeit Ihren Charakter „lernen“ kann, unter welchen Umständen es sollte oder in unterschiedlichen Verhaltensweisen nicht eingreifen. (Sie könnten natürlich diese Simulation machen interaktiv, indem es den Benutzer auffordern, bei der Bereitstellung von Feedback zu beteiligen.)

Die oben ist nur eine Skizze, aber vielleicht kann es Ihnen einige interessante Ideen geben zu spielen. Habe Spaß! ; -)

Andere Tipps

Zur ersten Frage:

Mein Verständnis ist, dass Sie eine Eins-zu-vielleicht-viele-Beziehung haben. Also ja, ein multimap scheint mir angemessen.

Um die zweite Frage:

Ja, ich glaube, eine generische Schnittstelle für Objekte geeignet ist. verwendet vielleicht etwas ähnliche href="http://en.wikipedia.org/wiki/REST" rel="nofollow noreferrer"> REST zur Objektzustand zu manipulieren.

hörte ich einen Podcast mit dem Entwickler vor einiger Zeit von The Noble Ape Simulation , die interessant sein können Sie - conceptwise und vielleicht codewise, wie Sie können Zugang der Quellcode sowie herunterladen Binärdateien .

Der Podcast war FLOSS Weekly 31 mit Randal Schwartz und Leo Laporte.

Leben mit Lisp (sbcl):)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top