Problem mit repeat/until(forever) und if

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

exastion

Betreff: Problem mit repeat/until(forever) und if

BeitragDo, Jul 30, 2009 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bins mal wieder, ich habe bei meinem Spiel, das ich gerade programmiere ein problem, wenn ich eine If-Abfrage in meine repeat/until Schleife schreibe, dann sagt das Programm mir:

until without repeat

Hier ein beispiel:

BlitzBasic: [AUSKLAPPEN]
Repeat
Cls
WaitTimer frametimer
DrawImage DuWeldenvarden0,X0,Y0
DrawImage DuWeldenvardenMinus1,-WaldXmax,Y0
If KeyDown(205) Then
X0=X0-geschwindigkeitLaufen
If KeyDown(205) Then
WaldXmax=WaldXmax+geschwindigkeitLaufen
If KeyDown(205) Then
DrawMovie Figur205,SpielerX,SpielerY:SpielerRichtung=1
If KeyDown(203) Then
X0=X0+geschwindigkeitLaufen
If KeyDown(203) Then
WaldXmax=WaldXmax-geschwindigkeitLaufen
If KeyDown(203) Then
DrawMovie Figur203,SpielerX,SpielerY:SpielerRichtung=2
If SpielerRichtung=1 Then
DrawImage FigurStehenRechts,SpielerX,SpielerY-sprungdauer
If SpielerRichtung=2 Then
DrawImage FigurStehenLinks,SpielerX,SpielerY-sprungdauer
If KeyHit(Leertaste) Then
springen=True
sprungart=1
If springen=True Then
If sprungart=1 Then
sprungdauer=sprungdauer+5
If sprungdauer=240 Then sprungart=2
ElseIf sprungart=2 Then
sprungdauer=sprungdauer-6
If sprungdauer=0 Then springen=False
EndIf
EndIf
Text xmet,ymet, "sprungdauer : "+sprungdauer
Flip
Until KeyHit(1)
End


Als ich es dann ohne Schleife probiert habe, hat er mir folgendes geschrieben :

Expecting Endif

Ich habe aber EndIf dort stehen

Was kann ich also dagegen tun?

Wenn ich die If-Abfrage in einer Zeile stehen habe, dann geht es, nur weiß ich dann nicht, wie ich das mit ElseIf schreiben sol.

Hoffe jemand kann mir helfen.

MfG exastion

Nicdel

BeitragDo, Jul 30, 2009 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreib hinter jedem If ein EndIf.

Beispiel:

Code: [AUSKLAPPEN]
If KeyDown(203) Then
DrawMovie Figur203,SpielerX,SpielerY:SpielerRichtung=2
EndIf
If SpielerRichtung=1 Then
DrawImage FigurStehenRechts,SpielerX,SpielerY-sprungdauer
EndIf
If SpielerRichtung=2 Then
DrawImage FigurStehenLinks,SpielerX,SpielerY-sprungdauer
EndIf
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

exastion

BeitragDo, Jul 30, 2009 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, probir das mal.

Tankbuster

BeitragDo, Jul 30, 2009 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Außerdem solltest du, wenn du einen Timr benutzt, Flip 0 verwenden. Außerdem sollte das WaitTimer direkt vor dem "Flip 0" stehen
Twitter
Download Jewel Snake!
Windows|Android

Dottakopf

BeitragDo, Jul 30, 2009 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du eine Bedingung startest muss du ja auch mit angeben wann diese Bedingung wieder endet.

Beispiel:
Code: [AUSKLAPPEN]

< start Bedingung >
       <Anweisung 1>
       <Anweisung 2>
< ende Bedingung>


bzw.
Code: [AUSKLAPPEN]

IF Varriable = 1 then
        blubb = 0
END IF



Allerdings muss ich hinzufügen, dass du das nicht immer so machen muss/sollst/kannst
z.B ist
Code: [AUSKLAPPEN]

if varriable = 1 then
   blubb = 0
end if


das gleiche wie :
Code: [AUSKLAPPEN]

if varriable = 1 then blubb = 0


hier kann man sich das "end if" sparen da Blitz automisch erkennt, wo das Ende der Bedingung liegt.(in dieser zeile,....da anweisung(blubb=0) nach dem "then" kommt).
Bei kleinen Abfragen kann das codezeilen sparen, ist aber bei längeren Abfragen zwecks der übersichtlichkeit abzuraten.


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

exastion

BeitragDo, Jul 30, 2009 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke, dan klappt jetzt

MfG exastion

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group