2017-10-28 76 views
2

我需要讓兩隊特工打架,如果他們看到對方。每個球隊都有50%的獲勝機會。 如果一個代理的能量比最初配置的少,它會損失50%的能量。 我該怎麼做?我的代碼看起來不對。謝謝。如何讓兩個特工打架

to move-teamA 
ask teamA 
[ 
ifelse any? teamB-on patch-right-and-ahead -90 1 or any? teamB-on patch- 
ahead 1 
[ 
    fd 1 
    if energy < advance_energy [set energy (energy/2)]        
    let x random 1 
      if x = 0 [fd 1] 
      if x = 1 [die]] 
end 
+0

是你的問題,你的代理不死,或者他們不會失去能量?如果是前者,「隨機1」會一直給你0,如果你想讓'x'爲0或1,你應該做'隨機2'。如果是後者,你可以包含更多細節,比如一些設置代碼?什麼是超前能量?您可能想查看提供[MCVE](https://stackoverflow.com/help/mcve)的準則,以查看哪些內容有助於回答問題。 –

+0

Hi @LukeC感謝您的幫助。 問題是代理不死。我改成 讓x隨機2 如果x = 0 [fd 1] 如果x = 1 [死亡] 代碼編譯但是沒有做任何事情。 –

回答

1

看看這種方法 - 我認爲這是你試圖做的更簡單的版本。我忽略了你的energy組件,因爲我不確定你是如何設置的,但是你可以隨意放置它。

breed [ teamA one-teamA ] 
breed [ teamB one-teamb ] 

to setup 
    ca 
    create-teamA 10 [ 
    setxy random-xcor random-ycor 
    set color red 
    ] 
    create-teamB 10 [ 
    setxy random-xcor random-ycor 
    set color blue 
    ] 
    reset-ticks 
end 

to go 
    ask turtles [ 
    let enemy one-of turtles in-cone 1 90 with [ breed != [breed] of myself ] 
    ifelse enemy != nobody [ 
     ifelse random 2 = 1 [ ; if visible enemy exists, flip coin 
     ask enemy [ die ] ; if 1, enemy dies, I move forward 
     fd 1 
     ] [ 
     die 
     ]      ; if 0, I die 
    ] [ 
     fd 1 
    ]      ; if no enemy, move forward 
    ] 
    tick 
end 
相關問題