Programmfrage: Was ist falsch???

Previous topic - Next topic

WPShadow

X_MAKE3D 1,1000,45

X_CAMERA 0,0,0,60,100,0

LET z=0

WHILE z<10

X_PRINT "Testlauf",80+z,100,0,0

Sleep 1000

z=z+1

WEND

SHOWSCREEN

MOUSEWAIT

FUNCTION Sleep: ms
LOCAL st
    st=GETTIMERALL()
    WHILE GETTIMERALL()-st < ms
    WEND
ENDFUNCTION




Was ist an meinem Programm falsch??? Sollte es nicht funktionieren??? Was muß ich ändern, damit ich einen Echtzeittimer habe??? 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

BumbleBee

Hi
Um eine Function aufzurufen, musst du nach dem Namen eine Klammer setzen.
Also Sleep(1000)
Außerdem hast du X_MAKE3D,X_CAMERA,SHOWSCREEN nicht in der Schleife



Code (glbasic) Select
LET z=0

WHILE z<10

 X_MAKE3D 1,1000,45
 X_CAMERA 0,0,0,60,100,0

 X_PRINT "Testlauf",80+z,100,0,0
 Sleep(1000)

 z=z+1
 SHOWSCREEN
 
WEND

MOUSEWAIT

FUNCTION Sleep: ms
LOCAL st
    st=GETTIMERALL()
    WHILE GETTIMERALL()-st < ms
    WEND
ENDFUNCTION
Willst du einen Timer einbauen, für eine konstante Spielgeschwindigkeit,
Animationsgeschwindigkeit etc.? Wenn ja würde ich das aber nicht so machen.



Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

WPShadow

Ich suche genau einen solchen Timer, mit dem ich eine konstante Spielgeschwindigkeit erhalten kann, wobei ich im Hintergrund aber auch Timer brauche, die z.B. eine "Fackel - Animation" (Feuer) am laufen halten. Der Lichteffekt ist ja nicht das Problem, sondern das sich bewegende Objekt!!!

Praktisch gesehen wäre es ein ewiger Loop, der einfach seine z.B. 5 Animationsstufen durchlaufen muß und dann wieder von vorne beginnt und dennoch nicht das aktive Spielgeschehen beeinflußt. Im Hauptloop sollte eben nur z.B. die Maus und die Coordinaten sein, auf die sie reagiert!

Blödes Problem für mich! Zugegeben, alleine kann ich es zur Zeit nicht lösen, deshalb frage ich!!!
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

WPShadow

PS.: Danke für den Tip mit Sleep!

Frage: Muß man das 3D Fenster immer wieder aktualisieren d.h. den Befehl X_Make3D immer wieder neu aufrufen um das gesamte 3D Fenster erneut zu aktualisieren???
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

Kitty Hello

also: Konstante Animationsgeschw. bekommt man doch mit dem Menüpunkt "Projekt/Einstellungen/Bildwiederholfrequenz" oder dem Befehl LIMITFPS.
In 3D ist das dann wieder bisserl nervig, weil schnelle Karten halt auch schnelle Grafik machen sollen. Sonst meine jeder das Spiel ruckelt mit 30 Bilder/sekunde auf einer G-Force9 2015 oder so...
Der X_MAKE3D macht ja nur einen 3D Viewport. Das muss man nach jedem SHOWSCREEN schon machen, weil der wieder alles so zurücksetzt wie es nach dem Programmstart war. (Kostet aber keine Zeit)

Also: Fackelanimation:
Code (glbasic) Select
FOR i=0 to 4
   LOADSPRITE "fackel"+i+".bmp"
NEXT

WHILE TRUE
   SPRITE MOD( GETTIMERALL() / 500, 5), 100, 100
   SHOWSCREEN
WEND
Im Detail:
GETTIMERALL() liefert eine Zeit in Millisekunden.
GETTIMERALL() / 500 eine Zeit in 1/2 Sekunden.
MOD( x, 5) liefert eine Ganzzahl (keine Kommas) zwischen 0 und 4.
Also, die aktuelle Zeit in 1/2 Sekunden auf den Bereich 0 und 4 begrenzt.

PingPong Animatinonen (012343210...) macht man so:

Code (glbasic) Select
  t = GETTIMERALL()/500
   voll = 4 // von 0 bis 4 z.B.
   ani = ABS(MOD(t, voll*2)-voll)
Im Detail:
MOD(t, voll*2) = 0,1,2,3,4,5,6,7
-voll:   -4, -3, -2, -1, 0, 1, 2, 3
ABS: 4, 3, 2, 1, 0, 1, 2, 3

