我需要创建一个方法turn_left谁改变了面孔,面对总是开始:南(我实现一个机器人移动到一个板)所以如果我调用方法turn_left应该改变面向东,然后到北和西,然后回到南方.我想这样的事情:
{ 0: S 1: E 2: N 3: W }
这是我的代码
# Models the Robor behavior for the game class Robot def initialize(attr = {}) # @position = attr[:position] # @move = attr[:move] @facing = :south # @turn_left = # @turn_right = # @errors = end def position end def move end def facing @facing end def turn_left end def turn_right end def errors end end
非常感谢!!!
这样的事情怎么样:
class Robot FACINGS = [:south, :east, :north, :west] def initialize(attr = {}) @facing_index = 0 # south end def facing FACINGS[@facing_index] end def turn_left @facing_index += 1 @facing_index %= 4 end def turn_right @facing_index -= 1 @facing_index %= 4 end end
的%= 4
(或者,如果你真的想进一步推广这个,%= FACINGS.length
)执行模运算来"包装"目前指数回0-3的范围内.
因此,通过递增/递减此数字,您可以在四个方向之间切换.
我不知道你是怎么意图实现position
,move
并且errors
,但是我相信这是超出你的问题的范围.