GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2008-Mar-04

Title: Schweif
Post by: WPShadow 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...
Title: Schweif
Post by: Kitty Hello 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.)
Title: Schweif
Post by: WPShadow 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...
Title: Schweif
Post by: Schranz0r on 2008-Mar-04
Code (glbasic) Select
If timer < GETTIMERALL()
    //mach was lustiges
    timer = GETTIMERALL()+500 // 500 ms  
ENDIF
Title: Schweif
Post by: Kitty Hello 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
Title: Schweif
Post by: WPShadow 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! =)
Title: Schweif
Post by: WPShadow 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.
Title: Schweif
Post by: Kitty Hello on 2008-Mar-04
Dein Type hat keinen Namen.
Title: Schweif
Post by: Schranz0r on 2008-Mar-04
LOL W:


Code (glbasic) Select
TYPE Wolke
    time
    x; y; z
ENDTYPE

GLOBAL Wolken[] AS Wolke

...
Title: Schweif
Post by: WPShadow on 2008-Mar-04
Hoppla, habe mich beim abtippen verschrieben! In meinem Programm heißt der TYPE Wolke...

Funzt aber nicht
Title: Schweif
Post by: Kitty Hello 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
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.
Title: Schweif
Post by: WPShadow 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!!!