KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Codeschnippsel Erklärung?
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi

Und zwar hab ich ein paar Fragen zu der Scriptsprache "Lua". Und zwar bin ich jetzt mit allen Tutorials bei lua.bumuckl.com durch und habe ein paar Sachen noch nicht ganz verstanden:

1.:

Code:
function printAllLines(datei,color)
        y=10
        zeilen = {}
        datei = io.open(datei,"r")
        for line in datei:lines() do
            zeilen[line] = line
                        y=y+10
            screen:print(0,y,zeilen[line],color)
        end
        datei:close()
    end


Diesem Codeschnippsel hat er nicht weiter erklärt, er ist ja eigentlich recht gut verständlich aber ...

Code:
for line in datei:lines() do
            zeilen[line] = line
                        y=y+10
            screen:print(0,y,zeilen[line],color)


...kapier ich nun garnicht. Kann mir da mal jemand genau jede einzelne Zeile erklären?

Das nächste wäre folgendes.

2.:

Der Macher der Lua Tutorials hat ja die ganzen io-Commands erklärt:

Code:
r - Lesemodus (read mode)
    w - Schreibmodus, überschreibt kompletten Inhalt (write mode)
    a - Fügt zum existierenden Inhalt hinzu (append mode)
    b - Binärmodus (binary mode)
    r+ - Updatemodus (existierende Daten bleiben)
    w+ - Updatemodus(existierende Daten bleiben)
    a+ - Zufüg -und Updatemodus (existierende Daten bleiben, fügt nur am Ende hinzu)


Allerdings wird mir nicht erklärt was der Unterschied zwischen "w" und "w+" oder "r" und "r+" oder "a" und "a+" ist. Was kann man mit w,r oder a nicht machen was man mit w+, r+ oder a+ machen kann?

Dann als nächstes:

3.:

Code:
color=Color.new(255,255,255)
    add = 0
    
    System.irdaInit()
    
    while true do
        remote = System.irdaRead()
        remotelength = string.len(remote)
        
        screen:print(0,0,add,color)
        
        if remotelength>1 then
            add = add+1
        end
        
        screen.flip()
        screen.waitVblankStart()
    end


Muss da bei...

Code:
if remotelength>1 then


nicht "remotelength>0" hin?

Der nächste Code zur nächsten Frage ist folgender:

4.:

Code:
    weiss = Color.new(255,255,255) --definiert die farbe weiss
    schwarz = Color.new(0,0,0) --definiert die farbe weiss
    
    malflaeche = Image.createEmpty(480,272) --erstellt ein neues, leeres Bild mit 480x272 Pixeln
    malflaeche:clear(weiss) --färbt das Bild "malflaeche" weiss
    
    cursor = Image.load("cursor.png") --lädt das Bild "cursor.png" in die Variable cursor
    cursor_x = 100 --Variable mit dem Wert 100, später unsere X-Position des Cursors
    cursor_y = 100 --Variable mit dem Wert 100, später unsere Y-Position des Cursors
    
    while true do --Mainloop
        pad = Controls.read() --DPad-Code...muss man nicht verstehen. Fragen bitte ins Forum posten
        
        dx = pad:analogX()
        dy = pad:analogY()
        
        if dx > 30 then
            cursor_x = cursor_x + (math.abs(pad:analogX())/64)
        end
        if dx < -30 then
            cursor_x = cursor_x - (math.abs(pad:analogX())/64)
        end
        if dy > 30 then
            cursor_y = cursor_y + (math.abs(pad:analogY())/64)
        end
        if dy < -30 then
            cursor_y = cursor_y - (math.abs(pad:analogY())/64)
        end --DPad-Code ENDE
        
        screen:blit(0,0,malflaeche) --zeigt die Malfläche an
        screen:blit(cursor_x, cursor_y, cursor, true) --zeigt das cursor auf cursor_x und cursor_y an
        
        if pad:cross() then
            malflaeche:drawLine(cursor_x, cursor_y,cursor_x, cursor_y,schwarz)
        end
        
        screen.flip()
        screen.waitVblankStart()
    end


Warum will man von jedem die Absolute Zahl haben? Das wär doch nur bei If-Schleife 2 und 4 notwendig aber doch nicht auch bei 1 und 3, oder? Und warum durch 64? Ist das etwa die Zahl die dann letztendlich den Speed angibt und kann man die auch zu z.B. 80 ändern und dadurch wird der Cursor nur langsamer? Und was genau macht die...

Code:
malflaeche:drawLine(cursor_x, cursor_y,cursor_x, cursor_y,schwarz)


...Funktion?Ich weiß nur dass sie eine Linie zeichnet aber warum stehen die Variablen doppelt drin, ist etwa das erste cursor_x und cursor_y der Anfang der Linie und das zweite cursor_x und cursor_y das Ende der Linie?

Meine nächste Frage wäre dann noch folgende:

6.:

Ich weiß zwar dass es z.B. heißt

Code:
screen:print(1,1,"Hallo PSPKing.",white)

und/oder

screen.flip()


Aber wann nimmt man Doppelpunkt und wann den normalen Punkt nach z.B. Screen und welchen Grund gibt es dafür?

Meine nächste Frage wäre:

7.:

Immer wenn ich einen 3D Luacode (also der "3D Gu" Code enthält" über meinen Luaplayer für Windows abspielen will dann kommt nur ein schwarzer Bildschirm. Wenn ich allerdings noch screen.flip() anhänge kommt ein pinker flackernder Bildschirm aber kein 3D-Dreieck. Liegt dies an dem Luaplayer oder am Code? Über der PSP hab ich es noch nicht probiert. Der Code stammt übrigens komplett von lua.bumuckl.com.

Meine letzte Frage lautet:

8.:

Ist dieser Code nicht falsch?:

Code:
bild = Image.load("wasweissich.png")
    
    while true do
        screen:blit(0,0,bild,true)
        screen.waitVblankStart()
        screen:flip()
    end


Eigentlich müsste doch erst screen:flip() und dann erst screen.waitVblankStart() kommen ansonsten dürfte doch sonst nichts angezeigt werden da die Definition wo das Bild angezeigt werden soll (screen:blit()) von screen.waitVblankStart() bevor es von screen.flip() auf dem Bildschirm angezeigt wird "gelöscht" wird. Ich habe versucht den Code auszuführen und er klappt einwandfrei, wieso?

Ich hoffe es waren nicht zu viele Fragen und es kann mir jemand helfen.

MfG

thewolf16

Und deshalb suche ich jemanden der mehr wie Bahnhof versteht. Big Grin
8. ist richtig.

Edit: P.S. ich code auf eine ganz andere Art.
Mit mActual und so Wink
Die Lua-Szene stirbt aus ...
Sieht leider so aus. Sad
Ist doch gut :O
Lua hat einfach sehr begrenzte Möglichkeiten, lernt lieber eine Programmiersprache!
Sollte jetzt kein Flame sein Wink
Ich brauch aber Lua auch u.a. für Gmod10 und MTA San Andreas Server. Wäre sehr nett wenn jemand doch noch meine Fragen ausführlich beantworten könnte. Wenn ich das alles rausbekommen habe dann kann ich dann nämlich hier mein erstes Lua Homebrew ankündigen was ich schon in Planung hab (Wer mir hilft wird mit in den Credits erwähnt).
Referenz-URLs