Domanda

Dopo aver letto alcuni articoli su Artificial Life (un argomento che trovo molto interessante) insieme a diverse domande proprio qui su SO, ho iniziato a giocare con l'idea di progettare un (Very, very, very) simulatore semplice. Nessuna grafica richiesta, anche. Se ho trascurato una domanda, non esitare a segnalarmelo.

Come ho detto, difficilmente sarà una simulazione a livello di Sims. Credo che raggiungerà a malapena "freeware accettabile" livello, è semplicemente un esercizio di apprendimento e qualcosa per mantenere alte le mie abilità durante una pausa. La premessa di base è che viene creata una persona generica. Nessun nome, altezza o qualcosa del genere (come ho detto, semplice), l'unica cosa reale che riceverà è un elenco di "associazioni". e "uso" generico "," pick up " e "guarda" abilità.

La mia prima domanda riguarda le associazioni. Cosa consiglia SO come un modo efficace per gestire tali cose? Stavo pensando a una multimappa, con l'impostazione relativamente semplice della chiave come ciò che vuole (cibo, cibo, riposo, eccetera) e l'altro bit (mi dispiace, la mia mente è decaduta) essendo ciò che associa a tale esigenza.

Ad esempio, supponiamo che abbiamo un frigorifero. Il frigorifero contiene cibo (solo un oggetto base generico). Inizialmente la persona non associa il frigorifero al cibo, ma associa il cibo alla fame. Quindi, quando la sua fame cresce, inizia a cercare arbitrariamente cibo. Se nessun alimento è a portata di mano, "usa" oggetti per trovare cibo. Dal momento che non ha associazioni conosciute con il cibo, usa cose volenti o nolenti (Probabilmente cerca l'oggetto più vicino e si espande). Una volta che usa / apre il frigorifero vede cibo, facendo il collegamento (Leggi: inserendo la coppia "cibo, frigorifero") che il frigorifero contiene cibo.

Ora, mi rendo conto che sarà molto più complesso di quanto sembri, e sono pronto a risolverlo. La domanda è: una multimappa sarebbe adatta per un elenco (eventualmente) in espansione esponenziale di associazioni? In caso contrario, quale sarebbe?

La seconda domanda che ho è probabilmente molto più semplice. In poche parole, un'interfaccia oggetto / oggetto generica sarebbe adatta alla maggior parte degli articoli? In altre parole, un generico "userebbe" l'interfaccia funziona per quello che intendo? Non credo di spiegarlo bene.

Ad ogni modo, eventuali commenti sono apprezzati.

È stato utile?

Soluzione

Se lo facessi come un progetto di sviluppo hard-core, ti suggerirei di usare l'equivalente della riflessione Java (sostituisci lì il linguaggio che preferisci). Se vuoi fare un progetto giocattolo come uno sforzo iniziale, suggerirei almeno di realizzare la tua versione semplice della riflessione, secondo la seguente logica.

Ogni artefatto nel tuo ambiente offre determinate funzionalità. Un semplice modello di questo fatto è quello di chiedere quali "verbi" sono applicabili a ciascun oggetto che incontra il tuo personaggio virtuale (inclusa la possibile dipendenza dallo stato corrente di quell'oggetto). Ad esempio, il tuo personaggio può " aprire " un frigorifero, una scatola di cereali o un libro, a condizione che ciascuno di essi sia chiuso in un "chiuso" stato. Una volta aperto un libro, il tuo personaggio può leggerlo o chiuderlo. Una volta aperto un frigorifero, il tuo personaggio può " cercare " per ottenere un elenco di contenuti visibili, può rimuovere un oggetto da esso, inserirvi un oggetto, ecc.

Il punto è che una situazione tipica potrebbe coinvolgere il tuo personaggio a guardarsi intorno per vedere cosa è visibile, interrogando un oggetto per determinare il suo stato attuale o cosa si può fare con esso (cioè "quot-what" e ";" can-i-do " sono verbi generali applicabili a tutti gli oggetti), quindi utilizza la conoscenza del suo stato corrente, dello stato dell'oggetto e dell'elenco dei verbi per quell'oggetto per provare a fare varie cose.

Implementando una serie di feedback positivi e negativi, nel tempo il tuo personaggio può " imparare " in quali circostanze dovrebbe o non dovrebbe impegnarsi in comportamenti diversi. (Puoi ovviamente rendere interattiva questa simulazione facendola chiedere all'utente di partecipare a fornire feedback.)

Quanto sopra è solo uno schizzo, ma forse può darti alcune idee interessanti con cui giocare. Divertiti! ; -)

Altri suggerimenti

Alla prima domanda:

La mia comprensione è che hai una relazione da una a forse molte. Quindi sì, una multimappa mi sembra appropriata.

Alla seconda domanda:

Sì, credo che un'interfaccia generica per gli oggetti sia appropriata. Forse usa qualcosa di simile a REST per manipolare lo stato dell'oggetto.

Ho ascoltato un podcast qualche tempo fa con lo sviluppatore di The Noble Ape Simulation , che potrebbe essere interessante a te - concettualmente e forse in codice, come puoi il codice sorgente , nonché download binaries .

Il podcast era FLOSS Weekly 31 con Randal Schwartz e Leo Laporte.

Life con lisp (sbcl) :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top