Shop    Board    Downloads

Willkommen bei PS-Evolution: Board.
Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.


 
Themen-Optionen
Alt 04.10.2008, 18:32   #1 (permalink)
Dev~Team ex-Oberhaupt.. ツ
 
 
Registriert seit: 03.01.2008
Alter: 16
Beiträge: 1.257

-DaRealXecon- eine Nachricht über ICQ schicken
Standard [TuT - LUA] Verwendung und Verarbeitung von Variablen

Was ist eine Variable?
Nun ja, bertachten wir eine Variable mal als Wort welches für uns Zahlenwerte oder gar Sätze speichern kann.

Eigentlich sollten wir Variablen kennen oder?!
Kleiner Tipp... Mathe ist doch nicht ganz um sonst Das hab ich bei Programmiern dazu gelernt, bzw. als die Leherin gefragt hat was ne Variable ist, wusste ich das schon^^

Also in Mathe verwendet man Variablen, für Formeln... Also wo man später nur noch die Zahlen statt den Buchstaben einsetzt!

Und genau so ist es auch in LUA bzw. in jeder anderen Programmiersprache!


Wir kennen das bestimmt schon, und zwar von den Farb-definationen^^

also von dem hier:
Code:
blau = Color.new(0,0,255)
Hier wird "blau" als Variable verwendet!
Wenn ich jetzt also was ausgeben will zum Beispiel "Hallo" dann schriebe ich das so:
Code:
screen:print(x,y,"Hallo",blau)
Wenn ich keine Variable verwenden will kann ich das auch so machen:
Code:
screen:print(x,y,"Hallo",Color.new(0,0,255))
Das ist zwar mehr arbeit zum schrieben aber es spart resourcen...
Resourcen die die PSP sowieso nicht hat^^

Also bei Variablen die nur ne Farbe speichern is das eigentlich egal^^ Aber wenn man z.B. viele Bilder hat, dann macht das schon was aus, bzw. Programmierer die sich schon an C oder C++ versucht haben wissen wie schnell die resourcen aufgebraucht sind 10 Variablen die nur von 0 bis 5 gehn mit Integer initilalisiern und schon ruckelt alles...

Naja aber darüber braucht man sich in LUA keine Sorgen machen!
In LUA kann man natürlich mehr als nur 10 Variabeln benutzen, da der LUA Player sie nach der größe ihres wertes unterschiedlich initialisiert

Also wenn wir nun ein Bild ausgeben und nur eine Zeile und keine Variable verwenden wollen, machen wir das so:
Code:
screen:blit(x,y,Image.load("ms0:/PSP/PHOTO/kA.png"))
Im gegensatz mit variable wäre das dann so:
Code:
bild = Image.laod("ms0:/PSP/PHOTO/kA.png")
screen:blit(x,y,bild)
Bei den Tasten also bei IF Abfragen geht das auch^^
Wir kennen es ja bis jetzt nur so:
Code:
while true do
  pad = Controls.read()
  if pad:cross() then
    ...
  end
end
Es geht aber auch so also wie oben ohne Variable, weil "pad" ist ja nichts anderes als eine Variable wo "Controls.read()" drinnen gespeichert ist!
Code:
while ture do
  if Controls.read():cross() then
    ...
  end
end
Also das kann man sich jetz aussuchen wie man es lieber hätte^^


Jetzt können wir mal versuchen Text oder zahlen in Variablen zu speichern... Das geht ganz einfach in LUA!

einfach am anfang der Datei, also vor dem mainloop, den namen der variable schreiben.
Dann ein "=" und das was er in die Variable speichern soll

Also z.B. so:
Code:
zahl = 1234
Also speicher der LUA Player die Zahl 1234 als Variable "zahl" im RAM Speicher ab.

erst jetzt kann ich den Wert unserer Zahl 1234 abfragen!
Also z.B. mal so:
Code:
if zahl == 1234 then
  System.Quit()
end
Also guckt der LUA Player jetzt ob in der Variable zahl das hier gespeichert ist: 1234

Wenn das übereinstimmt, dann macht der LUA Player das Tor zu dem code in der IF Abfrage auf und spielt ihn ab...

In userem fall wäre das jetzt System.Quit() also beendet er das Programm und geht ins XMB zurück

Jetzt können wir den Spieß noch umdrehn und sagen, wenn die Variable "zahl" nicht 1234 ist dann mach dies und das^^

Also:
Code:
if not zahl == 1234 then
  System.Quit()
end
Also wenn die Variable nicht 1234 enthält soll er das Programm beenden!

Aber wir können das auch noch schöner machen... weil ich finde das sieht irgendwie doof aus wenn da steht
Zitat:
if not zahl == 1234 then...
Sieht ja aus wie wenn ich mich auf Englisch mit meiner PSP unterhalte^^
Nunja, LUA ist eine Scriptsprache also wird das auch so bleiben aber wir können uns 4 Zeichen mit volgender Methoe sparen

