Types Problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Z'eluR_lliB

Betreff: Types Problem

BeitragFr, Aug 12, 2005 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schon wieder mit den Types.... Confused
also:
ich habe sowas:
BlitzBasic: [AUSKLAPPEN]
   
Type ball
Field x#, y#
Field rx#, ry#
End Type


und dann eine Funktion zur Kollisions-Kontrolle

BlitzBasic: [AUSKLAPPEN]
Function Collide()

For b1.ball = Each ball
For b2.ball = Each ball
If Not (b1 = b2) Then
If (Balls_Collide(b1\x#, b1\y#, b2\x#, b2\y#, radius, radius)) Then
; weiter mit kollision
EndIf
EndIf
Next
Next

End Function



Nun möchte ich eine weitere Funktion, die das Verhalten nach der Kollision berechnet.
Nun muss diese Funktion aber wissen, welche Bälle zusammengestoßen sind... wie kann ich ihr das "mitteilen" (geht das vielleicht über die Parameter).
Aber bei types in BB handelt es sich doch einfach um "verkettete Listen" (vgl. mit C / C++)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Aug 12, 2005 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Function Collide ()
For b1.ball = Each ball
For b2.ball = Each ball
If Not (b1 = b2) Then
If (Balls_Collide (b1\x#, b1\y#, b2\x#, b2\y#, radius, radius) ) Then
KolliBall (b1,b2); die Types übergeben
EndIf
EndIf
Next
Next
End Function

Function KolliBall (a.Ball,b.Ball)
;hier gehts weiter
;was auch immer passieren soll
End Function
[BB2D | BB3D | BB+]
 

Z'eluR_lliB

BeitragFr, Aug 12, 2005 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
danke
jetzt kommt wenigstens keine fehlermeldung mehr!

Aber ich wenn ich jetzt in der Funktion ColliBall etwas an den Daten des Types (zB. x#, y#, rx# oder ry#) verändere, dann wird es nicht übernommen (d.h. die Bälle fliegen immernoch gleich weiter wie vorher...)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Aug 12, 2005 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ich tippe mal darauf das du die Bälle nicht zurücksetzt damit keine Kollision stattfindet!
[BB2D | BB3D | BB+]
 

Z'eluR_lliB

BeitragFr, Aug 12, 2005 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß jetzt nicht ganz genau, was du meinst...
in dieser funktion wird der abprall berechnet und in den type-variablen gespeichert

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Aug 12, 2005 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
das liegt wahrscheinlich daran das die zwei For Next Schleifen eine doppelte Abfrage beinhalten

Du prüft mit der Doppelschleife als erstes
1. Eintrag mit 2.Eintrag
dann
2. Eintrag mit 1.Eintrag
demnach doppelt

2 Möglichkeiten:
1. in der Function KolliBall die Bälle zurücksetzten damit keine Kolli mehr stattfindet damit diese Function nicht nochmal aufgerufen wird und deine Änderungen wieder rückgängig macht!
2.
Die 2 Schleifen so umbauen das halt nur einmal abgefragt wird ob die Bälle kollidieren!
[BB2D | BB3D | BB+]

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Aug 12, 2005 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal die einfache Abfrage! BlitzBasic: [AUSKLAPPEN]
Function Collide () 
For b1.ball = Each ball
b2.ball = After b1 ; EDIT <<<<<<
While b2 <> Null
If (Balls_Collide (b1\x#, b1\y#, b2\x#, b2\y#, radius, radius) ) Then
KolliBall (b1,b2); die Types übergeben
EndIf
b2.ball = After b2
Wend
Next
End Function
[BB2D | BB3D | BB+]
 

Z'eluR_lliB

Betreff: DANKE

BeitragFr, Aug 12, 2005 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
DANKE

Es hat geklappt!!!!!!!!!!!!!!!!
Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group