Kollision zweier Type-Images
Übersicht

![]() |
ReLeNtLeSSBetreff: Kollision zweier Type-Images |
![]() Antworten mit Zitat ![]() |
---|---|---|
HeyHo,
ich habe folgendes Problem, und zwar möchte ich Images zweier unterschiedlicher Types kollidieren lassen, allerdings bekomme ich bei dem Code ein "Memory access violation".... Code: [AUSKLAPPEN] For cam.camel = Each camel For info.auto = Each auto If ImagesCollide(autoruck,info\car_x,info\car_y ,0,camel,cam\camel_x,cam\camel_y,0) Then If cam\check_kolli2=0 And info\check_kolli1=0 Then cam\check_kolli2=1 info\check_kolli1=1 DrawImage cameltot,cam\camel_x,cam\camel_y Delete cam.camel PlaySound cameltot_s EndIf Else cam\check_kolli2=0 info\check_kolli1=0 EndIf Next Next Die beiden Types: Code: [AUSKLAPPEN] Type auto Field car_x Field car_y Field points_check Field check_kolli1 End Type Type camel Field camel_x Field camel_y Field points_camel Field check_kolli2 End Type |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde ja erst mal Vorschlagen, die Variable für den Type "camel" und für das Bild unterschiedlich zu benennen.
Edit: Achja; In welcher Zeile gibts den MAV? Steht das ganze in ner Funktion und die Bilder sind nicht global? |
||
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) |
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bilder werden Global geladen und die Kollisionen stehen in einer Function...
/EDIT: Das ganze sieht jetzt so aus: Code: [AUSKLAPPEN] Function kollisionen() For info.auto = Each auto If ImagesCollide(auto,autox,autoy,0,autoruck,info\car_x,info\car_y ,0) Then DrawImage crash,450,450 If info\points_check=0 Then info\points_check=1 crashcount=crashcount+1 points=points-10 PlaySound crash_s_1 EndIf Else info\points_check=0 EndIf Next For cam.camel= Each camel If ImagesCollide(auto,autox,autoy,0,camelbild,cam\camel_x,cam\camel_y,0) Then If cam\points_camel=0 Then cam\points_camel=1 DrawImage cameltot,cam\camel_x,cam\camel_y Delete cam.camel points=points+20 PlaySound cameltot_s EndIf Else cam\points_camel=0 EndIf Next For cam.camel = Each camel For info.auto = Each auto If ImagesCollide(autoruck,info\car_x,info\car_y,0,camelbild,cam\camel_x,cam\camel_y,0) Then If cam\check_kolli2=0 And info\check_kolli1=0 Then cam\check_kolli2=1 info\check_kolli1=1 DrawImage cameltot,cam\camel_x,cam\camel_y Delete cam.camel PlaySound cameltot_s EndIf Else cam\check_kolli2=0 info\check_kolli1=0 EndIf Next Next End Function Geht aber nicht...[/code] |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Fehler der mir sofort ins Auge stach
Code: [AUSKLAPPEN] Delete cam.camel
Danach ist die cam.camel = null da sie gelöscht würde und die nächste innere Abfrage kann dann nicht funktionieren. endweder ausserhalb der Schleife löschen oder zum nächsten cam wechseln eine möglichkeit wäre es die Schleifen zu tauschen Code: [AUSKLAPPEN] For info.auto = Each auto
For cam.camel = Each camel da hier automatisch zur nächsten cam gewechselt wird |
||
[BB2D | BB3D | BB+]
|
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist KEIN Fehler. Es kommt immerwieder ein neues Camel. Wieso sagt mir jeder das das ein Fehler ist? Es funktioniert. Nur die Kollision der Types nicht... | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rallimen hat aber recht würd ich meinen ^^
Erweiter den camletype um die Variable "die", statt delete setzt du die=1 und ganz am ende der Updateschleife für camel deletest du alles, was die=1 ist... so geh ich diversen Problemen damit aus dem Weg. Du kannst dir beim Debuggen doch den Inhalt der Variablen anschauen, vielleicht gibt das noch einen Hinweis woran es liegt? |
||
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) |
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich lasse das mit dem Delete so, weil es wunderbar klappt, aber danke für die Alternativen...
Also, der Debugger sagt an dieser Stelle: Code: [AUSKLAPPEN] If ImagesCollide(auto,autox,autoy,0,autoruck,info\car_x,info\car_y ,0) Then "Object does not exist" Weis nich was da nich existen soll oO |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann klick mal Rechts im Debugger die Variablen an und stell alle Werte rein, die die haben... | ||
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) |
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich soll die ganzen Variablen abschreiben? Fällt da nich irgendwem einfach das Problem auf ![]() Danke... |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du nicht vernüftig alle Daten aus dem Debugger angeben willst, könnte das u.U. schwieriger werden.
... die Variablen aus der Zeile Code: [AUSKLAPPEN] If ImagesCollide(auto,autox,autoy,0,autoruck,info\car_x,info\car_y ,0) Then würden ja vollkommen ausreichen...
Die Bilder müssen <> 0 sein und die anderen Variablen sinnvolle Werte einnehmen... |
||
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) |
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
aso meinst du das.
ja wartet ich kopier sie rein... mom... info.auto -> gute werte cam.camel = (Null) ? |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: If ImagesCollide(auto,autox,autoy,0,autoruck,info\car_x,info\car_y ,0) Then
bist du dir sicher das das an der Zeile liegt, denn wenn Zitat: mom... info.auto -> gute werte
hat, dann ist es kein Zitat: "Object does not exist"
Zitat: Das ist KEIN Fehler. Es kommt immerwieder ein neues Camel. Wieso sagt mir jeder das das ein Fehler ist? Es funktioniert. Nur die Kollision der Types nicht...
du hättest recht wenn hinter Zitat: Delete cam.camel
ein EXIT stehen würde
PlaySound cameltot_s |
||
[BB2D | BB3D | BB+]
|
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie geil
Danke Rallimen mit dem kleinen EXIT funzt es ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group