Kurze Type Frage:
Übersicht

![]() |
relentless92Betreff: Kurze Type Frage: |
![]() Antworten mit Zitat ![]() |
---|---|---|
Huhu,
Ist es möglich, bei einem Type: Code: [AUSKLAPPEN] Type powerup
Field x Field y Field typ End Type Folgendes zu erstellen? Code: [AUSKLAPPEN] If timer_powerup>=500 Then
timer_powerup=0 item1.powerup=New powerup item1\x=Rnd(5,460) item1\y=225 item1\typ=Rnd(1,5) item2.powerup=New powerup item2\x=Rnd(5,460) item2\y=225 item2\typ=Rnd(1,5) EndIf Bei der Abfrage der Bewegung nämlich... Code: [AUSKLAPPEN] For item1.powerup = Each powerup
item1\y=item1\y-3 Rect item1\x,item1\y,10,10,1 Text 0,40,item1\y Text 0,50,item1\x Next For item2.powerup = Each powerup item2\y=item2\y+3 Rect item2\x,item2\y,10,10,1 Next Bewegt sich nichts. MfG |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ganze musst du mit einer "Statusvariable" machen.
Ob du Code: [AUSKLAPPEN] item1.item=First Item
oder Code: [AUSKLAPPEN] item2.item=First Item
schreibst ist kein Unterschied. Es wird in beiden fällen das eine Item angesprochen. Bei Each ist es genauso. Bei dir bewegt sich deshalb nichts, weil du den y wert erst um 3 verringerst, und dann um 3 wieder erhöhst. So richtig: Zitat: Type powerup
Field status Field x Field y Field typ End Type Zitat: If timer_powerup>=500 Then timer_powerup=0 For i=0 to 1 item1.powerup=New powerup item1\Status=i item1\x=Rnd(5,460) item1\y=225 item1\typ=Rnd(1,5) next EndIf Zitat: For item1.powerup = Each powerup
If item1\Status=0 Then item1\y=item1\y-3 Rect item1\x,item1\y,10,10,1 Text 0,40,item1\y Text 0,50,item1\x ElseIf item1\Status=1 item1\y=item2\y+3 Rect item1\x,item2\y,10,10,1 Endif Next |
||
Twitter
Download Jewel Snake! Windows|Android |
- Zuletzt bearbeitet von Tankbuster am Di, Sep 29, 2009 15:25, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt nur eine Liste von Powerups die du mit For...Each durchgehen kannst. Ob die Zugriffsvariable beim erstellen item1, item2 oder sonstwie heißt, ist egal, es kommt alles in die selbe Liste. | ||
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) |
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alles klar, danke dir! | ||
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab da nun ein Problem bezüglich meiner Kollision:
Wenn sie sich berühren gibt der Debugger nix aus: Code: [AUSKLAPPEN] Function Powerups()
timer_powerup=timer_powerup+1 Text 0,20,timer_powerup If timer_powerup>=500 Then timer_powerup=0 For i=0 To 1 item1.powerup=New powerup item1\status=i item1\x=Rnd(5,460) item1\y=225 item1\typ=Rnd(1,5) Next EndIf For item1.powerup = Each powerup If item1\status=0 Then item1\y=item1\y-3 Rect item1\x,item1\y,10,10,1 If item1\typ=1 Then If RectsOverlap(xp1,yp1,sp1_breite,10,item1\x,item1\y,10,10) Then DebugLog "Koll1" sp1_breite=445 Rect xp1,yp1,sp1_breite,10,1 EndIf EndIf EndIf If item1\status=1 Then item1\y=item1\y+3 Rect item1\x,item1\y,10,10,1 If item1\typ=1 Then If RectsOverlap(xp2,yp2,sp2_breite,10,item1\x,item1\y,10,10) Then DebugLog "Koll2" sp2_breite=445 Rect xp2,yp2,sp2_breite,10,1 EndIf EndIf EndIf If item1\y<=-5 Or item1\y>=670 Then Delete item1.powerup EndIf Next End Function Genausowenig passiert das Erwünschte. Kommen sich die If-Abfragen in dem Type ins Gehege? MfG |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich das richtig sehe, überprüfst du ein Rechteck mit der Breite sp1_breite. sp1_breite wird aber erst bei einer Kollision auf einen Wert gesetzt und ist davor 0. | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, natürlich nicht, das Rechteck wird immer benutzt, SP1_Breite ist am Anfang auch Global = 100 ![]() Habe nur den Abschnitt nicht mitkopiert, dann kann sowas passieren. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group