Hilfe-Code Problem-Counter_(Neuling)_

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Mogologo

Betreff: Hilfe-Code Problem-Counter_(Neuling)_

BeitragMo, März 15, 2004 7:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe da ein Problem und dachte das mir hier vileicht Jemand helfen kann.

Ich habe ein cube der sich bewegt in der haubtschleife MoveEntity obj,0,0,0.1 wenn der counter bei 100 ist wird der cube auf Positionentity cube,0,0,3 gebimt.
Meine Frage ist warum er das selbe nicht auch macht bei 200 und 300 obwohl es so vorgesehn ist.

wenn mir jemand helfen kann wär das echt nett ,danke


Code: [AUSKLAPPEN]
;---------------------------------------------------
Graphics3D 640,480,16,2
CreateCamera()
CreateLight()

Global cube = CreateCube()
;---------------------------------------------------
Function mano()
Positionentity cube,0,0,3
End Function


;---------------------------------------------------
counter=0
While Not KeyHit(1)
counter=counter+1   
;--------------------------------------------------
      If counter=100 Then
      mano()
      If counter=200 Then
      mano()
      If counter=300 Then
      mano()
   endif
   endif   
   end if
   
   MoveEntity cube,0,0,0.1
;--------------------------------------------------
UpdateWorld
   RenderWorld
   Flip
Wend

BladeRunner

Moderator

BeitragMo, März 15, 2004 7:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;---------------------------------------------------
Graphics3D 640,480,16,2
CreateCamera()
CreateLight()

Global cube = CreateCube()
;---------------------------------------------------
Function mano()
Positionentity cube,0,0,3
End Function


;---------------------------------------------------
counter=0
While Not KeyHit(1)
counter=counter+1   
;--------------------------------------------------
      If counter=100 Then ;hier liegt der fehler: du schachtelst die If´s ineinander
        mano()
        If counter=200 Then
          mano()
          If counter=300 Then
            mano()
          endif
        endif   
      end if
   
   MoveEntity cube,0,0,0.1
;--------------------------------------------------
UpdateWorld
   RenderWorld
   Flip
Wend

Du schachtelst deine Abfragen ineinander, fragst also:
wenn Counter 100 dann wenn counter 200....
Wenn du ne stets wiederkehrende Rückbeamerei willst, empfehle ich:
Code: [AUSKLAPPEN]

if (counter mod 100)=0 then
    Mano()
end if

Im übrigen kann ich dir nur empfehlen den Code bei schleifen etc. einzurücken- dann fallen solche Geschichten leichter ins Auge ... Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Mogologo

BeitragMo, März 15, 2004 8:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für die schnelle Hife und die muhe. Jetzt habe ich nur das
Problem Embarassed das er es stendig wiederhot...wie kann ich erreichen das
er nur drei cubes nachschiebt ?

edit:
Ich habs schon rausgefunden. Nochmals vielen Dank

BladeRunner

Moderator

BeitragMo, März 15, 2004 8:09
Antworten mit Zitat
Benutzer-Profile anzeigen
in diesem fall war dein Code schon gut, bis auf die Schachtelung der schleifen. mach aus:
Code: [AUSKLAPPEN]

     If counter=100 Then 
        mano()
        If counter=200 Then
          mano()
          If counter=300 Then
            mano()
          endif
        endif   
      end if


einfach:
Code: [AUSKLAPPEN]

     If counter=100 Then 
        mano()
     End if
     If counter=200 Then
        mano()
     End if
     If counter=300 Then
            mano()
      endif
     

Dann zählt er nur 3 mal.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

eizdealer

BeitragMo, März 15, 2004 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Verständnis (dass du aus dem Vorfall lernen kannst):
Du sagst deinem Programm in jedem Loop:

WENN counter = 100 DANN
tu was
WENN counter = 200 DANN
tu was
WENN counter = 300 DANN
tu was
ENDE WENN
ENDE WENN
ENDE WENN

Die Anweisung "WENN counter = 200 DANN" wird nur überprüft, wenn counter 100 ist. Ist somit also ein Wiederspruch in sich.

Noch effektiver (zwar nur minimal, aber immerhin) ist übrigens:
If counter=100 Then
mano()
ElseIf counter=200 Then
mano()
ElseIf counter=300 Then
mano()
endif

*Edit: Huch, haut der mir doch glatt die Formatierung raus.

Mogologo

BeitragDi, März 16, 2004 4:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmals danke, ihr habt mir da echt geholfen.
Normal ist das nicht mein Ding ins Forum zu gehn
und leute zu nerven Embarassed aber ich wuste
echt nicht weiter und ich kenn auch nimand der mit
BB3D codet.

Ps: Ich versuche übrigens eine coder demo (gfx demo) zu coden wo
natürlich eine timeline nicht unwichtig ist. THX

bis dann

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group