Antwort schreiben  Thema schreiben 
Seiten (3): « Erste [1] 2 3 Nächste > Letzte »
Verfasser Nachricht
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #1
xPSP  Lua- ein paar Anfängerfragen :)

Hallo
ich habe angefangen Lua zu programmieren.
Jetzt wollte mich mit meinenm ersten Spiel anfangen.

Es soll ein kleines Labyrinth für meinen 4 jährigen Cousin werden.

Es soll in etwa so aussehen:



a=Image.load("Boden.JPG")
b=Image.load("Wand.JPG")
c=Image.load("Ziel.JPG")
Spieler=Image.load("Spieler.JPG")

Spieler_x = 64
Spieler_y = 224
map={
{b,b,b,b,b,b,b,b,b,b,b,b,b,b,b},
{b,a,a,a,a,a,b,b,b,b,b,b,b,b,b},
{b,a,b,b,b,a,b,b,b,b,b,b,b,b,b},
{b,a,b,b,b,a,b,b,b,b,a,a,a,a,b},
{b,a,b,b,b,a,a,a,b,b,a,b,b,a,b},
{b,a,b,b,b,b,b,a,b,b,a,b,b,a,b},
{b,a,b,b,b,b,b,a,a,a,a,b,b,c,b},
{b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}
}

while true do
for c=1,8 do
for d=1,15 do
screen:blit(d*32,c*32,map[c][d],false)
end
end

pad = Controls.read()

dx = pad:analogX()
dy = pad:analogY()

if dx > 30 then
Spieler_x = Spieler_x + (math.abs(pad:analogX())/64)
end
if dx < -30 then
Spieler_x = Spieler_x - (math.abs(pad:analogX())/64)
end
if dy > 30 then
Spieler_y = Spieler_y + (math.abs(pad:analogY())/64)
end
if dy < -30 then
Spieler_y = Spieler_y - (math.abs(pad:analogY())/64)
end

screen:blit(Spieler_x, Spieler_y, Spieler, true)
screen.flip()
screen.waitVblankStart()
end

Meine Fragen:

1. Wieso ist die Map leicht nach rechts unten versetzt?!
2. Wie bekomme ich die Kollison zwischen Spieler und Wand hin?

Danke im vorraus
Lukas


PS: Ziel des Spiels soll es werden, dass man wie in kinderzeitschriften den richtigen weg findne muss Wink

Dieser Beitrag wurde zuletzt bearbeitet: 05.07.2011 14:11 von Windows XD.

04.07.2011 21:34
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #2
RE: Lua- ein paar Anfängerfragen :)

Kann mir denn keiner Helfen? Sad

LG Lukas

05.07.2011 14:15
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Noob_Total
Banned


Beiträge: 74
Gruppe: Banned
Registriert seit: May 2011

Status: Offline
Danke erhalten: 16
Beitrag: #3
xPSP  RE: Lua- ein paar Anfängerfragen :)

Die erste Frage weiß ich nicht, ist aber eigentl. auch egal, oder ?

Zu 2.

Code:
if x = 30 and y = 44 then --Wenn deine Variable (x) auf 30 (Koordinate)  und y auf 44 "berührt", dann


dofile("labyrinth.lua") -- Startet deine z.B. "labyrinth.lua" (dein Spiel) von vorne .


end -- Ende ^^


Ich hoffe, du verstehst es .
Du kannst dir ja, mein Code, zu meinem Maze Game anschauen .
Ist das selbe Prinzip .

^^

05.07.2011 18:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Windows XD (Jul-5-2011)
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #4
RE: Lua- ein paar Anfängerfragen :)

Hallo
ich glaube du hast den sinn des Spiels nicht ganz verstanden(nicht böse gemeinst Wink )
Sinn ist es den weg entlangzulaufen und zum Ziel(grün) zu kommen. Später gibt es dann auch abzeigungen, sackgassen,usw.

Das das Bild, nach rechts unten verschoben ist, stört mich schon :/

Zu dem anderen. Kann man es nicht einfach machen:

Wenn Bild a mit bild b kollidiert, dann blablabla ?
Weil so wie du es beschrieben hast, ist es sehr aufwendig :/
Danke im Vorraus
Lukas

05.07.2011 22:30
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #5
RE: Lua- ein paar Anfängerfragen :)

setze c und d = 0 und nicht =1, dann ist das bild nicht verschoben





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)

Dieser Beitrag wurde zuletzt bearbeitet: 05.07.2011 23:41 von Neutrosider.

05.07.2011 23:40
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Windows XD (Jul-6-2011)
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #6
RE: Lua- ein paar Anfängerfragen :)

Hallo

du meinst
while true do
for c=0,8 do
for d=0,15 do
screen:blit(d*32,c*32,map[c][d],false)
end
end

Wenn du es so meinst stürzt das Programm ab :/

c und d sind doch auch nur variable oder? weil evtl. könnte es probleme geben, da ich oben c schonmal für Ziel definiert habe :/

06.07.2011 08:30
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
fener98
Banned


