当前位置:  开发笔记 > 后端 > 正文

使用Ruby中的turn_left方法更改饰面

如何解决《使用Ruby中的turn_left方法更改饰面》经验,为你挑选了1个好方法。

我需要创建一个方法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

非常感谢!!!



1> Tom Lord..:

这样的事情怎么样:

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,但是我相信这是超出你的问题的范围.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有