如何使用netlogo计算海龟的上方、下方和对角线?

如何使用netlogo计算海龟的上方、下方和对角线?,netlogo,Netlogo,我正在使用netlogo创建一个connect four游戏。我很难记下一排有多少红色或蓝色。(确定获胜者) 这正是我想要它做的: 如果这个圆圈是红色的 然后将一个添加到连续的圆中 其他的 将连续的红色设置回0 如果连续红色为4(或更大) 显示你赢了,伙计/女孩 否则就把比分定为0 这是我尝试过的,但不起作用 ifelse any? patches with [ (pcolor = red) and (pxcor 1)] [set successive-reds = successive

我正在使用netlogo创建一个connect four游戏。我很难记下一排有多少红色或蓝色。(确定获胜者)

这正是我想要它做的:

如果这个圆圈是红色的 然后将一个添加到连续的圆中 其他的 将连续的红色设置回0 如果连续红色为4(或更大) 显示你赢了,伙计/女孩 否则就把比分定为0

这是我尝试过的,但不起作用

ifelse any? patches with [ (pcolor = red) and (pxcor 1)]
    [set successive-reds = successive-reds + 1]
    [set successive-reds 0]
    if successive-reds = 4
       [show "you won"]
我已经搜索了stackoverflow以寻求帮助,并找到了实现此目的的方法,但没有使用netlogo程序。 我也试过使用邻居和海龟,但找不到办法让海龟问他们的邻居海龟他们的颜色是否与海龟的颜色相同

任何帮助都将不胜感激。
谢谢

啊。。。我知道,既然这是为了一项任务,我应该轻轻地引导你自己去弄清楚怎么做,但这是一个很酷的小问题,NetLogo非常适合这个问题,我忍不住要发布一个解决方案:

to-report wins? ; patch procedure
  report member? true map wins-in-direction? n-values 8 [ ? * 45 ]
end

to-report wins-in-direction? [ h ] ; patch procedure
  report not member? false map [
    ([ pcolor ] of patch-at-heading-and-distance h ?) = red
  ] (n-values 4 [ ? ])
end
根据上述代码,可以使用如下语句:

any? patches with [wins?]
…将告诉您任何补丁是否是获胜序列的极限

现在,除非您理解该代码,否则不应使用该代码。如果您不习惯这种风格,那么使用and可能会有点挑战性,但请在评论中自由提问,我将更新我的答案以解决这些问题


奖励积分:这只检查红色胜利。对其进行概括,这样它就可以检查其他颜色,而不会天真地复制代码。

Argh。。。我知道,既然这是为了一项任务,我应该轻轻地引导你自己去弄清楚怎么做,但这是一个很酷的小问题,NetLogo非常适合这个问题,我忍不住要发布一个解决方案:

to-report wins? ; patch procedure
  report member? true map wins-in-direction? n-values 8 [ ? * 45 ]
end

to-report wins-in-direction? [ h ] ; patch procedure
  report not member? false map [
    ([ pcolor ] of patch-at-heading-and-distance h ?) = red
  ] (n-values 4 [ ? ])
end
根据上述代码,可以使用如下语句:

any? patches with [wins?]
…将告诉您任何补丁是否是获胜序列的极限

现在,除非您理解该代码,否则不应使用该代码。如果您不习惯这种风格,那么使用and可能会有点挑战性,但请在评论中自由提问,我将更新我的答案以解决这些问题

奖励积分:这只检查红色胜利。对其进行泛化,以便它可以检查其他颜色,而不会天真地复制代码