for -> next schleife in while -> wend schleife funzt n
Übersicht

*GHOST*Betreff: for -> next schleife in while -> wend schleife funzt n |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] o=10
For o=1 To 10 o=o+1 PositionEntity player2, 10,2,o Delay 1 Next diese schleife hab ich in einer Code: [AUSKLAPPEN] While Not KeyDown(1)
Code: [AUSKLAPPEN] Wend
schleife drin, und der typ bewegt sich nicht. was ist das problem? |
||
biegl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so...
Code: [AUSKLAPPEN] o=10 For i=1 To 10 o=o+1 PositionEntity player2, 10,2,o Delay 1 Next du kannst nicht mit einer variable 2saxhen gleichzeitig machen! |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Du solltest in einer For Schleife die Zählervariable nicht ändern, sie Inkrementiert sich ja sowiso in angegebenen Schritten. Das du "o" auf 10 setzt ist auch sinnlos, da "for o = 1" o wieder auf den Startwert 1 setzt. Also: Code: [AUSKLAPPEN] for o = 1 to 10 PositionEntity player2, 10, 2, o delay 1 next Delay 1 hat auch nur wenig Sinn, da die Schleife unnötig ausgebremst wird... Nunja, aber warum bewegt sich der Spieler nicht? Ganz einfach... "player2" wird in der Schleife auf die Position P( 10 | 2 | 10 ) gesetzt und erst dann wird der Bildschirm refresht... d.h. du siehst von der Bewegung nichts. Lösung: Code: [AUSKLAPPEN] o = 1 while not keyhit( 1 ) ;... o = o + 1 if ( o > 10 ) then o = 1 PositionEntity player2, 10, 2, o ;... Edit: @biegl: Der Code ist genaus unsinnig... ![]() grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry, david, aber dann seh ich garnichts mehr ![]() wie funzen den jetz die bewegungen gleichzeitig wenn man sich bewegen kann. ist doch bei einem ego-shooter auch so, die teile bewegen sich auch wenn man selbst steuert. dann muss das ja in der hauptschleife passieren. oder? |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Wie das funktioniert? Genau! In der Hauptschleife! ![]() :--> Du musst die Welt updaten und den Doppelpuffer flippen. U.a. ist es auch zu schnell als das du was siehst, bau halt mal ne Bremse ein. grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry aber das hab ich jetzt nicht verstanden... ![]() was bedeutet überhaupt der puffer? |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Code: [AUSKLAPPEN] Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() o = 1 While Not KeyDown( 1 ) o = o + 1 PositionEntity cube, 0, 0, o RenderWorld Flip Wend End Zum Doublebuffer: http://www.computerbase.de/lexikon/Doublebuffer grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dankeschön, david! ![]() aber der würfel geht ja jetzt endlos in die unendlichen weiten des blitzprogramms. kann man den stoppen? |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ja, eine einfach If Anweisung sollte genügen... Code: [AUSKLAPPEN] if o < {dein Wert} then o = o + 1 statt Code: [AUSKLAPPEN] o = o + 1 grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, aber dann hab ich das problem wenn ich:
Code: [AUSKLAPPEN] o = 10
If o < 20 Then o = o + 0.1 PositionEntity dragon, 10, 2, o Flip hab ohne davor Code: [AUSKLAPPEN] While Not KeyDown(1)
und Code: [AUSKLAPPEN] wend
dann funzt das net, wenn ichs dranmache, bleibt alles schwarz bis ich key(1) drücke... |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Du brauchst eine Float Variable dafür: Code: [AUSKLAPPEN] o# = 20 Im Ganzen also: Code: [AUSKLAPPEN] Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() o# = 10 While Not KeyDown( 1 ) If o < 20 Then o# = o# + 0.1 PositionEntity cube, 0, 0, o RenderWorld Flip Wend End Sollte so dann auch klappen. grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, funzt! ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group