Question

Après avoir lu plusieurs articles sur la vie artificielle (un sujet que je trouve très intéressant) ainsi que plusieurs questions ici même sur SO, j'ai commencé à jouer avec l'idée de concevoir un (Très, très, très) simulateur simple. Aucun graphique requis, même. Si j'ai oublié une question, n'hésitez pas à me le signaler.

Comme je l’ai dit, il ne s’agira guère d’une simulation au niveau des Sims. Je pense qu’il atteindra à peine un "freeware acceptable". niveau, c’est tout simplement un exercice d’apprentissage et un moyen de garder mes compétences à la hausse pendant une pause. Le principe de base est qu'une personne générique est créée. Pas de nom, pas de hauteur ou quoi que ce soit du genre (comme je l’ai dit, simple), la seule chose réelle qu’elle recevra est une liste d’associations " et générique "utiliser", "ramasser" et " regarder " capacités.

Ma première question concerne les associations. Que recommande donc SO comme moyen efficace de gérer de telles choses? Je pensais à une carte multiple, avec la configuration relativement facile de la clé étant ce qu’elle veut (manger, manger, se reposer, etc.) et l’autre partie (désolée, mon esprit est tombé) étant ce qu’elle associe à ce besoin. / p>

Par exemple, disons que nous avons un réfrigérateur. Le réfrigérateur contient de la nourriture (juste un objet de base générique). Initialement, la personne n'associe pas le réfrigérateur à la nourriture, mais elle associe la nourriture à la faim. Alors, quand sa faim grandit, il commence à chercher arbitrairement de la nourriture. Si aucun aliment n’est à portée de main, il utilise " objets pour trouver de la nourriture. Comme il n’a aucune association connue avec la nourriture, il utilise les choses à bon escient (cherche probablement l’objet le plus proche et s’étend). Une fois qu’il utilise / ouvre le réfrigérateur, il voit les aliments et établit le lien (lire: insérer la paire "aliments, réfrigérateur") et indique que le réfrigérateur contient des aliments.

Maintenant, je réalise que ce sera beaucoup plus complexe qu'il n'y paraît, et je suis prêt à le faire. La question est de savoir si une carte multiple serait appropriée pour une liste d'associations (potentiellement) en expansion exponentielle. Si non, que serait-il?

La deuxième question que j'ai est probablement beaucoup plus facile. En termes simples, une interface objet / élément générique conviendrait-elle à la plupart des objets? En d'autres termes, une "utilisation" générique " interface de travail pour ce que j'ai l'intention? Je ne pense pas que je l'explique bien.

Quoi qu’il en soit, tous les commentaires sont les bienvenus.

Était-ce utile?

La solution

Si vous réalisiez ceci en tant que projet de développement endurci, je suggérerais d'utiliser l'équivalent de la réflexion Java (remplacez le langage de votre choix ici). Si vous souhaitez faire un projet de jouet en tant qu'effort de démarrage, je suggérerais au moins de lancer votre propre version simple de réflexion, selon la logique suivante.

Chaque artefact de votre environnement offre certaines fonctionnalités. Un modèle simple de ce fait est de demander ce que "verbes" sont applicables à chaque objet rencontré par votre personnage virtuel (y compris la dépendance possible à l’état actuel de cet objet). Par exemple, votre personnage peut " ouvrir " un réfrigérateur, une boîte de céréales ou un livre, à condition que chacun d'entre eux soit dans une boîte "fermée" Etat. Une fois qu'un livre est ouvert, votre personnage peut le lire ou le fermer. Une fois qu'un réfrigérateur est ouvert, votre personnage peut "consulter" pour obtenir une liste de contenu visible, peut en retirer un objet, y insérer un objet, etc.

Le fait est qu’une situation typique peut impliquer que votre personnage regarde autour de lui pour voir ce qui est visible, interrogeant un objet pour déterminer son état actuel ou ce qu’on peut en faire (par exemple, "quel état" et "quel can-i-do "sont des verbes généraux applicables à tous les objets), puis utilisent les connaissances relatives à son état actuel, à l'état de l'objet et à la liste des verbes de cet objet pour essayer diverses opérations.

En mettant en place un ensemble de commentaires positifs et négatifs, votre personnage peut progressivement "apprendre". dans quelles circonstances il devrait ou ne devrait pas adopter des comportements différents. (Vous pouvez évidemment rendre cette simulation interactive en demandant à l’utilisateur de participer en fournissant des commentaires.)

Ce qui précède n’est qu’un croquis, mais peut-être vous donnera-t-il des idées intéressantes à jouer. S'amuser! ; -)

Autres conseils

À la première question:

D'après ce que je comprends, vous avez une relation un à peut-être plusieurs. Alors oui, une carte multiple me semble appropriée.

À la deuxième question:

Oui, je pense qu'une interface générique pour les objets est appropriée. Utilisez peut-être quelque chose de similaire à REST pour manipuler l'état de l'objet.

J'ai entendu un podcast il y a quelque temps avec le développeur de la simulation de singe noble , ce qui peut être intéressant. pour vous - sur le plan conceptuel et peut-être même de la même manière, car vous pouvez accès le code source , ainsi que les télécharger les fichiers binaires .

Le podcast était FLOSS Weekly 31 avec Randal Schwartz et Leo Laporte.

Life avec lisp (sbcl):)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top