Ich programmiere ein kleines Spiel basierend auf dem Fate RPG. Wenn die Würfel gerollt werden, möchte ich eine Zeichenfolge durch eine andere Zeichenfolge ersetzen, indem Sie .replace
verwenden. Ich kann es in einer isolierten Umgebung arbeiten lassen, aber wenn ich versuche, die Funktion aus meinem Programm heraus aufzurufen; Es ist, als ob Shoes sich dessen gar nicht bewusst ist.Warum funktioniert .replace nicht in Ruby Shoes?
Hier ist ein einfaches Beispiel dafür, wie die Funktion arbeitet, dass richtig ausgeführt wird:
Shoes.app {
@push = button "Push me"
@note = para "Nothing pushed so far"
@push.click { @note.replace "Aha! Click!" }
}
Und hier ist der entsprechende Code von meinem Spiel:
$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"
}
Der $results
Block ist in einem anderen Position im Code als der @roll_button.click
Block, aber ich habe versucht, den Klick-Block zu vielen verschiedenen Stellen im Code zu bewegen, und es hat keinen Unterschied gemacht, so dass ich denke, es ist nicht relevant. Vielen Dank.
* edit: Entfernt unnötige ‚=‘ nach $results.replace
Hallo, willkommen in SO. Im Interesse der Ordentlichkeit werde ich abstimmen, um die Frage zu schließen, weil sie nicht genug Informationen für andere als Sie in der Lage ist, sie zu beantworten. Aber ich bin froh, dass Sie Ihren Code zur Arbeit bekommen haben - das ist großartig! Danke, dass Sie eine Antwort hinzugefügt haben. –