BASIC

Author Topic: Schweif  (Read 2269 times)

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schweif
« on: 2008-Mar-04 »
Hi!

Noch eine Frage, die vielleicht auch einige Andere brauchen könnten:

Ich bin mir nicht sicher, wie ich es angehen soll, einen Raketenschweif zu machen. Meine Idee ist (vorerst) einfach ein X_SPRITE hinter die Rakete zu stellen und in 5 Zeitschritten hinterher zu ziehen. Mit jeder Zeitstufe möchte ich es einfach kleiner Skalieren. Die Position der Rakete bekomme ich mit pos_x/pos_y leicht heraus, aber wenn ich die Zeitschritte versuche zu setzen klebt X_SPRITE entweder direkt an dem Ding oder ist gar nicht vorhanden.

Habe das Beispiel leider nicht hier, deshalb kann ich leider kein Codebeispiel dazu geben... =(

Gruß

W.

PS.: Wäre wer so lieb und könnte mir ein kleines Beispiel schreiben oder zumindest einen theoretischen Hinweis geben, wie ich das am Besten angehen könnte? Ich verzweifle langsam...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Schweif
« Reply #1 on: 2008-Mar-04 »
Merk' Dir alle 500ms die Position vom Raumschiff, und mach da eine Feuerflamme hin. Lösch' dann flammen, die älter als 2 sek sind. (z.B.)

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schweif
« Reply #2 on: 2008-Mar-04 »
Genau da liegt ja mein Problem!

Ich habe keine Ahnung, wie ich das mit den 500ms lösen soll... =/

Versucht habe ich mich an dem ganzen mit DIMPUSH und DIMDEL, wobei Schranz0r irgendwann mal vorgeschlagen hat, das Ganze mit Types zu versuchen...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5022
  • O Rly?
    • View Profile
Schweif
« Reply #3 on: 2008-Mar-04 »
Code: GLBasic [Select]
If timer < GETTIMERALL()
    //mach was lustiges
    timer = GETTIMERALL()+500 // 500 ms  
ENDIF
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Schweif
« Reply #4 on: 2008-Mar-04 »
Code: GLBasic [Select]
TYPE Twolke
 x;y;...
 time
ENDTYPE


time = GETTIMERALL()
IF naechste_wolke >= time
    naechste_wolke = time + 500
    LOCAL wk AS Twolke
    wk.time = time
    wk.x ...
    DIMPUSH wolken[], wolke
ENDIF

FOREACH wk IN wolken[]
   IF wk.time<time - 2000 // nach 2sek weg
      DELETE wk
   ENDIF
 
   // zeichnen
   pos = (time-wk.time)/2000 // 0..1
   ALPHAMODE -1+pos
   DRAWSPRITE 1123, wk.x, wk.y
...
NEXT

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schweif
« Reply #5 on: 2008-Mar-04 »
Oh Mann...

Danke! Puh, ganz blicke ich noch nicht durch, aber gib mir mal bis morgen Zeit, dann läuft das schon! Falls es ein Problem gibt melde ich mich heute Abend nochmal!

Nochmal danke! Danke, Danke und Danke! =)
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schweif
« Reply #6 on: 2008-Mar-04 »
Hi!

Ich habe tatsächlich ein Problem! Irgendwie bekomme ich beim 1. PRINT die Meldung:

TYPE is not declared

Wo liegt da der Fehler???

Code: GLBasic [Select]
TYPE wolke
time
x
y
ENDTYPE

GLOBAL Wolken[] AS Wolke

DIM wolken[1]

WHILE TRUE
LOCAL wk AS wolke

MOUSESTATE mx, my, b1, b2

time = GETTIMERALL()

IF n_wolke >= time
n_wolke = time + 500

wk.time = time
wk.x = mx
wk.y = my

DIMPUSH wolken[], wolke

ENDIF


FOREACH wk IN wolken[]

IF wk.time < wolke - 2000
DELETE wk
ENDIF

PRINT ".", wk.x, wk.y
NEXT

PRINT "o", mx, my

SHOWSCREEN
WEND
Gruß

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Schweif
« Reply #7 on: 2008-Mar-04 »
Dein Type hat keinen Namen.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5022
  • O Rly?
    • View Profile
Schweif
« Reply #8 on: 2008-Mar-04 »
LOL W:


Code: GLBasic [Select]
TYPE Wolke
    time
    x; y; z
ENDTYPE

GLOBAL Wolken[] AS Wolke

...
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schweif
« Reply #9 on: 2008-Mar-04 »
Hoppla, habe mich beim abtippen verschrieben! In meinem Programm heißt der TYPE Wolke...

Funzt aber nicht
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Schweif
« Reply #10 on: 2008-Mar-04 »
Code: GLBasic [Select]
TYPE Twolke
 x;y
 time
ENDTYPE

LOCAL wolken[] AS Twolke

WHILE TRUE
MOUSESTATE mx,my,b1,b2


time = GETTIMERALL()
IF naechste_wolke <= time
    naechste_wolke = time + 100
    LOCAL wk AS Twolke
    wk.time = time
    wk.x = mx
    wk.y = my
    DIMPUSH wolken[], wk
ENDIF




FOREACH wk IN wolken[]
   IF wk.time<time - 2000 // nach 2sek weg
      DELETE wk
   ENDIF
 
   // zeichnen
   pos = (time-wk.time)/2000 // 0..1
   ALPHAMODE -1+pos
   PRINT "Puff", wk.x, wk.y
NEXT

PRINT "X" ,mx, my
SHOWSCREEN

WEND
So, jetzt nimm dir bitte, bitte Zeit und versuche das Beispiel komplett zu vertehen - und dann schreib's komplett neu - ohne Spicken, nur weil Du es kapiert hast. Wenn's nicht geht, dann schau, was anders ist. Und mach das so oft, bis Du es echt ganz von alleine kannst - erst dann kannst Du wirklich anfangen was sinnvolles zu machen.
Ist nicht bös gemeint, aber so haben wir's alle gelernt. Spicken, und nachmachen.

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Schweif
« Reply #11 on: 2008-Mar-05 »
Angesehen, gewogen und als kapiert befunden! Dürfte hinhauen, also keine doofen Fragen mehr von meine Seite! =)

Danke für die Geduld und die viele Hilfe!!!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est