Schleifen und Blöcke
Schleifen gehören ebenso zu den Dingen, um die man in LUA nie herumkommen wird, sind aber sowieso recht einfach. Zu den Schleifen & Blocks in LUA gehören die if-Blocks, die for-Schleifen, die while-Schleifen und die repeat-until-Schleifen. Ich werde hier nur näher auf die if-Blocks eingehen, aber trotzdem kurz erklären, welche Schleife was bedeutet:
for a=1,5 do screen:print(0,0,"a ist kleinergleich 5 und groeßergleich 1 !", farbe) end
->für z.B eine Zahl a von 1 bis 5 tue blablabla...
while a==2 do screen:print(0,0"a ist 2",farbe) end
->während a gleich 2 ist, tue blablabla...(der Unterschied zu den if-blocks: die while-schleife wird mehr als einmaldurchlaufen, sie kann sogar dauerhaft wiederholt werden. Die if-blocks gelten außerhalb von Schleifen nur einmal)
repeat a = a + 1 until a = 5 end
->wiederhole a ist a + 1 bis a gleich 5 ist...
Das waren ein paar kleine Beispiele. Jetzt zum if-Block, den man am häufigsten braucht:
farbe = Color.new(255,255,255) a=5b=3c=a*b while true do if a*b+c == 30 then screen:print(1,1,a*b+c, farbe) end if a*b+c > 30 then screen:print(1,1,"da stimmt was nicht", farbe) end screen.flip() screen.waitVblankStart() end
Die Bedeutung ist denkbar einfach: Falls a*b+c gleich 30 ist, wird das Ergebnis 30 auf dem PSP-Bildschirm ausgegeben. Falls a*b+c > 30 sein sollte, was aber nicht der Fall ist, erscheint der Text "da stimmt was nicht"... Es gibt noch andere Wege, das auszudrücken, man kann das alles in eine if-schleife packen:
if a*b+c == 30 then screen:print(1,1,a*b+c, farbe) else screen:print(1,1,"da stimmt was nicht", farbe) end
Hier wird für alle Werte ungleich 30 der Text ausgegeben "da stimmt was nicht". Es gibt aber noch eine andere Methode:
if a*b+c == 30 then screen:print(1,1,a*b+c, farbe) elseif a*b+c > 30 then screen:print(1,1,"da stimmt was nicht", farbe) end
..."elseif" ermöglicht sogar mehrere Alternativen innerhalb eines Blocks.