Und zwar mit dem Operator ungleich! Weißt du noch wie der Ging?!
Also Gleich war so ==
Und ungleich geht nun so !=

Also schrieben wir mal:
Code:
if zahl != 1234 then
  System.Quit()
end
Ob da jetz vor der abzufragenden Variable not oder beim Operator != steht ist egal^^

Sollten wir aber versehendlich
Code:
if not zahl != 1234 then
  System.Quit()
end
schreiben, dann heißt das so viel wie
Zitat:
Wenn zahl nicht ungleich 1234 ist dann
System.Quit()
end
Also ich muss zugeben ich habe es nicht ausprobiert aber ich denke das es der LUA Player als == oder ähnliches wertet, also kann das zu fehlern füren....
Sollte der LUA Player diese merkwürdige abfrage übrhaupt zulassen

Das ist wie im Deutschen, wenn ich sage: Der Vogel sitzt nicht nicht am Baum, heißt das, das der Vogel am Baum sitzt^^
(Im gegensatz zum Englischen wo man doppelverneinung durchaus kennt... Im Deutsch hebt sie sich einfach auf!)



Nun kommen wir mal viel mehr zum Speichern von Texten

Wer es jetzt mit
Zitat:
text = Hallo wie gehts denn so auf PS-Evo?!
versucht wird nur einen Fehler entgegen kommen!

Den für Text braucht man zwei ""

Also so:
Code:
text = "Hallo wie gehts denn so auf PS-Evo?!"
Programmierer die in C/C++ oder C# bzw. angewante Programmiersprachen geübt sind, wissen das Buchstaben auch bloß Zahlen sind bzw. nur sehr wenige, oder viel mehr nur ganz bestimmte Buchstaben verwendet werden
Da wäre z.B. F oder C usw. Also die nennt man Hexanische Ziffern

Also die PSP speicher im RAM keine Buchstaben sondern Zahlen.

Das ganze System ist also auf Zahlen aufgebaut!
Deshalb ist die PSP auch nichts weiter als ein leistungs starker Taschenrechner mit geilen Bildschirm^^

Umgewandelt in den Binär Code Würde unser Satz so aussehn:
Code:
48616C6C6F207769652067656874732064656E6E20736F206175662050532D45766F3F21
Das haben manche vlt. schon mal im Hex Editor gesehn wenn sie eine Codeirte bzw. in den Binärcode umgewandelte (kompilierte) Datei geöffnet haben


Aber schluss mit dem ganzen!
Ich will hier niemanden verwirren!


Also wir haben eine Variable namens "text" in der volgendes gespeichert ist, und zwar "Hallo wie gehts denn so auf PS-Evo?!"

Jetz bringt uns das ja eig. nix wenn wir sie nicht ausgeben können^^

Das geht so:
Code:
screen:print(x,y,text)
Jetz haben wir das hier am Bildschirm der PSP stehn:
Zitat:
Hallo wie gehts denn so auf PS-Evo?!
Wollen wir noch einen Satz davor hinschreiben ist das kein Problem
Code:
screen:print(x,y,"-DaRealXecon- sagt:" ..text)
so... was bedeuten denn jetzt diese zwei Punkte vor der text Variable?!
nun ja die macht man immer in richtung "" also hätte ich jetz nach unserer variable noch etwas geschriebn müsste das so aussehn:
Code:
screen:print(x,y,"-DaRealXecon- sagt:" ..text.. "Gut oder?")
Logischer weiße muss ich wenn ich vor der Variable wenn kein text unter den "" steht keine Punkte machen



Jetzt wollen wir mal etwas versuchen...
Und zwar, wie kann ich wenn ich X drücke Text zueiner Variable hinzufügen und wie kann ich die Variable formatiern und neu bespielen?!

Ganz leicht!

Code:
text = "Hallo"
while true do
  pad = Controls.read()
  if pad:cross() then
    text = " Omegavirus :D"
  end
  if pad:square() then
    text = ""
    text = "Blub blub Fischiii :p"
  end
  screen:print(x,y,text)
  screen.flip()
end
Also mit X fügen wir " Omegavirus " zu "Hallo" dazu
Also erhalten wir am Bildschirm "Hallo Omegavirus "

Mit [] formatieren wir die variable "text" und speichern "Blub blub Fischiii " in sie^^

Noch etwas wichtiges!
Weißt du warum die Textausgabe ganz unten steht...?! Sie könnt auch oben stehn, und es würde auch funktioniern

ABER, wenn z.B. in der Variable text etwas geändert wird, und die Text Ausgabe steht ganz oben im Mainloop, dann wird das erst bei der nächsten durchlauf der schleife übernommen...

Steht die ausgabe ganz unten, werden die änderungen der Schleife sofort noch in dem selben durchlauf übernommen!

Zitat:
Waurm soll ich das unten schrieben?! die paar milli sekunden sin mir i-wie egal
Nein, derzeit ist es vlt. noch egal^^ Aber dein Programm läuft nicht mehr in echt zeit wenn die Textausgabe oben in der mitte oder sonst wo im code steht...
Also feststellen können wir das z.B. so, und Probiert es bei gelegenheit doch auch mal bitte aus!

