Type-Kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Doubled

Betreff: Type-Kollision

BeitragMo, Apr 09, 2007 2:10
Antworten mit Zitat
Benutzer-Profile anzeigen
hi alle,

ich bin grad an nem 2Dspiel für ne schularbeit, doch jetzt bin ich auf ein problem gestossen, ich hoffe ihr könnt mir dabei helfen.

also erstmal geht es um die kollision der schüsse mit den gegner.
ich habe die schüsse und die gegner auf types gespeichert und dann frag ich die kollision folgendermassen ab:

For neu.gegner1_ba=Each gegner1_ba
For figur.schuss=Each schuss

If ImagesCollide(schuss1_r,figur\x,figur\y,0,gegn1,neu\x,neu\y,0) Or ImagesCollide(schuss1_l,figur\x,figur\y,0,gegn1,neu\x,neu\y,0) Then
neu\leben=neu\leben-1
Delete figur
EndIf

If neu\leben=0 Then
neu\aktiv=0
Delete neu
EndIf
Next
Next

so und das gibt (logischerweise) eine fehlermeldung.
wenn ihr ne lösung wisst, helft mir bitte. danke schon im voraus,
mfg doubled
 

AMD

BeitragMo, Apr 09, 2007 2:51
Antworten mit Zitat
Benutzer-Profile anzeigen
was gibts denn für ne fehlermeldung?
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Doubled

BeitragMo, Apr 09, 2007 2:55
Antworten mit Zitat
Benutzer-Profile anzeigen
hi AMD, die fehlermeldung lautet "illegal memory address" wobei sie bei ca 50% der kollisionen der schüsse mit den gegner auftritt, bei den andern 50% funktioniert es....

Smily

BeitragMo, Apr 09, 2007 9:00
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Setz die Sources bitte mal in [code] tags
2. Den Fehler "Illegal Memory Accses" bekommt man fast immer, wenn der Debug aus ist. Schalt diesen mal bitte an, dann wird die Fehlerhafte Zeile markiert und ein genauerer Fehler ausgegeben.

Bis dahin kann ich nur vermuten:

"delete neu"
da wird wohl das Problem sein: das Objekt wird gelöscht. allerdings wird dann der nächste schsus geprüft und damit auch die Collision zw. schuss und dem (nun nicht mehr vorhandenen) schiff.


Setz das "delete neu" mit allem, was dazugehört (abfragen ^^) zwichen die beiden "next" dann müsste es gehen.

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Apr 09, 2007 10:19
Antworten mit Zitat
Benutzer-Profile anzeigen
!. Möglichkeit mit exit rausspringen aus der inneren Schleife und das nächste NEU abarbeiten
Code: [AUSKLAPPEN]
For neu.gegner1_ba=Each gegner1_ba
    For figur.schuss=Each schuss
        If neu\leben=0 Then
            neu\aktiv=0
            Delete neu
        EndIf
       
        If ImagesCollide(schuss1_r,figur\x,figur\y,0,gegn1,neu\x,neu\y,0) Or ImagesCollide(schuss1_l,figur\x,figur\y,0,gegn1,neu\x,neu\y,0) Then
            neu\leben=neu\leben-1
            Delete figur
            Exit; innere Schleife verlassen
        EndIf
       
    Next
    ; hier geht es weiter nach dem exit
Next


Oder erst prüfen ob es noch exitiert Code: [AUSKLAPPEN]
For neu.gegner1_ba=Each gegner1_ba
    For figur.schuss=Each schuss
        If neu <> Null Then
            If ImagesCollide(schuss1_r,figur\x,figur\y,0,gegn1,neu\x,neu\y,0) Or ImagesCollide(schuss1_l,figur\x,figur\y,0,gegn1,neu\x,neu\y,0) Then
                neu\leben=neu\leben-1
                Delete figur
            EndIf
           
            If neu\leben=0 Then
                neu\aktiv=0
                Delete neu
            EndIf
        End If
    Next
Next
[BB2D | BB3D | BB+]
 

Doubled

BeitragMo, Apr 09, 2007 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
cool danke euch, hat geklappt!

@ smily0412
könntest du mir sagen wie ich das mit dem debug mach? ich hab das bewusst im beginners corner gepostet Razz

danke schonmal

Smily

BeitragMo, Apr 09, 2007 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der debug an ist, dann Überprüft der Compiler vorher die Befehle und gibt bei einem Fehler eine beschreibung des Fehlers aus.

Diesen kannst du unter Program -> Debug an- und ausschalten.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group