Problem mit Types
Übersicht

Razor1994Betreff: Problem mit Types |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So ich bins wieder. Habe Xeres Idee mit den Fresszellen versuch umzusetzen. Hat auch fast geklappt bis auf diesen CodeteilCode: [AUSKLAPPEN] For rund2.futter = Each futter
For zelle.zellentyp = Each zellentyp If zelle\art = 0 Then If RectsOverlap (rund\x, rund\y, rund\groesse, rund\groesse, zelle\x, zelle\y, zelle\groesse, zelle\groesse) Then zelle\groesse = zelle\groesse + rund\naehrwert Delete rund2.futter Exit EndIf ElseIf zelle\art = 1 Then If RectsOverlap (zelle\x, zelle\y, zelle\groesse, zelle\groesse, zelle\x, zelle\y, zelle\groesse, zelle\groesse) Then zelle\groesse = zelle\groesse + zelle\groesse / 2 Delete zelle.zellentyp EndIf EndIf Next Next Da ja die Fresszelle die normale Zelle bei Berührung fressen soll hab ich das mit rectsoverlap versucht aber beide haben ja die gleiche typevariable (weiss nicht wie man das nennt) und drum geht garnichts. Muss ich jetzt für die Fresszelle eine neue Typevariable machen oder gleich ein ganz neues Type? Oder geht das auch anders? |
||
User posted image
kommt in meinen Runescape clan |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prinzip ist das folgende:
Code: [AUSKLAPPEN] For zelle1.zellentyp = Each zellentyp
Du gehst den Type durch, mit zwei unterschiedlichen Variablen. Du musst halt nur darauf Prüfen, ob nicht zufällig 2x das Gleiche Objekt in den Variablen liegt.
For zelle2.zellentyp = Each zellentyp If zelle1 <> zelle2 ;[Collision] EndIf Next Next |
||
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) |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Falls ich das richtig verstanden habe müsste ich dann ja überall im programm wo auf zelle1 zugegriffen wird eine 1 hintenran henken z.B. aus zelle\groesse würde dann zelle1\groesse oder? Oder habe ich da was falsch verstanden? | ||
User posted image
kommt in meinen Runescape clan |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie die Zugriffsvariable heißt, ist vollkommen egal. Mit For...Each gehst du die ganze Type-Liste durch - da wird hinten was neues hinzugefügt mit NEW und Einträge gelöscht mit DELETE. Die ganzen Variablen zeigen nur auf einen Eintrag in dieser Liste.
Es ist einzig und allein wichtig, das du die Variablen so verwendest, das sie immer auf die Objekte zeigen, die du auch brauchst. |
||
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) |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aha....
Man sind Types schwierig^^ Ich habs mal so versucht. Aber es passiert garnichts wenn die Fresszelle auf die normale Zelle trifft. Code: [AUSKLAPPEN] For rund2.futter = Each futter
For zelle.zellentyp = Each zellentyp If zelle\art = 0 Then If RectsOverlap (rund2\x, rund2\y, rund2\groesse, rund2\groesse, zelle\x, zelle\y, zelle\groesse, zelle\groesse) Then zelle\groesse = zelle\groesse + rund2\naehrwert Delete rund2.futter Exit EndIf ElseIf zelle\art = 1 Then If zelle<>zelle Then If RectsOverlap (zelle\x, zelle\y, zelle\groesse, zelle\groesse, zelle\x, zelle\y, zelle\groesse, zelle\groesse) Then zelle\groesse = zelle\groesse + (zelle\groesse / 2) Delete zelle.zellentyp Exit EndIf EndIf EndIf Next Next |
||
User posted image
kommt in meinen Runescape clan |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vermutlich habe ich mich unklar ausgedrückt.
Code: [AUSKLAPPEN] If zelle<>zelle Then Das ist Unsinn.
zelle enthält ein zellentyp, aber du vergleichst das Objekt mit sich selbst - das kann zu nichts sinnvollem führen. Du musst schon eine zweite Variable z.B. zelle2 verwenden um ein anderes Objekt aus der Liste von zellentyp zu haben. Du musst zwei For...Each zellentyp Schleifen ineinander verschachtelt benutzen. |
||
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) |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So geschafft.Code: [AUSKLAPPEN] For zelle1.zellentyp = Each zellentyp
For zelle2.zellentyp = Each zellentyp If zelle1\art = 1 Then If zelle1<>zelle2 Then If RectsOverlap (zelle2\x, zelle2\y, zelle2\groesse, zelle2\groesse, zelle1\x, zelle1\y, zelle1\groesse, zelle1\groesse) Then zelle1\groesse = zelle1\groesse + (zelle2\groesse / 2) Delete zelle2.zellentyp Exit EndIf EndIf EndIf Next Next Aber jetzt habe ich das problem das die Fresszellen sich auch gegenseitig auffressen. |
||
User posted image
kommt in meinen Runescape clan |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist dazu nicht das "art" field da? | ||
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) |
Razor1994 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ^^ hab ich jetzt auch gerade gemerkt. Bin irgenwie auf dem Schlauch gestanden. Hatte aber gerade einen Geistesblitz. | ||
User posted image
kommt in meinen Runescape clan |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group