Wenn man bisserl drüber nachdenkt gar nicht so schwer, oder?

WPShadow

Und jetzt die große Frage:

Gibt es einen Weg, das Ganze in den "Hintergrund" zu setzen, sodaß man eine Hauptschleife hat und die Animation z.B. dauerhaft im Hintergrund läuft? Liege ich richtig, daß man normalerweise einen Loop in den Speicher laden kann, der sich wiederholt, ohne die Hauptschleife zu belasten?

Danke für die große Hilfe bisher!!!!!!!!!!!
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

Kitty Hello

Programmcode belastet _immer_ den Prozessor. Sowas wie "Mach diese SUB bis ich sag is' gut" gibt's nicht.
Mach einfach eine SUB und ruf' die immer vor dem SHOWSCREEN auf (oder benutze sie statt dem SHOWSCREEN, indem Du das auch noch in der SUB machst)

alea iacta est -> (die) Würfel (plural) ist (singular) gefallen. (Im Latein gramatikalisch korrekt, wenn man die Würfel als eine Einheit ansieht. Nur mal so bischen Klugscheißen neben bei ;) )

WPShadow

Noch eine letzte Frage anbei:

Wie setzte ich X_FOG ein?

=====

Aktiviert Nebel. Wenn farbe# = -1, schaltet das den Nebel aus. Der Schalter exp_modus# unterscheidet zwischen linearem Nebel (exp_modus#=FALSE) oder exponentiellem Nebel (exp_modes#=TRUE).
Die Parameter par1# und par2# unterscheiden sich je nach exp_modus#:

exp_modus# = TRUE:
par1 = Dichte des Nebels - Wert von 0 bis 1
par2 = Ignoriert

exp_modus# = FALSE:
par1 = zNah - Beginn des Nebels (Abstand von der Kamera)
par2 = zFern - Ende des Nebels
Wenn p1=0 und p2=0, werden die zNah und zFern Werte der aktuellen Kamera verwendet.

=====

X_FOG RGB... , exp_modus#=true, p1=?, p2=?

Bin verwirrt! Bitte hilfe!!!

PS: Anmerkung der Freundin:-) "Argumentum baculinum" aber wir wollen doch nicht Caesars Zitate umformulieren... oder??
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

Kitty Hello

Code (glbasic) Select
// Linearer Nebel von z=100 bis z=1000
X_FOG RGB(128,128,128), FALSE, 100, 1000

// exponentieller Nebel (sieht besser aus, mehr Rechenzeit)
X_FOG RGB(128,128,128), FALSE,  1/2, 0
Das Zitat ist je völlig korrekt (zitiert und auch Grammatik) ich wollt nur sagen, dass man's eben nicht wörtlich ins deutsche übersetzen kann, weil bei uns "die Würfel" eben nicht als eine Einheit angesehen werden können.
:)

WPShadow

Möchte wegen X_FOG nur ein Beispiel, da ich mir nicht sicher bin, wie ich die Parameter setzen soll!!! :-)
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

WPShadow

Gut, soweit ist es mit dem Nebel klar, aber inzwischen versuche ich ein Bild zu erstellen, in dem man einzig und alleine Nebel sieht, aber irgendwie bleibt es nur dunkel! Brauche ich dazu etwas mehr als nur:

X_MAKE3D 1,1000,45

 X_CAMERA 0,0,0,0,0,0

  X_FOG RGB(255,0,0), FALSE,  1/2, 0

 SHOWSCREEN

MOUSEWAIT

Ist das halbwegs korrekt? Ich vermute nein!


Ich stelle deshalb so viel Fragen, um so schnell wie möglich so viel wie möglich zu lernen!!!
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

WPShadow

PS.: Die Auflösung (z.B. 800x600) kann nicht mit einem Programmbefehl verändert werden, oder?
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

Kitty Hello


WPShadow

Meine letzte Frage beläuft sich noch auf das FOG - Programm weiter oben! Bitte Hilfe! Vielleicht schaffe ich es ja irgendwann selbst einen Code zu schreiben, geschweige denn zu verstehen!!!

Danke nochmals für 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

Kitty Hello

Also, Nebel bedeutet, dass die Polygone der 3D Grafik je nach ihrem Abstand von der Kamera immer mehr die Farbe des Nebels annehmen. Es funktioniert also nur mit 3D Grafik, die dann "vernebelt" wird. Versuch doch mal das Meteorids3D Spiel und bau einen Nebel ein.