案例陈述与ruby有关

时间:2013-12-08 21:04:06

标签: ruby switch-statement

我正在研究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在此方法中保持最新状态?

2 个答案:

答案 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所说,移动计数器没有在你的案例陈述中被评估,它正在被重置。