Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | miss_bisque |
I have a random number generator that creates an array of 3 random numbers at the beginning of my game (it autoloads). For example, the script returns numbers [0 1 8]
. I want to use those numbers to index into an array of strings, and print the indexed string during my game directions.
var randN = GetRandomNumber.sample #returns number array [X X X]
var object_labels = ["bowl", "bread", "cheese_grater", "clock", "cup", "pot", "straws", "tissue_paper", "toilet_paper", "tooth_paste"] #strings to use in game
var object_avoid_idx = randN[randi()%randN.size()] #index into the number array
func _physics_process(delta):
elif !start and !end:
$gameOver.set_text("Avoid the " + str(object_labels[object_avoid_idx]))
# end text else:
$gameOver.set_text("Game Over!")
I am thinking that when I create the variable object_avoid_idx
it will be an index from the randN
array. For example, if my randN
array = [0 1 8]
then object_avoid_idx
will be equal to either 0
, 1
, or 8
depending on the the number chosen in randi()%randN.size()
.
However, when I run the program I get an error that says Division By Zero in operator '%'
.
Any thoughts on how to tweak this? Thanks!
p.s i’ve cut some code out of the func _physics_process(delta):
for brevity.
Can you show me the random number generator code?
Skyfrit | 2020-11-03 07:46
Yep!
extends Node
var list = range(0,10)
var sample =[]
func _ready():
randomize()
for i in range(3):
var x = randi()%list.size()
sample.append(list[x])
list.remove(x)
print(sample)
miss_bisque | 2020-11-03 16:29
Ok, It seems that object_avoid_idx
created before GetRandomNumber is ready.
So, change
var object_avoid_idx = randN[randi() % randN.size()]
to
onready var object_avoid_idx = randN[randi() % randN.size()]
Skyfrit | 2020-11-03 18:34
That worked! Thank you! Just to clarify for the future - when in the game does onready var object
initialize a variable as opposed to just having var object
?
miss_bisque | 2020-11-03 21:07