|
Verfasser |
Nachricht |
Lett1
Hurr Durr
Beiträge: 548
Gruppe: User
Registriert seit: Nov 2009
Status:
Offline
Danke erhalten: 597
|
[TUT] Pge Lua: Menüs
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:
-- Create some colors
red = pge.gfx.createcolor(255, 0, 0)
blue = pge.gfx.createcolor(0, 0, 255)
black = pge.gfx.createcolor(0, 0, 0)
-- Load a font, 16 pixels in height, to VRAM
verdana16 = pge.font.load("verdana.ttf", 16, PGE_RAM)
-- Check the font loaded correctly
if not verdana16 then
error("Failed to load font: verdana.ttf")
end
menu = {"BUTTON","NOCH EIN BUTTON","EXIT"}
FILE_INDEX = 3
INDEX_MIN = 1
INDEX_MAX = #menu
-- Loop with exit requested
while pge.running() do
-- Update controls
pge.controls.update()
-- Start drawing
pge.gfx.startdrawing()
-- End drawing
pge.gfx.clearscreen(black)
-- Activate the font for drawing
verdana16:activate();
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
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
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
-- End drawing
pge.gfx.enddrawing()
-- Swap buffers
pge.gfx.swapbuffers()
end
Ich erklär nur das Zeug was neu ist, lest die anderen Tut's von mir bevor ihr das hier probiert.
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.
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.
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.
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.
|
|
23.12.2009 22:17 |
|
Folgende User bedanken sich: |
|
pspbricker
Mod a.D.
Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 1641
|
RE: [TUT] Pge Lua: Menüs
Meine PS3 Games : Warhawk , NFS: Pro Street, Motorstorm ,Midnight Club LA, LittleBigPlanet, GTA4, Uncharted 2, Overlord, Killzone2, PES10, Battlefield ´43, Socom: Confrontation,
Forum Regeln Beachten! KEIN ISO Talk! KEINE Beleidigungen! KEINE illegalen Links!
|
|
04.01.2010 19:27 |
|
|
|
Gift
Ex-Mod
Beiträge: 4.974
Gruppe: User
Registriert seit: Jul 2008
Status:
Offline
Danke erhalten: 862
|
RE: [TUT] Pge Lua: Menüs
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!!!
[img]http://martuzki95.ma.funpic.de/signis/gift/gift.gesperrt
Wenn du denkst, dass du denkst, dann denkst du nur dass du denkst. Denn das denken der gedachten Gedanken ist nur gedankenloses Denken!!!!
|
|
04.01.2010 20:45 |
|
|
|
Dan-PSP
Halbprofi
Beiträge: 199
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 15
|
RE: [TUT] Pge Lua: Menüs
wirklich ein super tut, aber ich habe eine frage: wie kann ich die position ändern, wo die menüpunkte angezeigt werden?
Model: PSP fat
Datacode: 5c
Firmware: 5.50 Gen d2
|
|
10.01.2010 13:54 |
|
|
|
pspbricker
Mod a.D.
Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 1641
|
RE: [TUT] Pge Lua: Menüs
In dem Codeblock, mit dem die Einträge angezeigt werden die x und y Werte verändern,
Als Beispiel
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
Meine PS3 Games : Warhawk , NFS: Pro Street, Motorstorm ,Midnight Club LA, LittleBigPlanet, GTA4, Uncharted 2, Overlord, Killzone2, PES10, Battlefield ´43, Socom: Confrontation,
Forum Regeln Beachten! KEIN ISO Talk! KEINE Beleidigungen! KEINE illegalen Links!
|
|
10.01.2010 14:22 |
|
|
|
Dan-PSP
Halbprofi
Beiträge: 199
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 15
|
RE: [TUT] Pge Lua: Menüs
hi, ich möchte 14 menüpunkte anzeigen lassen, geht das?
Model: PSP fat
Datacode: 5c
Firmware: 5.50 Gen d2
|
|
10.01.2010 20:28 |
|
|
|
Darktraceur92
Review Schreiber
Beiträge: 2.561
Gruppe: User
Registriert seit: Jun 2009
Status:
Offline
Danke erhalten: 958
|
RE: [TUT] Pge Lua: Menüs
cool aber wenn ich zum beispiel x drücke, soll zum beispiel das spiel starten. Wie geht dann das genau?
|
|
18.01.2010 20:15 |
|
|
|
Lett1
Hurr Durr
Beiträge: 548
Gruppe: User
Registriert seit: Nov 2009
Status:
Offline
Danke erhalten: 597
|
RE: [TUT] Pge Lua: Menüs
dofile("HIERLUADATEINAME.lua")
In der Datei ist dann dein Spiel Code.
|
|
18.01.2010 20:16 |
|
Folgende User bedanken sich: |
|
C4 H4cKeR
Experte
Beiträge: 739
Gruppe: User
Registriert seit: Jan 2010
Status:
Abwesend
Danke erhalten: 267
|
|
11.02.2010 17:10 |
|
Folgende User bedanken sich: |
|
Betta
Durchstarter
Beiträge: 59
Gruppe: User
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 13
|
RE: [TUT] Pge Lua: Menüs
@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
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 Bin neu hier, vielleicht ja schonmal von PSPS gehört...
Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2010 21:37 von Betta.
|
|
11.02.2010 21:35 |
|
|
|
Darktraceur92
Review Schreiber
Beiträge: 2.561
Gruppe: User
Registriert seit: Jun 2009
Status:
Offline
Danke erhalten: 958
|
RE: [TUT] Pge Lua: Menüs
dofile("HIERLUADATEINAME.lua")
In der Datei ist dann dein Spiel Code.
Cool danke, und wie geht das man mit x startet?
|
|
15.02.2010 17:45 |
|
|
|
Lett1
Hurr Durr
Beiträge: 548
Gruppe: User
Registriert seit: Nov 2009
Status:
Offline
Danke erhalten: 597
|
RE: [TUT] Pge Lua: Menüs
Schau dir mein Tut zu steuerung in pge an.
|
|
15.02.2010 17:48 |
|
Folgende User bedanken sich: |
|