KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: [Lua] Mario - Schwarzer Streifen? O.o
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute!
Ich hab mich mal an Lua versucht ;)

Komm auch soweit so gut klar, und hab mal versucht ein ganz kleines Super Mario Programm zu starten. Die Feinschliffe kommen nachher dann ;)

Aber mein Problem ist, dass wenn meine Figur von mir bewegt wird, sie auf ihrem weg durch den Bildschirm einen schwarz-braunen Streifen hinter sich lässt :/

Ich bitte euch Vorschläge zur Behebung des Problems!
Da ich nicht gerne Leute nerve, hab ich echt alles versucht, gegoogelt, ...

Das Problem ist, dass ich halt nicht weiß, wie das Problem zu Stande gekommen ist ^^

Hier ist mein Code:

Spoiler: (anzeigen)
Wenn es hilft: Ich hab den Code unter Lua Player für Windows und Lua Player Hm 7 getestet.

Vielleicht liegt es auch an den Bildern.
Ich weiss aber nicht ob ich sie hier posten darf^^
Hab sie nämlich von Google Bilder. Könnt ja gegen das Urheberrecht sein ( Hab keinen Schimmer von Jura :P )

Ich bin für jede Hilfe dankbar, ausser für solche Kommentare wie "Dafür ist es besser C++/C zu lernen", oder anderes. Ich weiss das und kann auch ein klein wenig C++ aber ich will es erstmal in Lua schaffen!

MfG Mangafreak

EDIT:
Zum besseren Verständnis, hab ich mich dazu entschlossen, Bilder hochzuladen.
Spoiler: (anzeigen)
Spoiler: (anzeigen)
Spoiler: (anzeigen)
Spoiler: (anzeigen)
FEHLER BEITRAG HABS BEARBEITET SRRY FÜR DIE DOPPELT POST
DEIN NEUER CODE (anzeigen)
PS: srry für die doppelt post

PS2: wens nicht klappt dan liegts daran das du keine map erstellt hast
1.Ich sehe die Bilder nicht...
2.Kommt eine Fehlermeldung,nachdem dieser Streifen kam?
Wenn ja poste die....dann können wir dir noch schneller helfen Big Grin
Ja wie gesagt vielleicht hast du nur ein Hinterfrund Bild und keine Map... diese lädt dann nur einmal und nachdem ein anders Bild drüber ist ist auch shcon schluß :/

Für den anfang reicht es wenn du ein paar kleine grasbüschel nimmst Wink
Ähm jo ganz logisch das alte Bild wird nicht gelöscht daher überlappen sie sich. Wink

Tja in C könnte ich dir helfen Big Grin
Aber Lua naja ich schau mal.

stehn :
Ähm jo ganz logisch das alte Bild wird nicht gelöscht daher überlappen sie sich. Wink


ja genau des wegen braucht man eine map oder einen bg ^^

screen:clear()

in die while schleife einfügen ;D
So muss es gehen (hab es auch getestet) Wink

Code:
-- Bilder laden
Mario = Image.load("mario.png")
Hintergrund = Image.load("Hintergrund.png")

-- Bewegungen
x = 1
y = 200

-- Hauptcode
while true do
pad = Controls.read()
screen:blit(0,0,Hintergrund,true)
screen:blit(x,y,Mario,true)


--Bewegungen
if pad:left() then
x = x - 1
screen:clear()
screen:blit(0,0,Hintergrund,true)
screen:blit(x,y,Mario,true)
end

if pad:right() then
x = x + 1
screen:clear()
screen:blit(0,0,Hintergrund,true)
screen:blit(x,y,Mario,true)
end

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

screen.flip()
screen.waitVblankStart()
end


Wie du siehst habe ich das Hintergrund:blit.. in screen:blit... gerändert.
Weil es einfach unnötig war Big Grin

PS: Ich würde es noch so machen das man nicht über den Bildschirmrand kann Wink

Code:
Mario = Image.load("mario.png")
Hintergrund = Image.load("Hintergrund.png")

x = 1
y = 200

...code...

if pad:left() and x >= 1 then -- wenn die variable x 1 ist kann die Taste nicht mehr verwendet werden biss die Variable wieder höher ist
x = x - 5
screen:clear()
screen:blit(0,0,Hintergrund,true)
screen:blit(x,y,Mario,true)
end

if pad:right() and x <= 440 then -- wenn die variable x 440 ist kann die Taste nicht mehr verwendet werden biss die Variable wieder niedriger ist (ps: die musst du verändern je nach dem wie groß dein Bild ist
x = x + 5
screen:clear()
screen:blit(0,0,Hintergrund,true)
screen:blit(x,y,Mario,true)
end

...code...


Edit sorry vergesst den ersten Code Wink
Hier ist er noch mal richtig. Fällt mir gerade ein:

Code:
-- Bilder laden

Mario = Image.load("mario.png")
Hintergrund = Image.load("Hintergrund.png")

-- Bewegungen

x = 1
y = 200

-- Hauptcode




while true do
pad = Controls.read()

--Bewegungen

if pad:left() and x >= 1 then
x = x - 5
end
if pad:right() and x <= 440 then
x = x + 5
end
if pad:circle() then
System.Quit()
end

screen:blit(0,0,Hintergrund,true) -- bereits mehrmals verstellt ;)
screen:blit(x,y,Mario,true)

screen.flip()
screen.waitVblankStart()
end


das es auch so geht Big Grin

Tschuldigung das ich nicht mehr antworten konnte, doch ich bin für ein paar Tagen weggefahren...
Also: Ich hab mir den Code von stehn angekuckt und verstanden woran das Problem lag.
Ich bedanke mich hier herzlich um alle Hilfen, auch wenn einige vielleicht nicht so hilfreich waren!
Denn ich bin auch der Meinung, dass oft nur der Will zählt!

Der Thread kann geschlossen werden.

MfG Mangafreak
Referenz-URLs