Code:
weiss = Color.new(255,255,255)
while true do
  System.sleep(100)                    -- Wartet eine Sekunde!
  screen:clear()
  pad = Controls.read()
  if pad:cross() then
    screen:print(1,1,"Echt Zeit Programm!",weiss)
  end
  screen.flip()
end
Machen wir es jedoch falsch kommt die Meldung nicht sofort sondern erst nach einer Sekunde

Code:
weiss = Color.new(255,255,255)
while true do
  screen:clear()
  pad = Controls.read()
  if pad:cross() then
    screen:print(1,1,"Echt Zeit Programm!",weiss)
  end
  System.sleep(100)                    -- Wartet eine Sekunde!
  screen.flip()
end
Also immer dran Denken wie man was wo im Code platziert


Ich hoffe ich habe die Rechtschreibung nicht zu sehr Missbraucht
Und hoffe das ich einigen Helfen konnte und richtige Inhalte gegeben habe!

Mfg xecon


EDIT:

!= gibts nit in LUA^^
In LUA heißt das ~=


Also ~= statt != nehmen!
__________________




Geändert von -DaRealXecon- (07.01.2009 um 20:22 Uhr).
-DaRealXecon- ist offline   Mit Zitat antworten
Folgender Benutzer sagt Danke zu -DaRealXecon- für den nützlichen Beitrag:
Alt 04.10.2008, 18:52   #2 (permalink)
DeV TeAm:*LuA|C|HtMl|CsS*
 
 
Registriert seit: 29.07.2007
Beiträge: 617

Secret Raven eine Nachricht über ICQ schicken
Standard AW: [TuT - LUA] Verwendung und Verarbeitung von Variablen

Is das echt der Satz in Binär Code?! oder einfach mal auf gut glück auf n NumBlock gehauen?? xDD
__________________
Secret Raven ist offline   Mit Zitat antworten
Alt 04.10.2008, 18:55   #3 (permalink)
Dev~Team ex-Oberhaupt.. ツ
 
 
Registriert seit: 03.01.2008
Alter: 16
Beiträge: 1.257

-DaRealXecon- eine Nachricht über ICQ schicken
Standard AW: [TuT - LUA] Verwendung und Verarbeitung von Variablen

das is echt der satz Schreib den Block mal in den Hex Editor

Mfg xecon
__________________



-DaRealXecon- ist offline   Mit Zitat antworten
Alt 04.10.2008, 18:57   #4 (permalink)
DeV TeAm:*LuA|C|HtMl|CsS*
 
 
Registriert seit: 29.07.2007
Beiträge: 617

Secret Raven eine Nachricht über ICQ schicken
Standard AW: [TuT - LUA] Verwendung und Verarbeitung von Variablen

=O öcht? Hätt ich net gedacht du machst sowas gern ma.. nya bissl zufallsmäßig xDD
__________________
Secret Raven ist offline   Mit Zitat antworten
Alt 04.10.2008, 19:03   #5 (permalink)
Dev~Team ex-Oberhaupt.. ツ
 
 
Registriert seit: 03.01.2008
Alter: 16
Beiträge: 1.257

-DaRealXecon- eine Nachricht über ICQ schicken
Standard AW: [TuT - LUA] Verwendung und Verarbeitung von Variablen

LoL naja ok gut nene aber in meinen TuT's "lüge" ich net

Naja Spetestens wenn mein Projekt "Frankenstein PC" online geht ließt das mein Computii und geht mich an Und das wollt ich hald vermeiden ...

LoL

Also spammen wir mal net weiter
Spoiler:
__________________



-DaRealXecon- ist offline   Mit Zitat antworten
Alt 07.01.2009, 17:19   #6 (permalink)
Dev-Leader + DLoad-Mod
 
Benutzerbild von PSP-FREAKX
 
Registriert seit: 19.12.2007
Beiträge: 2.905

PSP-FREAKX eine Nachricht über ICQ schicken
Standard AW: [TuT - LUA] Verwendung und Verarbeitung von Variablen

das "!=" funktioniert nicht, aber ich hab irgendwo mal gesehen das das "~=" heißt


EDIT by xecooon
Danke!

Hab mal in SFX-rosa dazugeschrieben
__________________
>>>Coder 4 life<<<
>>>>>>PREcrypt GFX Pack<<<<<<
Spoiler:

Geändert von -DaRealXecon- (07.01.2009 um 20:23 Uhr).
PSP-FREAKX ist offline   Mit Zitat antworten

Lesezeichen

Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PATH Variablen sLipPerY PC Probleme & Fragen 1 06.12.2007 12:21


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 Uhr.


Powered by vBulletin® Version 3.8.1 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Idee, Umsetzung und Administration ChRiSt0pH | ArtWork/GFX der kleine hunger | Gründer (PSP-Freakz) kert