1
所以这是我正在进行的模拟的进度。这个模拟有一个球员列表,每个球员都有他们的分配点或得分。我有一个叫做游戏的补丁。有三十场比赛。一旦玩家击中了游戏(或者他们将在模拟中遇到),那么将会有一个标签显示已经完成的“击中”。三十场比赛中的每一场也都有自己的观点。点是随机生成的。使用If-Else语句打印在NetLogo中赢或输
所以我的问题是,如果他们赢得或没有赢得比赛,我将如何展示如何分配球员?我的情况是,如果玩家的分数大于或等于游戏的分数,那么它应该显示“你赢了比赛!”否则“你输了!”这发生在玩家和游戏相遇时。
我会在自己的球员身上放置另一个变量,以表明输赢。但是我的问题是,我一直试图编码if-else/if在移动过程中是否符合我想要的条件,但我很难。我需要帮助或关于如何做到这一点的线索。谢谢。
breed [players player]
breed [games game]
globals [namelist pointslist]
players-own[name points] ;;going to add another variable here
games-own[points istaken]
to setup
ca
ask patches [set pcolor black]
set namelist["Player 1" "Player 2" "Player 3" "Player 4" "Player 5" "Player 6" "Player 7" "Player 8" "Player 9" "Player 10"]
set pointslist["1" "1" "1" "5" "3" "3" "4" "2" "2" "5"]
;;define counter
let counter 0 ;;0-9
repeat 10 [
create-players 1[
set name item counter namelist
set points item counter pointslist
setxy random-xcor random-ycor
set shape "person"
pen-down
]
set counter counter + 1
]
create-games 30[
set shape "circle"
setxy random-xcor random-ycor
set points random 5 + 1 ;
]
reset-ticks
end
to go
tick
ask players[move]
end
;;this is the part where I added my if-else code but i cannot get it
to move
ask players [
right(random 181) - 90
fd 1
let hw one-of games-here
if hw != nobody[
ask hw [set label "hit"]
]
]
end
非常感谢您的解决方案。我想问,为什么球员不应该问球员?在你的评论中... – Barry
我还想问这行代码“ifelse(points> [points] _hw” – Barry
在'go'你有'问玩家[move]'这很好,但是那么你的'移动'开始于'提问玩家',这意味着每个玩家都会要求所有玩家进行'移动'动作,对于10个玩家,移动动作每次执行100次而不是10次。你给了玩家和游戏的'points'属性,但是玩家正在执行移动动作,当玩家正在执行移动动作时,'points'指向它的点(你可以用自己的[points]来代替它“) – Alan