Types
Übersicht

StinktierBetreff: Types |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ich jetzt ein Type definiert habe :
Code: [AUSKLAPPEN] Type gegner :: :: End Type Muss ich , wenn ich 20 neue Types(gegner) erstellen will, alle einzeln erstelen? Denn mit einer Schleife Code: [AUSKLAPPEN] For a = 0 To 20 a.gegner = New gegner Next funtzt das nit. Das gleiche Problen, bei Allen Gegner einen Wert zu weisen, alle auf Kollision prüfen und alle auszugeben. Mir ist grade (jetzt) eingefallen. Das ich Code: [AUSKLAPPEN] a mal als Code: [AUSKLAPPEN] Dim a(20) Aber wie schon gesagt das ist mir jetzt grade eingefallen und ich habs noch nicht getestet^_^ |
||
TimoBetreff: Re: Types |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stinktier hat Folgendes geschrieben:
Doch, damit hast du soeben 21 neue gegner erstellt, den letzten eintrag kannst du noch über die Variable a ansprechen! |
||
Kaylie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So müßte es gegen:
Code: [AUSKLAPPEN] For a = 0 To 20
g.gegner = New gegner Next |
||
- Zuletzt bearbeitet von Kaylie am Do, Sep 02, 2004 15:31, insgesamt einmal bearbeitet
Stinktier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
trotzdem ebi dim feldern wird auch die Null mit gezählt | ||
![]() |
BladeRunnerModeratorBetreff: Re: Types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Timo hat Folgendes geschrieben: Stinktier hat Folgendes geschrieben:
Doch, damit hast du soeben 21 neue gegner erstellt, den letzten eintrag kannst du noch über die Variable a ansprechen! Das wird nicht funktionieren (wird wohl ein "type mismatch"-error). Du deklarierst a als normale Integer und versuchst dann a als Index für deinen Type zu nutzen. Damit kommt der Compiler nicht zurecht. Code: [AUSKLAPPEN] For a = 0 To 20
g.gegner = New gegner Next ist dann die korrekte Version. ![]() |
||
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 |
Stinktier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kaylie hat Folgendes geschrieben:
Dass würde aber einen Fehler geben da das G nicht erhöht wird.Deshalb wird in 20 Durschläufen insgesamt ein ganzer gegner erzeugt. |
||
hot-bitGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hoi,
bist du dir da sicher ? Wenn nicht, dann laß in Zukunft diese nichtwissenden Kommentare ! Toni |
||
Stinktier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ich bin mir sicher weil ichs grade getestet habe.
Variable must be a Type Die Variable muss ein Type sein für ganz schlaue^_^ |
||
Kaylie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stinktier hat Folgendes geschrieben: Kaylie hat Folgendes geschrieben:
Dass würde aber einen Fehler geben da das G nicht erhöht wird.Deshalb wird in 20 Durschläufen insgesamt ein ganzer gegner erzeugt. Falsch, es werden 21 Gegner erzeugt. Die kannste dann mit: Code: [AUSKLAPPEN] For g.gegner = Each gegner
durchlaufen. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stinktier, ich kann dir nur raten das Thema types nochmal gründlich durchzuarbeiten, denn was du schreibst ist schlicht und ergreifend FALSCH.
wenn du g schon vorher verwandt hast wird die zuweisung ungültig sein, ansonsten funktioniert g.gegner= new gegner einwandfrei. hast du vielleicht global g im code? dann geht es nicht... Types sind immer global ![]() |
||
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 |
TimoBetreff: Re: Types |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stinktier hat Folgendes geschrieben:
So, nochmal. Dabei gibt es mit Sicherheit einen Error namens "Variable must be a type" oder so, weil er als erstes die Zeile Code: [AUSKLAPPEN] For a = 0 To 20
bearbeitet, und a als Ganszahl deklariert. Aber man sollte auch nie einen Schleifenzähler in der Schleife verändern --> a.gegener = ....... !!! Ganz Böse!! ![]() Besser währe: Code: [AUSKLAPPEN] For counter = 0 To 20 a.gegner = New gegner Next |
||
![]() |
The Yeti |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stell dir das so vor:
Bei Code: [AUSKLAPPEN] For a = 0 To 20 g.gegner = New gegner Next wird beim ersten Durchlaufen der Schleife ein neues Type erstellt und der Variable g.gegner der Zugriff auf dieses verliehen. Beim zweiten Mal wird erneut ein neues Type erstellt. Die Variable wird nun mit diesem verknüpft, verliert aber die Verbindung zum ersten Type. So wiederholt sich das dann, bis du 21 Types und eine Variable hast, mit der du auf Type 21 zugreifen kannst. Wenn du nun z.B. eine Kollision überprüfen willst, könntest du das so machen: Code: [AUSKLAPPEN] For g.gegner = EACH gegner
For h.gegner = EACH gegner If ImagesCollide(gegnerbild, g\positionX, g\positionY, g\frame, gegnerbild, h\positionX, h\positionY, h\frame) Delete g.gegner ; Wenn z.B. nach einer Kollision beide Types verschwinden sollen Delete h.gegner EndIf Next Next |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie schafft man es eigentlich jeden mit jeden auf Kollision zu überprüfen OHNE das man jeden doppelt prüft?
Denn mal ist ein Type mit g verlinkt, mal mit h bzw umgekehrt mal h und mal g. Das heißt man prüft 2 verschiedene Types 2 mal auf Kollision. Kann man das übergehen? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst einem Field deines Types eine ID-Nummer aufdrücken, bringt jedoch leistungstechnisch quasi nix weil du ja dann auf identische ID prüfen musst. | ||
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 |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stinktier hat Folgendes geschrieben: ...
Variable must be a Type BB legt selber Variablen an wenn man sie vergißt zu declarieren . Also besser wäre immer Type GegnerType End Type Global XGegner.GegnerType ;<- einmal allgemein Local GegnerX.GegnerType ;<- oder z.B. in einer Funktion Die Type Collection ist aber immer Global , also wenn du in einer Funktion einen neuen Eintrag machst mit NEW ist der auch nach dem verlassen noch vorhanden ! |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Timo
das war doch letzte Woche erst.... Überflüssige Kollisionsprüfungen bei Types reduzieren Wie? https://www.blitzforum.de/viewtopic.php?t=5481 |
||
[BB2D | BB3D | BB+]
|
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Rallimen: Ich war letzte Woche im Urlaub, bin erst seit Sonntag wieder da, und ich hatte erlich gesagt keine Lust mir alles durchzulesen was ich versäumt hatte, aber danke für den Link ![]() |
||
mbeuckelmann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
Wenn du die die Typen nicht kapierst, dann würde ich dir vorschlagen die Typen einfach wegzulassen und Dim_Felder zu benutzen. Dim-Felder sind glaub ich sowieso schneller! |
||
mfg
mbeuckelmann |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
...dafür sind sie aber auch erheblich unflexibler. Es gibt für beides Pro und Contra, und mit etwas Übung sind auch Types keine Hexerei. Wenn man alles bleiben liesse was man nicht sofort versteht könnte sich kaum einer die Schuhe zubinden... | ||
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 |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es lohnt sich wirklich das Thema Types zu lernen. Ich finde das ist das einfachste was es gibt (jetzt). Vorher hatte ich natürlich auch noch Oft Probleme weil ich diverse Teilbereiche nicht kapiert habe.
Gewisse Dinge kann man ausserdem damit viel einfacher programmieren als mit Arrays. Das heisst nicht das man es mit Array nicht auch programmieren könnte. Aber meist viel umständlicher und es braucht mehr Code. Somit gleicht sich das mit der Geschwindigkeit eh wieder aus. Andere Dinge hingegen kann man mit Arrays weniger umständlich programmieren und es wäre oft doof dafür nen Type zu verwenden. Also löst euch von diesem Array vs. Type Krieg und verwendet das was sich am besten eignet, wild durcheinander wie ihr wollt. Um das einschätzen zu können muss man natürlich auch beides komplett verstehen. Deswegen kann ich denen die mit Types noch nicht soviel oder keine Erfahrung haben nur empfehlen das Thema anzuschauen weil sich oft damit Probleme einfacher lösen lassen als wenn man andere Varianten verwendet. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group