Schleifenkopf und -fuß werden nicht erkannt

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Troy.McClure

Betreff: Schleifenkopf und -fuß werden nicht erkannt

BeitragSo, März 14, 2010 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe ein ganz simples Problem und glaube den Fehler nur nicht zu entdecken da ich die Syntax von BB noch nicht so gut kenne. Die Schleifen(also Zugehörigkeit von Kopf und Fuss) werden nicht erkannt. Es handelt sich um verschachtelte Schleifen (2 nicht verschachtelte For-Schleifen in einer Repeat-Until-Schleife. Eine einfache Schleife funktionierte noch. Hat jmd ne Idee? Muss man etwas beim Verschachteln von Schleifen beachten?
Danke im Voraus Troy

Chrise

Betreff: Re: Schleifenkopf und -fuß werden nicht erkannt

BeitragSo, März 14, 2010 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
dein Code wäre sinnvoll Wink
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

blackgecko

BeitragSo, März 14, 2010 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste doch mal deinen Code Razz

Hast du vielleicht irgendwor ein EndIf vergessen oder wowas?
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

mpmxyz

BeitragSo, März 14, 2010 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Willkommen im BBP Troy.McClure!
Eigentlich muss man nur beachten, dass man jede Schleife wieder rechtzeitig schließt.
Am Besten wäre es aber, wenn du deinen Code zeigen würdest.
Dann kann man nämlich den Fehler sehen und muss ihn nicht erraten. Wink
mfG
mpmxyz
Edit: So viele hilfsbereite Leute heute... Razz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Troy.McClure

BeitragSo, März 14, 2010 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Repeat
Cls
H = H + 1
If H = 200 Then H = 0
TileBlock back, 0,H
DrawImage man, X,Y
;
;Schusstest
;
If KeyDown(57) Then ;registriert ob die Leertaste gedrückt wird
Schuss = Schuss + 1
If Schuss = 21 Then Schuss = 1
FShot(Schuss,0) = 1 ;speichert ob ein Schuss gefallen ist
FShot(Schuss,1) = X+15 ;Speichert X-Koordinate des Abschussortes
FShot(Schuss,2) = Y ;Speichert Y-Koordinate des Abschussortes
PlaySound(shotsound)
PlaySound(spotsound)
EndIf
;
;ggf Schrot zeichnen
;
For I = 1 To 20
If FShot(I,0) = 1 Then
DrawImage shot, FShot(I,1), FShot(I,2)
FShot(I,1) = FShot(I,1) + 50

EndIf
Next
;
;Pfeiltasten abfragen
;
If KeyDown(200) = 1 Then Y = Y - 1
If KeyDown(208) = 1 Then Y = Y + 1
If KeyDown(205) = 1 Then X = X + 1
If KeyDown(203) = 1 Then X = X - 1
;
;Randüberschreitung verhindern
;
If X < 0 Then X = 0
If X > 605 Then X = 605
If Y < 0 Then Y = 0
If Y > 451 Then Y = 451
;
;Gegner erzeugen
;

For Z = 1 To 5
If FEnemy(Z,0) = 0 Then
FEnemy(Z,0) = 1
FEnemy(Z,1) = 600
FEnemy(Z,2) = Rand(470)
EndIf



Senkrecht = Rand(10)
Select Senkrecht
Case 1,2
If FEnemy(Z,2) < X Then
FEnemy(Z,2) = FEnemy(Z,2) + 1
Else
FEnemy(Z,2) = FEnemy(Z,2) - 1
EndIf
Case 3
If FEnemy(Z,2) < X Then
FEnemy(Z,2) = FEnemy(Z,2) - 1
Else
FEnemy(Z,2) = FEnemy(Z,2) + 1
EndIf

Waagerecht = Rand(10)
Select Waagerecht
Case 8,9,10
FEnemy(Z,1) = FEnemy(Z,1) + 1
End Select
If FEnemy(Z,1) > 480 Then FEnemy(Z,0) = 0


If FEnemy(Z,0) = 1 Then
DrawImage enemy, FEnemy(Z,1),FEnemy(Z,2)
EndIf
Next
;
Delay 8
Flip
Until KeyDown(1)
 

Troy.McClure

BeitragSo, März 14, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für die prompte Hilfe!

Pummelie

BeitragSo, März 14, 2010 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte Verwende für deinen code die code boxen, oder den highlighter:
Code: [AUSKLAPPEN]
Codeboxen: ["code"]Hier steht der Quelltest["/code"] natürlich ohne die ""
Higlighter: ["syntax="bb"]Print("Hier sthen die Befehle")["/syntax]  wieder ohne die "


Außerdem sind Doppelpost nicht all zu gern gesehen, verwende bitte den Edit button (user posted image).



Was meinst du mit prompte Hilfe, ist dein Problem schon gelöst?
It's done when it's done.
  • Zuletzt bearbeitet von Pummelie am So, März 14, 2010 15:32, insgesamt einmal bearbeitet

mpmxyz

BeitragSo, März 14, 2010 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
So...
Bevor ich zum Code komme, erst einmal etwas anderes:
In den beiden Beiträgen hast du 2 Fehler gemacht:
  1. Du hast keine Codebox genutzt. Bei längeren Codes freut sich dann jedes Mausrad. Wink (Mit dem "BB"-Button oben in der Leiste, die man beim Schreiben/Editieren eines Beintrages sieht, kann man eine Codebox erstellen.)
  2. Du hast einen Doppelpost gemacht. Das sollte man normalerweise nicht machen. Stattdessen editiert man den Beitrag, wenn man noch etwas nach dem Abschicken anfügen möchte.


Die Lösung des eigentlichen Problems:
Du hast ein End Select vergessen.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am So, März 14, 2010 15:33, insgesamt einmal bearbeitet

Xaymar

ehemals "Cgamer"

BeitragSo, März 14, 2010 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Repeat
Cls
H = H + 1
If H = 200 Then H = 0
TileBlock back, 0,H
DrawImage man, X,Y
;
;Schusstest
;
If KeyDown(57) Then ;registriert ob die Leertaste gedrückt wird
Schuss = Schuss + 1
If Schuss = 21 Then Schuss = 1
FShot(Schuss,0) = 1 ;speichert ob ein Schuss gefallen ist
FShot(Schuss,1) = X+15 ;Speichert X-Koordinate des Abschussortes
FShot(Schuss,2) = Y ;Speichert Y-Koordinate des Abschussortes
PlaySound(shotsound)
PlaySound(spotsound)
EndIf
;
;ggf Schrot zeichnen
;
For I = 1 To 20
If FShot(I,0) = 1 Then
DrawImage shot, FShot(I,1), FShot(I,2)
FShot(I,1) = FShot(I,1) + 50

EndIf
Next
;
;Pfeiltasten abfragen
;
If KeyDown(200) = 1 Then Y = Y - 1
If KeyDown(208) = 1 Then Y = Y + 1
If KeyDown(205) = 1 Then X = X + 1
If KeyDown(203) = 1 Then X = X - 1
;
;Randüberschreitung verhindern
;
If X < 0 Then X = 0
If X > 605 Then X = 605
If Y < 0 Then Y = 0
If Y > 451 Then Y = 451
;
;Gegner erzeugen
;

For Z = 1 To 5
If FEnemy(Z,0) = 0 Then
FEnemy(Z,0) = 1
FEnemy(Z,1) = 600
FEnemy(Z,2) = Rand(470)
EndIf



Senkrecht = Rand(10)
Select Senkrecht
Case 1,2
If FEnemy(Z,2) < X Then
FEnemy(Z,2) = FEnemy(Z,2) + 1
Else
FEnemy(Z,2) = FEnemy(Z,2) - 1
EndIf
Case 3
If FEnemy(Z,2) < X Then
FEnemy(Z,2) = FEnemy(Z,2) - 1
Else
FEnemy(Z,2) = FEnemy(Z,2) + 1
EndIf

Waagerecht = Rand(10)
Select Waagerecht
Case 8,9,10
FEnemy(Z,1) = FEnemy(Z,1) + 1
End Select
If FEnemy(Z,1) > 480 Then FEnemy(Z,0) = 0


If FEnemy(Z,0) = 1 Then
DrawImage enemy, FEnemy(Z,1),FEnemy(Z,2)
EndIf
End Select ;DAS FEHLTE :) <--------------------------------------------------------------------
Next
;
Delay 8
Flip
Until KeyDown(1)
Warbseite

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group