NetLogo,关于否定(绝对补码)和HubNet和HubNet发送覆盖的问题

NetLogo,关于否定(绝对补码)和HubNet和HubNet发送覆盖的问题,netlogo,complement,hubnet,Netlogo,Complement,Hubnet,我正在编写一个Hubnet应用程序,我希望每个客户机的视图都依赖于我能看到的客户机变量turtles中的turtles。特别是我想把所有的海龟都藏在一个小海龟里 通过选中Hubnet control Center中的“客户机上的镜像2D视图”框并添加以下代码,我成功地实现了这一点 ask turtles[hubnet-send-override [user-id] of self turtles "hidden?" [true]] ask turtles[hubnet-send-override

我正在编写一个Hubnet应用程序,我希望每个客户机的视图都依赖于我能看到的客户机变量turtles中的turtles。特别是我想把所有的海龟都藏在一个小海龟里

通过选中Hubnet control Center中的“客户机上的镜像2D视图”框并添加以下代码,我成功地实现了这一点

ask turtles[hubnet-send-override [user-id] of self turtles "hidden?" [true]]
ask turtles[hubnet-send-override [user-id] of self [turtlesicansee] of self "hidden?" [false]]
虽然这目前似乎有效,但我对代码有两个问题:

1) 如果我可以在第二行补充turtlesicansee(并将false切换为true),那么第一行是多余的。有没有办法做到这一点,有效地说,我想把所有的海龟都藏在turtlesicansee以外的地方

2) 我不确定第二句话中的量化。我想告诉每一只乌龟(客户),她能看到的唯一乌龟是她的海龟箱里的乌龟。这就是我得到的吗?让我困惑的部分原因是,我要求turtles发送覆盖消息,但我真的不明白为什么消息来自哪个turtles很重要(但我还没有弄清楚如何在没有ask turtles命令的情况下获得正确的量化)


不管怎样,有人能帮我吗?

关于补充和第一行的必要性(告诉每个客户把所有海龟都藏起来)

首先,我假设。。。 1) 模型中的每个海龟都与hubnet客户端(学生)关联 2) 模型中没有其他海龟或其他种类的海龟。 3) 代理集“turtlesicansee”是一个随时间变化的海龟变量

考虑到这些假设,一种获得turtlesicansee补充的方法是

let onesicantsee turtles with [ not member? self turtlesicansee ] 
这将创建一个带有turtlesicansee补码的临时变量

因此,您可以通过以下方式以较少的冗余执行两个命令:

ask turtles[
  let onesicantsee turtles with [ not member? self turtlesicansee ]
  hubnet-send-override user-id   turtlesicansee   "hidden?" [false] 
  hubnet-send-override user-id   onesicantsee     "hidden?" [true]
]
但是,在客户机上设置覆盖(至少在我的理解/思维模式中)并不昂贵。它实际上并不会导致某些事情发生,而是在下次显示更新时设置一个“过滤器”。所以,您的原始代码并没有那么糟糕。您需要为所有海龟操纵过滤器的行为,您的方法实际上可能比我在这里写的方法更快


关于HubNet命令的“逻辑”问题,以及你的“让我困惑的部分…”注释。我同意,这很奇怪。“hubnet发送覆盖”命令可以在ask-turtles块之外发出。但是在这种情况下(以及在大多数情况下),您需要通过使用每个海龟(学生)的用户id和他们的turtlesicansee变量对“过滤器”进行个性化设置。因此,在ask-turtles中执行命令会依次为每个学生设置这些变量的范围。[这有意义吗?]

的self
总是多余的,可以省略。将self的
[foo]替换为简单的
foo
。好的,谢谢。你知道补码问题吗?我对HubNet不太熟悉。希望其他人会回答。同意,我可能只会使用最初的方法(将所有内容设置为false,用true覆盖某些内容),而不必费心计算补码。不管怎样,就我所能看到的任何一条路都是nbd。谢谢!这很有帮助!