已经对这里的SO几个问题以及人工生命(一级学科我觉得很有趣),有好几篇文章读了,我已经开始玩弄设计的想法(非常,非常,非常)简单的模拟器。无需图形,甚至。如果我忽略了一个问题,请随时指出来给我。

就像我说,这将难以有模拟人生级仿真。我相信它会勉强达到“可接受的免费软件”水平,这是一个简单的学习锻炼和一些休息期间,以保持我的技能了。其基本前提是,通用的人创建的。没有名字,高度或类似的东西(就像我说的,简单的),它会收到唯一的真实的东西是“协会”和通用的“使用”,“捡”和“看”的能力。名单

我的第一个问题是在问候的关联。什么是SO推荐作为一种有效的方式来处理这样的事情?我在想一个多重映射,关键是它想要的相对轻松的设置(食品,吃饭,休息,等等),而其它比特(对不起,我的心已失效)是什么它与需求相关联。

举例来说,假设我们有一台冰箱。冰箱里含有食品(只是一个通用的基础对象)。最初,人不与食品相关联的冰箱,但它确实准食物充饥。所以,当它饥饿的增长就开始随意寻找食物。如果没有食物是指日可待它“使用”对象来寻找食物。由于它与食物没有已知的协会,它使用的东西不管三七二十一(可能寻找最近的物体,并向外扩展)。一旦它使用/打开它看到食品冰箱,使得连接(读:插入一对“食品,冰箱”)。该冰箱包含食品

现在,我意识到这将远远超过它出现更复杂,我准备锤出来。现在的问题是,将多重映射是适合协会(可能)成倍扩大名单?如果没有,会是什么?

<强>第二个问题我有可能更容易。简单地说,将一个普通的对象/项目的接口适用于大多数的任何项目?换句话说,将一个普通的“使用”界面的工作我的意图?我不认为我解释这一点。

总之,任何意见赞赏。

有帮助吗?

解决方案

如果你是一个硬核开发项目这样做,我建议使用Java反射的当量(代替你的选择那里的语言)。如果你想做一个玩具项目作为首发的努力,我建议至少滚动反思自己的简单版本,按照以下理由。

在您的环境中每个工件提供一定的能力。这一事实的简单模型是要问什么“动词”适用于每个对象的虚拟人物的遭遇(包括该对象的当前状态可能依赖)。例如,你的角色可以“打开”冰箱,麦片盒,或一本书,前提是他们每个人处于“关闭”状态。一旦一本书被打开,你的角色可以阅读或关闭它。一旦一台冰箱被打开,你的角色可以“看入”它得到的可视内容的列表,可以从它删除对象,把一个对象在里面,等。

的一点是,一个典型的情况可能涉及你的角色环顾四周,看看有什么是可见的,查询对象,以确定其当前状态,以及什么可以用它做(即“是什么状态”和“什么,易拉罐我做的事”是通用动词适用于所有对象),然后用其当前状态的知识,对象的状态,而动词列表为对象,试图做各种事情。

通过实施一系列的正面和负面的反馈,随着时间的推移你的角色可以“学习”在什么情况下应该或不应该在不同的行为互动。 (你可以明显地使这个模拟有它要求用户参与提供反馈的互动。)

以上只是一个草图,但也许可以给你一些有趣的想法一起玩。玩得开心! ; - )

其他提示

要第一个问题:

我的理解是,你有一对可能一对多的关系。所以,是的,多重映射似乎是适当的我。

要第二个问题:

是,相信对于对象的通用接口是恰当的。也许使用类似的东西来 REST 来操纵对象的状态。

我听到一个播客而回用的显影剂贵族猿仿真时,这可能是有趣的你 - conceptwise也许codewise,因为你可以访问源代码,以及下载二进制

播客是 FLOSS每周31 ,提供兰德尔施瓦茨和Leo拉波特。

的寿命与口齿不清(SBCL):)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top