Spieler stirbt nicht?
Übersicht

![]() |
BelionBetreff: Spieler stirbt nicht? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ein bestimmtes Tile, in diesem Fall ein Stein, auf dem Spieler rutscht sol ldieser sterben, dass jedoch nur wenn der Stein auf dem Spieler fällt, nicht wenn der spieler wie in Boulderdash herunterdurch gehen kann, also wie die Physik des Boulderdashes. Nur stirbt der Spieler nicht er zeigt keinerlei reaktion??
Code: [AUSKLAPPEN] Function Stein_Function()
If Steine_Erstellen = True Steine_Erstellen = False ;Stein Types Erstellen For Y=0 To MapX_Size For X=0 To MapY_Size If map(X,Y) = 3 Stein.Steintyp = New Steintyp Stein\X = X Stein\Y = Y End If Next Next End If ;---------------------------------------------------------------------Sterbenfunktion------------------------------ If MilliSecs()>=Timer_Fallen+Gravity_Speed Timer_Fallen = MilliSecs() For Stein.Steintyp = Each Steintyp ;Stein Fällt wen Luft unter dem Stein ist.(+Gravity Timer) If Stein\X = SpielerX If Stein\Y+1 = SpielerY Else ;---------------------------------------------------------------------Sterbenfunktion ende------------------------------ If map(Stein\X,Stein\Y+1) = 1 map(Stein\X,Stein\Y) = 1 map(Stein\X,Stein\Y+1) = 3 Stein\Y = Stein\Y +1 End If End If Else If map(Stein\X,Stein\Y+1) = 1 map(Stein\X,Stein\Y) = 1 map(Stein\X,Stein\Y+1) = 3 Stein\Y = Stein\Y +1 End If End If ;Stein rutscht auf Stein und nach Links wen dort Luft ist.(+Gravity +Timer) If map(Stein\X-1,Stein\Y) = 1 If map(Stein\X-1,Stein\Y+1) = 1 If Stein\X-1 = SpielerX ;X Daten If (Stein\Y = SpielerY-1) Or (Stein\Y = SpielerY);Y Daten Else map(Stein\X,Stein\Y) = 1 map(Stein\X-1,Stein\Y) = 3 Stein\X = Stein\X -1 End If Else map(Stein\X,Stein\Y) = 1 map(Stein\X-1,Stein\Y) = 3 Stein\X = Stein\X -1 End If End If End If ;Stein rutscht auf Stein und nach Rechts wen dort Luft ist.(+Gravity +Timer) If map(Stein\X+1,Stein\Y) = 1 If map(Stein\X+1,Stein\Y+1) = 1 If Stein\X+1 = SpielerX ;X Daten If (Stein\Y = SpielerY-1) Or (Stein\Y = SpielerY) ;YDaten Else If map(Stein\X,Stein\Y+1) map(Stein\X,Stein\Y) = 1 map(Stein\X+1,Stein\Y) = 3 Stein\X = Stein\X +1 End If End If Else If map(Stein\X,Stein\Y+1) map(Stein\X,Stein\Y) = 1 map(Stein\X+1,Stein\Y) = 3 Stein\X = Stein\X +1 End If End If End If End If ;Steine Rollen auf Steinboden nach Links If map(Stein\X,Stein\Y+1) = 3 Else If map(Stein\X-1,Stein\Y+1) = 4 Else If Stein\X-1 = SpielerX ;X Daten Else If (Stein\Y = SpielerY-1) Or (Stein\Y = SpielerY);Y Daten Else If map(Stein\X,Stein\Y+1) = 4 If map(Stein\X-1,Stein\Y) = 1 map(Stein\X,Stein\Y) = 1 map(Stein\X-1,Stein\Y) = 3 Stein\X = Stein\X -1 End If End If End If End If End If End If ;Steine Rollen auf Steinboden nach Rechts If map(Stein\X,Stein\Y+1) = 3 Else If map(Stein\X+1,Stein\Y+1) = 4 Else If Stein\X+1 = SpielerX ;X Daten Else If (Stein\Y = SpielerY-1) Or (Stein\Y = SpielerY);Y Daten Else If map(Stein\X,Stein\Y+1) = 4 If map(Stein\X+1,Stein\Y) = 1 map(Stein\X,Stein\Y) = 1 map(Stein\X+1,Stein\Y) = 3 Stein\X = Stein\X +1 End If End If End If End If End If End If Next End If For Stein.Steintyp = Each Steintyp ;Stein Stieben Funktion If KeyDown(205) ;Rechts Schieben If SpielerX+1 = Stein\X If SpielerY = Stein\Y If map(Stein\X+1,Stein\Y) = 1 map(Stein\X,Stein\Y) = 1 map(Stein\X+1,Stein\Y) = 3 Stein\X = Stein\X +1 End If End If End If End If If KeyDown(203) ;Links Schieben If SpielerX-1 = Stein\X If SpielerY = Stein\Y If map(Stein\X-1,Stein\Y) = 1 map(Stein\X,Stein\Y) = 1 map(Stein\X-1,Stein\Y) = 3 Stein\X = Stein\X -1 End If End If End If End If Next End Function Function Leben_Function() If Leben = False Laden = True If Leben_Left >= 1 If KeyHit(57) Leben = True End If End If If Leben_Refresh = True Leben_Refresh = False Leben_Left = Leben_Left - 1 End If End If End Function Hetze dem Problem jetzt seit mehr als 2 wochen hinterher, bekomem s aber nicht hin.. hilfe :/ |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
In dem Wust sehe ich nichts vom Spieler. Was sollen diese komischen Konstrukte?
Code: [AUSKLAPPEN] If map(Stein\X,Stein\Y+1) = 3
Else Meinst du Code: [AUSKLAPPEN] If map(Stein\X,Stein\Y+1) <> 3 then ?
Keine Erklärung was da alles warum getestet wird - sehr schwer da was zu sagen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Belion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube mein Code ist zu schwer aufgebaut, und man kann alles wesentlich einfacher machen, nur habe ich keine Ahnung wie, bezüglich meinen Problem, kann ich schwer erklären.
Sehen wir uns dieses Bild einmal an. Boulderdash Engine sollte klar sein?, wenn der Spieler direkt unter einem Stein herläuft ohne dass dieser fällt, passiert nicht. Wenn jedoch der Stein fällt und dann den Spieler trifft sollte ein Leben abgezogen werden.. Und das ganze mit den Steinen die herunterfallen ist in dem oberen Code enthalten. Wenn mir da jemand insbesondere bei der Optimierung helfen kann, dann soll er doch bitte sich per PN an mich wenden,.. denn so bekomm ich wohl nie die korrekte Lösung? ![]() Hoffe verständlich was ich meine, und/oder worum's geht. Ganz lieben gruß. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe auch nicht ganz, warum du Types & Int Arrays verwendest. Wenn du schon Types benutzt, verwende doch ein Feld um den Stein beim fallen auf tödlich zu schalten. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoi,
also ich wuerd das folgendermassen machen: leg ein dimfeld ueber deinen level, in dem gespeichert ist ob das jeweilige tile sich gerade bewegt, z.b. Code: [AUSKLAPPEN] dim moving(levelbreite, leveltiefe)
nehmen wir an: level (20,5) ist ein stein level (20,6) ist ein leeres feld ----> stein faellt also --> moving (20,5)=down nehmen wir weiter an, der stein faellt ein paar felder runter. irgendwo untendrunter steht der spieler du musst dann einfach folgendes ueberpruefen: Code: [AUSKLAPPEN] if level(20,9) = spieler and level (20,8) = stein and moving (20,8) = down then tot = true
da gibts natuerlich sehr viele verschiedene moeglichkeiten, je nachdem wie deine engine aufgebaut ist. das hier sollte nur als allgemeiner denkanstoss dienen. l8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group