编写此代码的更好方法

时间:2017-04-10 10:14:57

标签: ruby user-interface graphics interface menu

我正在为菜单项目设计用户界面。我尝试使用for循环,例如:

for i in 0..8
    i=i
end
for k in 0..7
    k=k
end

if @selection==i && @unlock==k && $switches[(what do I do here?)]==?????
do thing

每当用户按下Y键时,它将关闭一个功能;如果@selection==1突出显示且用户按下“Y”键,则应关闭该特定位置的相应开关。 @unlock只是用来表示,除非将此全局布尔值设置为true,否则用户可以按“Y”并打开或关闭此开关。

1 个答案:

答案 0 :(得分:0)

首先,您可以将其他每个更改为以下内容:

BITMAP_PATH = "Graphics/Pictures/Input Map/switch"
if @selection==1 && @unlock1
  pbSEPlay("BW2MenuChoose",65)
  bitmap_switch = $switches[310] ? 'off' : 'on' # sets path to off/on
  @graphics["switch"].setBitmap(BITMAP_PATH + bitmap_switch)
  !$switches[310] # it changes value of boolean to opposite value
end

只有一个条件的选择可以这样写:

if @selection==0 && @unlock0
 pbSEPlay("buzzer",65)
end

您也可以尝试为@selection编写案例表达式。可能你可以干得更多,但我真的不明白每个@unlock的用途。

修改:

  BITMAP_PATH = "Graphics/Pictures/Input/switch"
  SELECTION_SWITCHES = [nil, 310, 300, 339, 338, 330, 318]
  def pbChangeSwitch
    case 
    when 0
      case @selection
      when 0,7
        pbSEPlay("buzzer",65) if instance_variable_get("@unlock#{@selection}")
      when 1..6
        if instance_variable_get("@unlock#{@selection}")
          pbSEPlay("BW2MenuChoose",65)
          bitmap_switch = $switches[SELECTION_SWITCHES[@selection]] ? 'off' : 'on'
          @sprites["switch"].setBitmap(BITMAP_PATH + bitmap_switch)
          index = SELECTION_SWITCHES[@selection]
          $switches[index] = !$switches[index]
        end
      end
      Graphics.update

请将$添加到最后一行。 bitmap_switch不能truefalse,因为您将其添加到BITMAP_PATH,因此必须为“关闭”或“开启”。

相关问题