Beiträge: 931
Gruppe: Banned
Registriert seit: May 2011

Status: Offline
Danke erhalten: 333
Beitrag: #7
RE: Lua- ein paar Anfängerfragen :)

Kannst du die Dateien irgendwo hochladen? Dann kann ich dir helfen.

06.07.2011 08:57
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #8
RE: Lua- ein paar Anfängerfragen :)

Jop mach ich nachher Wink

LG Lukas

06.07.2011 09:06
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #9
xPSP  RE: Lua- ein paar Anfängerfragen :)

Windows XD :
Hallo

du meinst
while true do
for c=0,8 do
for d=0,15 do
screen:blit(d*32,c*32,map[c][d],false)
end
end

Wenn du es so meinst stürzt das Programm ab :/

c und d sind doch auch nur variable oder? weil evtl. könnte es probleme geben, da ich oben c schonmal für Ziel definiert habe :/

ja so meinte ich das eigentlich. wenn du mit c und d=1 anfängst, dann sieht das erste screen:blit so aus:
screen:blit(32,32,map[1][1],false)
denmach fängt er nicht bei den koordinaten 0 0 an, sondern bei 32 32.

aber ich denke ich habe den fehler gefunden, machs mal so:

Code:
for c=1,8 do
for d=1,15 do
screen:blit((d-1)*32,(c-1)*32,map[c][d],false)
end
end


dann sollte es weder nach rechts verschoben sein, noch abstürzen.





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
06.07.2011 10:26
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Windows XD (Jul-6-2011)
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #10
RE: Lua- ein paar Anfängerfragen :)

Hallo
1000dank es funktioniert. Das Bild ist nicht mehr verschoben!

Jetzt nochmal zu der Frage mit den Kollisionen.
Ich habe an 2 Möglichkeiten gedacht.

1. Möglichkeit
Wenn bild a mit Bild SPieler zusammenstößt gehts nicht weiter (gibt es wahrscheinlich nicht)

2. Möglichkeit (scheint mir aber sehr kompliziert, geht aber wahrscheinlich nicht anders.)

Ich mache mehrere modi.
Modus 1 Spieler kann in alle richtungen bewegt werden.
Modus 2 Spieler kann sich nur nach oben und unten bewegen
und dann eght das immer so weiter..

Oder gibt es noch eine 3. Möglichkeit?

LG Lukas

06.07.2011 13:04
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #11
RE: Lua- ein paar Anfängerfragen :)

Es ist absolut ungestetstet (da ich auch dein programm grade nich da habe (kb es nachzuschreiben), aber rein theoretisch sollte es so klappen:

Code:
sposxa=Spieler_x
sposya=Spieler_y
if dx &gt; 30 then
Spieler_x = Spieler_x + (math.abs(pad:analogX())/64)
end
if dx &lt; -30 then
Spieler_x = Spieler_x - (math.abs(pad:analogX())/64)
end
if dy &gt; 30 then
Spieler_y = Spieler_y + (math.abs(pad:analogY())/64)
end
if dy &lt; -30 then
Spieler_y = Spieler_y - (math.abs(pad:analogY())/64)
end
color1 = screen:pixel(Spieler_x+31, spieler_y+31)
colors1 = color:colors()
color2 = screen:pixel(Spieler_x+31, spieler_y+31)
colors2 = color:colors()
if colors1.r~=0 or colors1.g~=0 or colors1.b~=0 or colors2.r~=0 or colors2.g~=0 or colors2.b~=0 then
    Spieler_x=sposxa
    Spieler_y=sposya
end

Es überprüft einfach ob der Spieler sich komplett auf einem schwarzen Feld befindet. Und wenn das nicht der fall ist wird die Spielerposition auf die vom vorherigen frame zurückgesetzt.





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
06.07.2011 16:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Windows XD (Jul-6-2011)
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #12
RE: Lua- ein paar Anfängerfragen :)

Es ist absolut ungestetstet (da ich auch dein programm grade nich da habe (kb es nachzuschreiben), aber rein theoretisch sollte es so klappen:

Code:
sposxa=Spieler_x
sposya=Spieler_y
if dx &gt; 30 then
Spieler_x = Spieler_x + (math.abs(pad:analogX())/64)
end
if dx &lt; -30 then
Spieler_x = Spieler_x - (math.abs(pad:analogX())/64)
end
if dy &gt; 30 then
Spieler_y = Spieler_y + (math.abs(pad:analogY())/64)
end
if dy &lt; -30 then
Spieler_y = Spieler_y - (math.abs(pad:analogY())/64)
end
color1 = screen:pixel(Spieler_x+31, spieler_y+31)
colors1 = color:colors()
color2 = screen:pixel(Spieler_x+31, spieler_y+31)
colors2 = color:colors()
if colors1.r~=0 or colors1.g~=0 or colors1.b~=0 or colors2.r~=0 or colors2.g~=0 or colors2.b~=0 then
    Spieler_x=sposxa
    Spieler_y=sposya
end

Es überprüft einfach ob der Spieler sich komplett auf einem schwarzen Feld befindet. Und wenn das nicht der fall ist wird die Spielerposition auf die vom vorherigen frame zurückgesetzt.

EDIT: du musst natürlich das &gt; durch > und das &lt; durch < ersetzen.





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
06.07.2011 16:54
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Windows XD (Jul-6-2011)
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #13
RE: Lua- ein paar Anfängerfragen :)

