我正在研究ruby项目的井字问题。我想有一个方法控制并报告谁是当前的玩家。对于零移动,我想随机选择谁去。之后,它将在两个玩家之间平衡交替。这是我到目前为止的代码
def current_player (move_counter = 0)
case move_counter
when move_counter = 0
player_on_deck = rand() > 0.5 ? "Computer" : @player
when move_counter > 0
player_on_deck == "Computer" ? @player : "Computer"
end
move_counter +=1
return player_on_deck move_counter
end
我认为我搞砸了move_counter
的实施,以便让我知道何时做什么。每次调用此方法时,它都从零开始。我是否需要创建一个只跟踪移动并将该值传递给此方法的新方法?或者是否允许move_counter
在此方法中保持最新状态?
答案 0 :(得分:2)
您要在move_counter
子句中设置when
的值:when move_counter = 0
应为when move_counter == 0
。此外,您在第二次尝试定义player_on_deck
时遇到相反的问题 - 您使用的是==
,但应该使用=
。
以下是我认为您真正想要做的事情:
def current_player (move_counter = 0)
case move_counter
when move_counter == 0
player_on_deck = rand() > 0.5 ? "Computer" : @player
when move_counter > 0
player_on_deck = "Computer" ? @player : "Computer"
end
return player_on_deck
end
答案 1 :(得分:1)
我认为你只需要决定将计数作为参数传递并在方法内增加它(这不是最好的)
尝试这样的事情:
def current_player (move_counter = 0)
case move_counter
when move_counter == 0
player_on_deck = rand() > 0.5 ? "Computer" : @player
when move_counter > 0
player_on_deck == "Computer" ? @player : "Computer"
end
return player_on_deck
end
并增加游戏循环底部的move_counter
。
第一次通过默认参数处理,并且任何时候过去将由您在游戏循环底部定义的计数器处理。
**也正如eebbesen所说,移动计数器没有在你的案例陈述中被评估,它正在被重置。