Überflüssige Kollisionsprüfungen bei Types reduzieren Wie?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Rallimen

Sieger des 30-EUR-Wettbewerbs

Betreff: Überflüssige Kollisionsprüfungen bei Types reduzieren Wie?

BeitragFr, Aug 27, 2004 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
wenn ich ein Array auf Kolli prüfe kann ich ohne Problem verhindern,
das schon geprüfte, nochmals geprüft werden !

Aber wie mache ich das bei Types .....
Code: [AUSKLAPPEN]
Type Ball    Field x   End Type
Menge = 99
For t= 0 To Menge  : ball.Ball = New Ball : Next

; schleifen zum prüfen von Types
For ball1.Ball = Each Ball
   For ball2.Ball = Each Ball
      If Ball1 <> Ball2 Then ColliePruef1 = ColliePruef1 +1
   Next
Next

;schleife um Array zu prüfen
For s1 = 0 To Menge -1
   For s2 = s1+1 To Menge
      ColliePruef2 = ColliePruef2  +1
   Next
Next

;Ausgabe
Print ColliePruef1 + " Prüfungen mit Types"
Print ColliePruef2 + " Prüfungen mit Arrays"
Print ColliePruef1 - ColliePruef2 +" doppelte Prüfungen"
WaitKey
End
[BB2D | BB3D | BB+]

TheShadow

Moderator

BeitragFr, Aug 27, 2004 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
For ball1.Ball = Each Ball
ball2=after ball1
while ball2=null ;oder ball2<>null ??? egal
;.......
wend
Next
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Aug 27, 2004 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
so ähnlich hatte ich mir das schon gedacht, aber das das so einfach ist....
Danke!!!!


Hab das gleich mal umgesetzt .....
Code: [AUSKLAPPEN]
Type Ball    Field x   End Type
Menge = 2000
For t= 0 To Menge  : ball.Ball = New Ball :Ball\x = t: Next
; schleifen zum prüfrn von Types
Time = MilliSecs()
   For ball1.Ball = Each Ball
      For ball2.Ball = Each Ball
         ;Prüfung
         If Ball1 <> Ball2 Then
         ColliePruef1 = ColliePruef1 +1
         End If
      Next
   Next
timer1 = MilliSecs() -time


; schleifen zum prüfen von Types ohne Überflüssige
Time = MilliSecs()
   For ball1.Ball = Each Ball
      Ball = After Ball1
      While ball.ball <> Null
             ;Prüfung
            ColliePruef2 = ColliePruef2  +1
         Ball = After Ball
      Wend
   Next
timer2 = MilliSecs() -time


;Ausgabe
Print ColliePruef1 + " Prüfungen Alte Version    Dauer: "    + timer1
Print
Print ColliePruef2 + " Prüfungen Neue Version    Dauer: "    + timer2
WaitKey
End


bis zu 3mal schneller das ganze.......
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group