Object does not exist , bei ImageCollide

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Klaus

Betreff: Object does not exist , bei ImageCollide

BeitragSo, Nov 20, 2005 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute
Ich hab mal wieder n Problem

Ich mache ja grad n Space Impact game, und da arbeite ich natürlich mit Types für die Gegner und die Geschosse...
Ich bin auch schon fast mit dem Grundgerüst fertig, doch leider hat sich nun ein Error eingeschlichen

Also, das Problem liegt bei einem Imagescollide Befehl
HIER Die Function alleine:

BlitzBasic: [AUSKLAPPEN]

Function K_Gegner_LKugel()
For gegner_1.gegner = Each gegner
For schuss_1.schuss = Each schuss
If ImagesCollide(gegner_1\image,gegner_1\x,gegner_1\y,0,schuss_1\image,schuss_1\x,schuss_1\y,0) Then
Delete schuss_1.schuss
Delete gegner_1.gegner
gegner_anzahl = gegner_anzahl - 1
EndIf
Next
Next
End Function


kann mir erstmal dazu wer sagen wie ich das besser machen kann
denn 2 For Each Schleifen inneinander sind irgentwie komisch, aber ich wusste nichts anderes

Ok nun zur genauen Fehlerbeschreibung

Also,
Ich starte das Game, Alles geht wie es gehen soll, Wenn ich einmal auf einen Gegner schieße verschwindet dieser, JEDOCH wenn ich 2< Kugeln schieße und eine trifft komt: "Object Does Not Exist" und es wied der Imagescollide-Befehl markiert.

Ich denke das ganze liegt an der doppelten For Each Schleife...
Ich habe aber keine Ahnung wie ich das sonst machen soll.

Hier der ganze Code, damit ihr den Fehler Selber sehen könnt

HIER, die "game.bb" Datei, die muss man starten:


Und HIER, die externe Datei (Namens "functions.bb") die eingebunden wird, und alle Functionen enthällt.


Was muss ich umändern damit ich nicht diesen Error bekomme?

Wenn irgentwas nicht passt, oder zuwenig erklärt ist, bitte melden...
(P.S.: Habe per Suche gesucht^^)

darth

Betreff: ...

BeitragSo, Nov 20, 2005 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ist alles was du da verwendest "global" ?
(sind types automatisch global? ... arreys ja, aber types?)
Diese Signatur ist leer.
 

Klaus

BeitragSo, Nov 20, 2005 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, Types sind automatisch Global
Ansonsten würde ja garnichts von alldem Functionieren...
Smile

Hubsi

BeitragSo, Nov 20, 2005 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
ImagesCollide(gegner_1\image... - Du kopierst also das Image(handle) immer wieder neu in das Feld? Einfacher ind vor allem sicherer wäre es doch einfach eine globale Variable zu nehmen in der das Imagehandle gespeichert ist und dieses zum malen zu verwenden? Very Happy

Edit: Types sind nicht automatisch global Very Happy Versuch das:BlitzBasic: [AUSKLAPPEN]
Type test
Field a
End Type

;Global t.test

t.test=New test
t\a=100
bla()


Function bla()
Print t\a
End Function
Das lässt sich erst gar nicht starten da die Variable t nicht als Handle für ein Type bekannt ist. Macht man den Kommentar weg läufts Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Nov 21, 2005 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Prob liegt einfach daran das du den gegner in dieser Schleife löscht!

Wenn der Gegner beim ersten Schuss gelöscht wird,
und der zweite abgefragt wird
gehts nicht weil der gegner nicht mehr exitiert!
Deswegen darf der Gegner nicht in der inneren Schleife gelöscht werden

Lösung BlitzBasic: [AUSKLAPPEN]
Function K_Gegner_LKugel ()
For gegner_1.gegner = Each gegner
For schuss_1.schuss = Each schuss
If ImagesCollide (gegner_1\image,gegner_1\x,gegner_1\y,0,schuss_1\image,schuss_1\x,schuss_1\y,0) Then
Delete schuss_1.schuss
gegnerTod = 1
EndIf
Next
If gegnerTod = 1 Then
gegnerTod = 0
Delete gegner_1.gegner
gegner_anzahl = gegner_anzahl - 1
End If
Next
End Function
[BB2D | BB3D | BB+]
 

Klaus

BeitragMo, Nov 21, 2005 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
@Hubsi
versteh nicht ganz was du meinst
aber wenn types nich automatisch global sind
wie erklärst du dir dann, dass mein game funktioniert? Wink

@Rallimen
BIG THX
daran lags also ^^
naja jez bin ich wieder n stück klüger geworden xD

dann bis nächstes mal
MfG Klaus

Jan_

Ehemaliger Admin

BeitragMo, Nov 21, 2005 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
@Klaus, was Hubsi meint ist (glaube ich), das zwar die Menge der Types Global ist, aber dein Pointer auf ein Type objekt nicht, und wenn du den nciht Global machst, er auf Null Zeigt und damit das Objekt nciht existiert. weil der Pointer ganz einfach Local ist.
between angels and insects

Hubsi

BeitragMo, Nov 21, 2005 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Jan_ Very Happy So meinte ich das Very Happy @Klaus, musst Dir ja nur den Beispielcode ankucken oder einfach testen Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group