KINGx - Das inoffizielle PlayStation Forum & News Portal
[LUA TUT]Kleines Programm - Druckversion

+- KINGx - Das inoffizielle PlayStation Forum & News Portal (http://www.kingx.de/forum)
+-- Forum:    PS Vita / PSP (/forumdisplay.php?fid=1)
+--- Forum: Homebrew (/forumdisplay.php?fid=8)
+---- Forum: Development (/forumdisplay.php?fid=34)
+----- Forum: Dev-Tutorials (/forumdisplay.php?fid=59)
+----- Thema: [LUA TUT]Kleines Programm (/showthread.php?tid=26543)


[LUA TUT]Kleines Programm - WinterFrost - 11.11.2010 17:04

In diesem Tutorials zeige ich euch, wie ihr in LUA ein kleines Programm schreibt.
Um dieses Tutorial befolgen zu können , solltet ihr einige Vorkenntnisse in LUA besitzen.
Es reicht allerdings aus, wenn ihr dieses Tutorial bereits befolgt und auch verstanden habt.
Um dieses Tutorial auch zu verstehen solltet ihr es aufmerksam durchlesen.

Das "Programm" wird so aussehen:


Nun, fangen wir an.

Wir definieren zuerst eine Farbe, in unserem Falle wäre das

Code:
white = Color.new(255,255,255)

ihr könnt natürlich mehrere Farben definieren und die Farben später ändern.

Nun setzen wir alles in eine schleife, sodass alle Tasten dauerhaft abgefragt und die Texte ebenfalls dauerhaft angezeigt werden.
Dies tuen wir mit

Code:
while true do

Darauf folgt folgender Befehl :

Code:
screen:clear()

Dieser Befehl sorgt dafür das der ganze Bildschirm Inhalt gelöscht wird.
Dies müssen wir tuen, damit sich die verschiedenen Texte der beiden Scripte später nicht überlappen.
Das Programm würde auch ohne diesen Befehl funktionieren, nur wie oben schon genannt würden sich die beiden Texte später überlappen.

Das war ein kleiner Teil des Codes, kommen wir zum nächsten Teil.

Code:
screen:print(1,1,"Druecke X um eine Datei von A nach B zu kopieren.", white)
screen:print(1,11,"Druecke O um zu beenden", white)

Dieses Stück des Codes gibt an, was auf dem Bildschirm angezeigt werden soll.
Wenn ihr zuvor mehrere Farben definiert habt, dann könnt ihr die Farbe des Textes natürlich auch ändern.

Als nächsten eröffnen wir die Tastenerkennung mit

Code:
pad =Controls.read()

Jetzt geben wir an was beim drücken einer beliebigen Taste passieren soll.

Code:
if pad:cross() then
System.copyFile("text.txt","ms0:/PSP/text.txt",1)
System.message("Die Datei wurde erfolgreich kopiert.",0)
if System.buttonPressed(0)~=1 then
dofile ("script2.lua")
end
else
if pad:circle() then
System.Quit()
end
end

Code:
System.copyFile

ist ein Befehl, der eine Datei von einem Ort zum anderen kopiert.
In die Klammer wird der Dateipfad geschrieben, also von wo die Datei kopiert werden soll und wohin sie kopiert werden soll.
In unserem Falle wäre das eine Text-Datei in unserem Programm Ordner die nach PSP/GAME kopiert wird.

Code:
System.message()

gibt eine Systemnachricht auf den PSP Bildschirm aus.
In die Klammer wird die Nachricht geschrieben, die angezeigt werden soll. Hinter der Nachricht kommt eine Zahl, diese Zahl kann entweder 1 oder 0 sein.
Mit 1 würden wir eine Nachricht darstellen die eine Ja, Nein und eine Zurück Option hat.
Mit 0 würden wir allerdings eine Nachricht darstellen die nur eine Zurück Option hat, so wie unsere Nachricht.
Wenn X gedrückt wird, dann wird also eine Datei von A nach B kopiert und eine Nachricht angezeigt, wenn die Datei erfolgreich kopiert wurde.

Code:
if System.buttonPressed(0)~=1 then
dofile ("script2.lua")
end

Durch dieses Codestück wird angegeben was passiert, wenn wir in der Systemnachricht Zurück (Kreis) drücken.
In unserem Falle wird dann ein Script namens sript2.lua geladen.
Mit diesesm Script kopieren wir später die kopierte Datei wieder zurück, aber dazu später mehr.
Mit end beenden wir einfach den soeben eröffneten if-Befehl.
Als nächtes legen wir fest, was beim Drücken der Kreis Taste passiert.

Code:
if pad:circle() then
System.Quit()
end
end

Wenn Kreis gedrückt wird, wird das Programm beendet, dass sollte klar sein.
Die beiden end's beenden den if-Befehl und die Tastenerkennung.

Jetzt bringen wir das ganze noch auf den PSP Bildschirm, mit

Code:
screen.flip()
screen.waitVblankStart()
end

Das sollte auch klar sein, screen.flip() bringt alles auf den Bildschirm, screen.waitVblankStart() würde angeben wie lange alles angezeigt und abgefragt werden soll, da wir aber alles in einer while-Schleife laufen haben, bleibt die Klammer einfach leer.
end beendet das ganze Script.

Das ganze Script sieht dann so aus:

Code:
white = Color.new(255,255,255)

while true do
screen:clear()
screen:print(1,1,"Druecke X um eine Datei von A nach B zu kopieren.", white)
screen:print(1,11,"Druecke O um zu beenden", white)
pad =Controls.read()
if pad:cross() then
System.copyFile("text.txt","ms0:/PSP/text.txt",1)
System.message("Die Datei wurde erfolgreich kopiert.",0)
if System.buttonPressed(0)~=1 then
dofile ("script2.lua")
end
else
if pad:circle() then
System.Quit()
end
end
screen.flip()
screen.waitVblankStart()
end


Kommen wir nun zum zweiten Script.
Inhaltlich sind die beiden Scripte eigentlich gleich, nur der Text ist etwas anders und der Dateipfad bei

Code:
System.copyFile()

ist ebenfalls anders.
Deshalb werde ich das zweite Script nicht weiter erklären, denn es ist fast identisch mit dem ersten Scripit.
Der Unterschied ist nur das im Text statt "Drücke X um eine Datei von A nach B zu kopieren" "Drücke X um eine Datei von B nach A zu kopieren" steht und die Datei wieder zurück kopiert wird.
Also sieht das zweite Script so aus:

Code:
white = Color.new(255,255,255)

while true do
screen:clear()
screen:print(1,1,"Druecke X um eine Datei von B nach A zu kopieren.", white)
screen:print(1,11,"Druecke O um zu beenden", white)
pad =Controls.read()
if pad:cross() then
System.copyFile("ms0:/PSP/text.txt","text.txt",1)
System.message("Die Datei wurde erfolgreich kopiert.",0)
if System.buttonPressed(0)~=1 then
dofile ("script.lua")
end
else
if pad:circle() then
System.Quit()
end
end
screen.flip()
screen.waitVblankStart()
end


DownloadDownload

Wenn ihr das Tutorial erfolgreich befolgt habt, dann habt ihr ein kleines Programm geschrieben.
Ich hoffe das Tutorial hat euch gefallen.

MfG


RE: [LUA TUT]Kleines Programm - PSFAQ - 11.11.2010 17:20

Cooles TuT,Winterfrost,Danke.


RE: [LUA TUT]Kleines Programm - WinterFrost - 11.11.2010 17:53

Thx.
Wie finden die anderen das Tut?

MfG


RE: [LUA TUT]Kleines Programm - fixit98 - 11.11.2010 19:28

WinterFrost :
Thx.
Wie finden die anderen das Tut?

MfG


Ist jetzt nichts schweres Wink
Aber gut erklärt,für Noobs sicher interessant !


RE: [LUA TUT]Kleines Programm - WinterFrost - 11.11.2010 19:45

Es soll ja auch nicht schwer sein, aber wie du schon schriebst ist es auch eher etwas für Anfänger.

MfG


RE: [LUA TUT]Kleines Programm - Namenloser - 11.11.2010 21:28

@Winterfrost
Dir ist schon klar das du mit diesem tut einen weiteren großen aufruf gestartet hast das jede Woche noch mehr Easy Installer erscheinen werden ? Big Grin

Aber sonst gutes Tut Tongue Diesesmal kann ich nicht benörgeln ^^


RE: [LUA TUT]Kleines Programm - WinterFrost - 11.11.2010 21:30

Och mist, dass habe ich nicht bedacht.^^

MfG


RE: [LUA TUT]Kleines Programm - Unbekannt - 11.11.2010 21:35

Exellentes TuT. Lua ist aber viel zu einfach Wink, müsste jeder können.


RE: [LUA TUT]Kleines Programm - Vladek - 11.12.2010 18:45

danke, sowas in der art habe ich gesucht Wink