Vielen dank, für die Mühe, jedoch funktioniert es leider immer noch nicht.

Ich denke, dass es am Aufbau meines Programmms liegt.
Leider habe ich noch nicht genau verstanden, was es mit dem Color1, Colors1, usw auf sich hat.
außerdem verstehe ich folgende Zeilen nicht ganz :
color1 = screenTongueixel(Spieler_x+31, Spieler_y+31)
colors1 = color:colors()
color2 = screenTongueixel(Spieler_x+31, Spieler_y+31)
colors2 = color:colors()
if colors1.r~=0 or colors1.g~=0 or colors1.b~=0 or colors2.r~=0 or colors2.g~=0 or colors2.b~=0 then

ich habe nur verstanden, dass er in der letzten Zeile überprüft, ob der Spieler noch auf dem Schwarzen Feld ist. Wenn nicht wird er zurückgesetzt.

"Scannt" das Programm in dem Codblock davor, auf welcher farbe sich der Spieler befindet, oder wie muss ich mir das Vorstellen?

Hier der Komplette Code:

a=Image.load("Boden.JPG")
b=Image.load("Wand.JPG")
z=Image.load("Ziel.JPG")
Spieler=Image.load("Spieler.JPG")

Spieler_x = 32
Spieler_y = 192
map={
{b,b,b,b,b,b,b,b,b,b,b,b,b,b,b},
{b,a,a,a,a,a,b,b,b,b,b,b,b,b,b},
{b,a,b,b,b,a,b,b,b,b,b,b,b,b,b},
{b,a,b,b,b,a,b,b,b,b,a,a,a,a,b},
{b,a,b,b,b,a,a,a,b,b,a,b,b,a,b},
{b,a,b,b,b,b,b,a,b,b,a,b,b,a,b},
{b,a,b,b,b,b,b,a,a,a,a,b,b,z,b},
{b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}
}

while true do
for c=1,8 do
for d=1,15 do
screen:blit((d-1)*32,(c-1)*32,map[c][d],false)
end
end

pad = Controls.read()

dx = pad:analogX()
dy = pad:analogY()

sposxa=Spieler_x
sposya=Spieler_y
if dx > 30 then
Spieler_x = Spieler_x + (math.abs(pad:analogX())/64)
end
if dx < -30 then
Spieler_x = Spieler_x - (math.abs(pad:analogX())/64)
end
if dy > 30 then
Spieler_y = Spieler_y + (math.abs(pad:analogY())/64)
end
if dy < -30 then
Spieler_y = Spieler_y - (math.abs(pad:analogY())/64)
end
color1 = screenTongueixel(Spieler_x+31, Spieler_y+31)
colors1 = color:colors()
color2 = screenTongueixel(Spieler_x+31, Spieler_y+31)
colors2 = color:colors()
if colors1.r~=0 or colors1.g~=0 or colors1.b~=0 or colors2.r~=0 or colors2.g~=0 or colors2.b~=0 then
Spieler_x=sposxa
Spieler_y=sposya
end
screen:blit(Spieler_x, Spieler_y, Spieler, true)
screen.flip()
screen.waitVblankStart()
end


Danke im Vorraus

Lukas

06.07.2011 21:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #14
RE: Lua- ein paar Anfängerfragen :)

oh mist, da ist noch ein fehler. ich werde das ganze mal eben testen udn zum laufen bringen, ich schätze in ner viertel stunde oder so läufts.





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
06.07.2011 21:59
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Windows XD (Jul-6-2011)
Windows XD
Profi
****


Beiträge: 300
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 37
Beitrag: #15
RE: Lua- ein paar Anfängerfragen :)

Ok Danke!!

Sag mir dann noch pls wo der Fehler war.

Lass dir Zeit Wink
Ich gehe jetzt eh schlafen und guck mir das ganze morgen ausgeschlafen an Smile

Gute Nacht

Lukas

06.07.2011 22:03
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Seiten (3): « Erste [1] 2 3 Nächste > Letzte »
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP Ein paar Mathematische Fragen Total_Noob 31 8.511 10.12.2011 20:52
Letzter Beitrag: Rroia
xPSP Suche nach nem Team / ein paar Personen zum Coden lars96 1 2.121 03.10.2011 09:30
Letzter Beitrag: Jay-Puddy
xPSP Ich suche ein paar Leute.. C0D3R 11 2.552 10.10.2010 16:22
Letzter Beitrag: groelaz
xPSP Ein paar code fragen Darktraceur92 2 1.492 18.03.2010 11:20
Letzter Beitrag: Darktraceur92
xPSP Ein paar LUA Fragen Darktraceur92 7 2.151 13.09.2009 11:29
Letzter Beitrag: Darktraceur92

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang