Problem mit Types

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Razor1994

Betreff: Problem mit Types

BeitragMi, Mai 12, 2010 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragMi, Mai 12, 2010 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Prinzip ist das folgende:
Code: [AUSKLAPPEN]
For zelle1.zellentyp = Each zellentyp
   For zelle2.zellentyp = Each zellentyp
      If zelle1 <> zelle2
         ;[Collision]
      EndIf
   Next
Next
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.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Razor1994

BeitragDo, Mai 13, 2010 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragDo, Mai 13, 2010 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Razor1994

BeitragDo, Mai 13, 2010 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragDo, Mai 13, 2010 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Razor1994

BeitragDo, Mai 13, 2010 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragDo, Mai 13, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Razor1994

BeitragDo, Mai 13, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group