KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: [TUT] Pge Lua: Menüs
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo und Willkommen zum einem nicht nummerierten Pge Lua Tutorial.

Da in letzter Zeit viele Leute sich an Pge versuchen, aber schon an etwas einfachen wie ein Menü scheitern, zeige ich euch heute wie man ein Menü auf 2 Arten erstellen kann. Los geht's.

Typ 1: Standard Lua Menü

Am einfachsten und anpassbarsten ist ein Menü welches komplett in Lua geschrieben wird, das garantiert auch eine gute Performance.

Hier mal wieder ein Wall of Code, einfach in die script.lua reinschieben:
Spoiler: (anzeigen)
Ich erklär nur das Zeug was neu ist, lest die anderen Tut's von mir bevor ihr das hier probiert.

Code:
menu = {"BUTTON","NOCH EIN BUTTON","EXIT"}

FILE_INDEX = 1
INDEX_MIN = 1
INDEX_MAX = #menu


"menu" ist ein table in dem wir unsere Menüpunkte definieren, welche später angezeigt werden.
FILE_INDEX ist der grade ausgwählte Menüpunkt.
INDEX_MIN und INDEX_MAX sind dazu da um zu verhinder das man aus dem Menü rauskommt.

Code:
for index,entry in ipairs(menu) do
        if index == FILE_INDEX then
        verdana16:print(100, index * 20, blue,entry)
        else
        verdana16:print(100, index * 20, red,entry)
        end
    end


Die ipairs Schleife loopt im angebenen table durch alle entrys(inhalte) durch, entry stellt das gradige element dar also unseren Text für den Menüpunkt. index ist die Nummer des Menüpunkts.
Was wir hier tun ist einfach durch alle Elemente durchloopen und falls ein Element der Auswahl entspricht es mit einer anderen Farbe zu zeichnen. Wir multiplizieren den index mit 20 damit alle Menüpunkte schön untereinander angezeigt werden.

Mein Gott das war viel Text. Ich hoffe ihr versteht das.

Code:
if pge.controls.pressed(PGE_CTRL_UP) and FILE_INDEX > INDEX_MIN then
        FILE_INDEX = FILE_INDEX - 1
    elseif pge.controls.pressed(PGE_CTRL_DOWN) and FILE_INDEX < INDEX_MAX then
        FILE_INDEX = FILE_INDEX + 1
    end


Das hier ist eigentlich das Kernstück der Auswahl des Menüs. Wenn wir rauf/runter drücken wird von FILE_INDEX 1 hinzu/weg gezählt. Ausserdem wird mittels INDEX_MIN und INDEX_MAX überprüft ob wir nicht schon am Anfang oder am Ende des Menüs sind.

Code:
if pge.controls.pressed(PGE_CTRL_CROSS) then
        if FILE_INDEX == 1 then
        --mach zeug
        elseif FILE_INDEX == 2 then
        --mach anderes zeug
        elseif FILE_INDEX == 3 then
        --exit zeug
        end
    end


Das is eigentlich ziemlich selbsterklärend. Wir checken bei welchen Menüpunkt wir sind und machen dementsprechendes Zeug.

Lua Hausübung: macht ein Menü welches 2 verschiedene Sounds abspielen kann.

Vlf Tut folgt, bin verdammt müde. Wer Rechtschreibfehler findet darf sie behalten.

Schönes Tutorial !
Mir kommt gerade eine Idee für diese Tutorials!!! Also wenn du Zeit hast:

Zu jedem Schritt, den du im Code machst, das Ergebnis dann auf der PSP ausgeführt als Bild zeigen!!!
wirklich ein super tut, aber ich habe eine frage: wie kann ich die position ändern, wo die menüpunkte angezeigt werden?
In dem Codeblock, mit dem die Einträge angezeigt werden die x und y Werte verändern,
Als Beispiel

Code:
for index,entry in ipairs(menu) do
        if index == FILE_INDEX then
               verdana16:print(220, 100 + index * 20, blue,entry)
        else
               verdana16:print(220, 100 + index * 20, red,entry)
        end
end

hi, ich möchte 14 menüpunkte anzeigen lassen, geht das?
cool aber wenn ich zum beispiel x drücke, soll zum beispiel das spiel starten. Wie geht dann das genau?
dofile("HIERLUADATEINAME.lua")

In der Datei ist dann dein Spiel Code.
top tut respect
@Dan-PSP:
Ich glaube dafür musst du dir selber ein Script schreiben... aber das geht ja vergl. weise schnell!
Ansonsten probier das doch einfach aus... indem du FILE_INDEX auf 14 erhöhst und menu entsprechend auf 14 Einträge erhöhst Wink

EDIT: Und du musst im ode natürlich noch anpassen, dass du diese auch auswählen kannst. Am einfachsten wäre vermutlich ein komplett neues Menü zu schreiben!

Grüße
Betta


P.S.:Hallo erstmal an alle Wink Bin neu hier, vielleicht ja schonmal von PSPS gehört...

Lett1 :
dofile("HIERLUADATEINAME.lua")

In der Datei ist dann dein Spiel Code.


Cool danke, und wie geht das man mit x startet?

Schau dir mein Tut zu steuerung in pge an.
Referenz-URLs