为什么没有。在Ruby Shoes中工作?

时间:2016-06-11 23:58:45

标签: ruby shoes

我正在编写一个基于Fate RPG的小游戏。掷骰子时,我想使用.replace将字符串替换为另一个字符串。我可以让它在一个孤立的环境中工作,但是当我尝试从我的程序中调用该函数时;好像鞋子完全没有意识到它。

以下是函数如何正常执行的简单示例:

Shoes.app {
@push = button "Push me"
@note = para "Nothing pushed so far"
@push.click { @note.replace "Aha! Click!" }
}

以下是我游戏中的相关代码:

$results = para "Roll results go here.", :align => "center",
        :margin_bottom => 20, :margin_top => 8
@roll_button.click {
    current_roll = Die.new
    current_roll.roll
    current_roll.display_dice
    current_roll.tally
    current_roll.calc_total_roll(1) #param = skill level
    $shift  = current_roll.calc_total_shift(2) #param = opposition  
    $results.replace "Actual results"                       
    }

$results块在代码中的位置与@roll_button.click块不同,但我尝试将点击块移动到代码中的许多不同位置,并且它没有有所作为,所以我不认为它的相关性。感谢。

*编辑:删除了不必要的' ='在$results.replace之后

2 个答案:

答案 0 :(得分:2)

我终于开始工作了。问题是在.display_dice之前运行的.replace函数。违规代码在这里:

if $result1 == 1
        $die1.path = "dice_plus-1.png"
    elsif $result1 == 0
        $die1.path = "dice_nil-1.png"
    elsif $result1 == -1
        $die1.path = "dice_minus-1.png"
    else
        exit(1)
    end

我打算让exit(1)让我知道我的骰子是否收到他们不应该接受的值,但是它以某种方式阻止下一行代码运行,即使程序流程避免了这些行。固定代码在这里:

if $result1 == 1
        $die1.path = "dice_plus-1.png"
    elsif $result1 == 0
        $die1.path = "dice_nil-1.png"
    else $result1 == -1
        $die1.path = "dice_minus-1.png"
    end

答案 1 :(得分:1)

您没有调用replace方法,而是调用可能不存在的replace=方法。尝试没有等号。