我正在编写一个基于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
之后
答案 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=
方法。尝试没有等号。