Types untereinander vergleichen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Xware

Betreff: Types untereinander vergleichen

BeitragMo, Mai 08, 2006 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Nehmen wir ein Beispiel:

Code: [AUSKLAPPEN]

Type Rock
 Field X
 Field Y
End Type

for I = 0 to 1
 Rock.Rock = new Rock
 Rock\X = 20
 Rock\Y = 30
next

repeat

for Rock.Rock = each Rock
 if rectsoverlap(Rock\X,Rock\Y,20,20,Zweiter Rock\X,usw...)
next


until keydown(1)
end



Ich habe also mehrere Rocks die zu einem Type gehören und möchte
prüfen ob sie kollidieren.

Ich hab mir gedacht ich machs mit dem After, dann kommt aber irgendwann
ein Fehler, dass es net so viele Rocks gibt, logisch, wenns der letzte war.

Also, wie mache ich das?

Danke
www.xware-entertainment.de und www.xware-forum.de
Gerne helfe ich jedem bei Blitz Basic per ICQ: 232-422-652
Email: xware@gmx.de
Kostenloser Webspace: www.funpic.de
UNSER AKTUELLES XWARE-PROJEKT: Pimp My Cowmobil

Vertex

BeitragMo, Mai 08, 2006 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type TTest
   Field X
End Type

For I = 0 To 9
   Test.TTest = New TTest
   Test\X = I
Next

For Test1.TTest = Each TTest
   For Test2.TTest = Each TTest
      DebugLog Test1\X + " " + Test2\X
   Next
Next

WaitKey
End


(Gewöhn dir lieber an, Typenamen mit einem großen T zu kennzeichnen)

Willst du ausschließen, das zwei selbe Instanzen aufeinander geprüft werden, dann benutze If Test1 <> Test2 Then ...

Ja, die doppelt verketteten Listen in BB sind da noch nicht so schön ausgereift, wie in BMax.

mfg olli

Hip Teen

BeitragMo, Mai 08, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mich mal drangesetzt das ganze zu optimieren. Das kam dabei raus. Läuft doppelt so schnell, da es ca. halb so viele Durchläufe hat (klingt irgendwie logisch Rolling Eyes )

Code: [AUSKLAPPEN]
For Test1.TTest = Each TTest
   Test2 = After Test1
   Repeat
      If Test2 = Null Then Exit
      DebugLog Test1\X + " " + Test2\X
      durchlauf2 = durchlauf2 + 1
      Test2.TTest = After Test2
   Until Test2 = Null
Next
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Mai 08, 2006 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier noch eine etwas kürzere Version..

BlitzBasic: [AUSKLAPPEN]
For Test1.TTest = Each TTest
Test2 = After Test1
While Test2 <> Null
DebugLog Test1\X + " " + Test2\X
durchlauf2 = durchlauf2 + 1
Test2.TTest = After Test2
Wend
Next
[BB2D | BB3D | BB+]
 

Xware

BeitragDi, Mai 09, 2006 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Hilfe, ich habs jetz glaubich verstanden. Nur das finde ich etwas
komisch?Rallimen hat Folgendes geschrieben:
BlitzBasic: [AUSKLAPPEN]
For Test1.TTest = Each TTest
Test2 = After Test1
Ich erstelle doch Test.Lol und da steht
auf einmal was von Test1 und Test2? und anscheinend gehören die auch
zum Type, komisch, isses also egal wie ich die nenne oder wasis das?

danke
www.xware-entertainment.de und www.xware-forum.de
Gerne helfe ich jedem bei Blitz Basic per ICQ: 232-422-652
Email: xware@gmx.de
Kostenloser Webspace: www.funpic.de
UNSER AKTUELLES XWARE-PROJEKT: Pimp My Cowmobil

Kryan

BeitragDi, Mai 09, 2006 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
eigentlich schon
weil dort wird ja , wenn die for-schleife anfängt, Test1 auf das erste TTest gesetzt (eine Instanz)
und deshalb ist es egal Very Happy
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

Xware

BeitragDo, Mai 11, 2006 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, vielen Dank an alle

wieder ein bisschen schlauer Wink
www.xware-entertainment.de und www.xware-forum.de
Gerne helfe ich jedem bei Blitz Basic per ICQ: 232-422-652
Email: xware@gmx.de
Kostenloser Webspace: www.funpic.de
UNSER AKTUELLES XWARE-PROJEKT: Pimp My Cowmobil
 

Xware

BeitragDi, Mai 16, 2006 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
sry for doppelpost, aber wollte dieses thema aufgrund einer neuen frage
die dazu passt nochmal rauskramen.

Ich habe ein Type TPLAYER und vier Instanzen
Player.TPLAYER
Player.TPLAYER
Player.TPLAYER
Player.TPLAYER

nu möchte ich eine abfrage machen und dabei jeden player mit jedem
anderen vergleichen. So soll die Abfrage aussehen:
If RectsOverlap(Player\X,Player\Y,37,66,Spieler\X,Spieler\Y,37,66)
Ich will also das vergleichen:
Player1 - Player2
Player1 - Player3
Player1 - Player4
Player2 - Player3
Player2 - Player4
Player3 - Player4


wie mache ich das?

danke
www.xware-entertainment.de und www.xware-forum.de
Gerne helfe ich jedem bei Blitz Basic per ICQ: 232-422-652
Email: xware@gmx.de
Kostenloser Webspace: www.funpic.de
UNSER AKTUELLES XWARE-PROJEKT: Pimp My Cowmobil

BladeRunner

Moderator

BeitragDi, Mai 16, 2006 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Gib jedem Type ein Feld mit der Spielernummer mit auf den Weg. Wenn die Nummern ungleich sind, hast Du einen Vergleichspartner.

also
if player\number <> spieler\nummer then ...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

D2006

Administrator

BeitragMi, Mai 17, 2006 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hinweis
Der Benutzer "Xware" wurde gebannt und des BlitzBasic Portals verwiesen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Virus

BeitragDo, Mai 18, 2006 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ichsoll mich für xware bei triton bedanken, es hat geklapt
www.legacy.de

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group