编写此代码的更好方法



我正在为菜单项目设计用户界面。我尝试使用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"并打开或关闭此开关。

首先,您可以将每个更改为如下所示的内容:

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,所以它必须是"关闭"或"打开"。

相关内容

  • 没有找到相关文章

最新更新