Programmier Lua Problemmm?

1 Antwort

Nehmen wir einmal deine erste Funktion unter die Lupe.

Dort legst du ein Array an, welches drei Elemente beinhaltet und lässt in der darauffolgenden Zeile eine Zufallszahl zwischen 1 und 30 (beide inklusiv) erzeugen. Nun einmal angenommen, das Ergebnis ist 17: In der dritten Zeile würde dein Programm also versuchen, ein 17. Element aus dem Array zu fischen, welches aber nicht gibt. Das Ergebnis wäre demnach nil.

Diesen Fehler machst du bei all deinen Funktionen. In der Funktion Anzeige wird es dann knallen, wenn du versuchst, nil-Objekte mit Strings zu verbinden.

Du solltest also entweder deine Arrays auffüllen, sodass sie genügend Elemente haben oder, was du wohl eher beabsichtigst, die Intervalle für die Erzeugung der Zufallszahlen verringern. In der Funktion Angebot beispielsweise wäre der richtige Wert die 3.


Mzakh 
Fragesteller
 06.11.2021, 01:37

Könnte man auch bei dem math.random ein table spezifizieren aus den dann die zahlen die in den table vorhanden sind eine zufällige ausgewählt wird?

0
regex9  06.11.2021, 09:58
@Mzakh

Wenn du Werteauflistungen wie oben hast, geht es recht einfach:

local values = { 'a', 'b', 'c', 'd' }
print(values[math.random(#values)])

Der #-Operator liefert die Anzahl an Werten in values zurück. Das wäre hier 4, woraufhin die random-Funktion einen Wert zwischen 1 und 4 (beide inklusiv) generiert.

Wenn du allerdings eine Tabelle mit verschiedenen Keys hättest, wäre es etwas schwieriger, da du erst einmal alle Keys bräuchtest. Eine Option wäre es also, erst alle Keys zu holen und separat zu speichern.

local keys = {}
local index = #keys

for key, value in pairs(your_table) do
  keys[index + 1] = key
end

print(your_table[keys[math.random(#keys)]])
0