Spieler stirbt nicht?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Belion

Betreff: Spieler stirbt nicht?

BeitragMi, Dez 22, 2010 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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 :/

Xeres

Moderator

BeitragMi, Dez 22, 2010 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Belion

BeitragMi, Dez 22, 2010 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Wink.

Hoffe verständlich was ich meine, und/oder worum's geht.

Ganz lieben gruß.

Xeres

Moderator

BeitragMi, Dez 22, 2010 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

PSY

BeitragDo, Dez 23, 2010 4:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group