Hintergrund

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Tankbuster

BeitragMo, Feb 26, 2007 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
An deiner Frage sieht man eindeutig, dass du nicht im geringsten weißt, wie dein code funktioniert!
Ich geb dir mal nen tipp:
Zitat:
If KeyDown(205)
player_x=player_x+4 ;die position wird verschoben!
Elseif not KeyDown(205)
;die position wird nicht verschoben ^^
EndIf

^^ hoffe mal, damit kannst du was anfangen!^^
Twitter
Download Jewel Snake!
Windows|Android
 

FBI-blitz

BeitragMo, Feb 26, 2007 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal ehrlich:

Wie alt bist du? Wie vielte Klasse? Welche Vorkenntnisse hast du (Computer und -programmierung)?

Arbeite dich mal von Anfang an durch so ein Tutorial durch. Dann lernst du auch, den Code zu verstehen. Sonst hat das keinen Sinn...
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

viper199

BeitragMo, Feb 26, 2007 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ich bin 16 gehe in die 10te klasse Sad
VOm programmieren mit BB hab ich keine Ahnung habe vorher was mit rebol programmiert

Ich bekomme eine Error Meldung "Wend" without "while" warum das auf einmal? und wenn ichs lösche meckert der was anderes
 

FBI-blitz

BeitragMo, Feb 26, 2007 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Fragen warn jetzt net so ernst gemeint Smile

Es ist halt n typisches Anfängerproblem, dass man keine Tuts liest.

Aber um mal auf deine frage zurück zu kommen:
Die Fehlermeldung sagt, dass du zwar Wend aber kein While geschrieben hast. Du hast also irgendwo eine while-Schleife gemacht (oder machen wollen) aber kein while geschrieben.

Es kann aber auch sein, dass du vergessen hast, eine If-Abfrage mit Endif zu schließen oder eine andere Schleife mit dem Passenden Befehl zu schließen.

Das hier gäbe beispielsweise eine solche Fehlermeldung:
Code: [AUSKLAPPEN]

While temp < 10
   Print "bla"
   temp = temp + 1
   
   For temp2 = 0 To 5
      Print "lol"
Wend


Richtig müsste es so lauten:
Code: [AUSKLAPPEN]

While temp < 10
   Print "bla"
   temp = temp + 1
   
   For temp2 = 0 To 5
      Print "lol"
   next
Wend


ich hoffe du verstehst, was ich meine.
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

viper199

BeitragDi, Feb 27, 2007 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
OK danke, aber
das mit der Kollision hab ich immernoch nicht raus,

Ich habe jetzt auch mal probiert wie es Schoach und du geschrieben haben das heißt ich habe:

wert=If ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0)

If KeyDown(208)

;move player to down
player_y=player_y+2

;stop the player going 'off screen'
If player_y>420 Then player_y=420
player=LoadImage("down.bmp")

If wert then Else Not KeyDown(208)

End If


der meckert dann allerdings mit Endif und Wend weil es angeblich kein if und kein While gibt aber da ist es ja noch ^^ Rolling Eyes
 

FBI-blitz

BeitragDi, Feb 27, 2007 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann auch gar net klappen.

Code: [AUSKLAPPEN]
wert=If ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0)

If KeyDown(208)
   
      ;move player to down
      player_y=player_y+2
      
      ;stop the player going 'off screen'
      If player_y>420 Then player_y=420
      player=LoadImage("down.bmp")

 If wert then [WAS SOLL DANN PASSIEREN?] Else Not KeyDown(208)

Endif


Du musst ja nach "then" auch was angeben Wink

Axo, übrigens, was soll das "Else Not Keydown(208)" - was willste damit bezwecken?
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

viper199

BeitragDi, Feb 27, 2007 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
dann vermisst der seine "end of line" ! [expecting end of line]
was genau will der noch? Embarassed
 

FBI-blitz

BeitragDi, Feb 27, 2007 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Schick nochmal den Code bitte
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

viper199

BeitragDi, Feb 27, 2007 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hier =)

Code: [AUSKLAPPEN]

Graphics 640, 480 , 16, 2

;enable double buffering
SetBuffer BackBuffer()

;load a player image
   player=LoadImage("up.bmp")
    wasserbg = LoadImage ("wasserbg.bmp")
   Hintergrund = LoadImage ("wasser.bmp")
   sound = LoadSound("brandung.wav")
   
;initialize player position
player_x=320
player_y=400



; Mittelpunkt des Schiffs als "Angriffspunkt" setzen
MidHandle player


;loop until ESC hit...
While Not KeyDown(1)

   ;is left key being held?
   If KeyDown(203)
   
      ;move player to the left
      player_x=player_x-2
      
      ;stop the player going 'off screen'
      If player_x<0 Then player_x=0
      player=LoadImage("left.bmp")
      
         If wert Then player_x=player+1 Else Not KeyDown(203)
         
   
   EndIf
   
   ;is right key being held?
   If KeyDown(205)
   
      ;move player to the right
      player_x=player_x+2
      
      ;stop the player going 'off screen'
      If player_x>580 Then player_x=580
      player=LoadImage("right.bmp")
            
      EndIf
   
   ;is up key being held?
   If KeyDown(200)
   
      ;move player to up
      player_y=player_y-2
      
      ;stop the player going 'off screen'
      If player_y<0 Then player_y=0
      player=LoadImage("up.bmp")
   
   
   EndIf
   
   ;is down key being held?
   If KeyDown(208)
   
      ;move player to down
      player_y=player_y+2
      
      ;stop the player going 'off screen'
      If player_y>420 Then player_y=420
      player=LoadImage("down.bmp")

   End If     
   ;clear the screen
   Cls
   
   
      
   ; Transparente Farbe festlegen (blau).
   MaskImage wasserbg, 0, 0, 128
   MaskImage player, 0, 0, 128
   

   kanal = PlaySound(sound)
   
   
   ;draw the player
   DrawImage Hintergrund, 0, 0
   DrawImage wasserbg, 0, 0
   DrawImage player,player_x,player_y
   
   wert=ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0) 
           
   ;swap front and back buffers
   Flip
   
   Wend                  
 

FBI-blitz

BeitragDi, Feb 27, 2007 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast hinter ganz vielen IFs das "then" vergessen Wink
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

viper199

BeitragDi, Feb 27, 2007 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
und das führt dann dazu? das der the end of line vermisst? oder liegt das wo anders dran?
 

FBI-blitz

BeitragDi, Feb 27, 2007 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann ich so nicht sagen, ich will ja jetzt nicht deinen Code Zeile für Zeile durcharbeiten. Aber probiers doch einfach mal und mach n Endif dran.
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

BladeRunner

Moderator

BeitragDi, Feb 27, 2007 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz zeigt dir die Zeile an in der der Fehler auftrat:
Code: [AUSKLAPPEN]
If wert Then player_x=player+1 Else Not KeyDown(203)

Das sollte bei dir mit blinkendem Cursor markiert sein.
Problem: Du hast ein if then else und darauf ein not, damit kann der Compiler nix anfangen.
Ich empfehle dir die Ifs in einzelne Zeilen zu zerlegen:
Code: [AUSKLAPPEN]
if dies und das then
    bla bla
else
    blub
endif


Es ist kein Problem ein Then wegzulassen, wenn der auszuführende Code in der Folgezeile kommt.

EDIT: Das Problem in deinem Fall sit aber vielmehr dass du eine neue Bedingung stellst, allerdings ohne ein If. Der Compiler versucht das als auszuführenden Befehl (und nicht als Bedingung) zu verstehen und scheitert daran.
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

viper199

BeitragDi, Feb 27, 2007 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich habe den text zerlegt, jetzt fragt er nach einem end if Rolling Eyes
vorher hat er das Not KeyDown(203) eingeblendet wo er epecting the end of line meinte
 

FBI-blitz

BeitragDi, Feb 27, 2007 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Es ist kein Problem ein Then wegzulassen, wenn der auszuführende Code in der Folgezeile kommt.


o.O wusste ich nicht.
Entschuldigt bitte.


Edit: Poste doch (nur den Ausschnitt) des Codes!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

BladeRunner

Moderator

BeitragDi, Feb 27, 2007 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Für jedes if das Du machst brauchst du - sofern es über mehrere Zeilen geht - auch ein endif.
Ohne Code können wir aber wieder nur raten.
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

viper199

BeitragDi, Feb 27, 2007 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
das hier ist der code:
Code: [AUSKLAPPEN]

   If KeyDown(203) Then
   
      ;move player to the left
      player_x=player_x-2
      
      ;stop the player going 'off screen'
      If player_x<0 Then player_x=0
      player=LoadImage("left.bmp")
      
         If wert Then player_x=player+1
         Else
         Not KeyDown(203) 
         
   
   EndIf


Wenn ich das endif direkt hinter das not keydown(203) schreibe sagt der trozdem das in dieser zeile ein endif fehlt!

BladeRunner

Moderator

BeitragDi, Feb 27, 2007 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ich dir vorhin schon schrieb ist "not kewdown()" keine gültige befehlssyntax.
Der compiler hat eine Bedingung (if wert) und führt den Code dahinter aus. Sollte wert 0 sein wird der Teil hinter dem Else ausgeführt.
hier trifft er auf 'not keydown'.
"Not keydown was ?" fragt er sich verzweifelt, denn er erwartet Befehle, keine Bedingungen (noch dazu da nur eine halbe Bedingung da ist).
Also bricht er verzweifelt ab: "ich kann keinen Befehl entdecken, also müsste doch das Endif nun kommen!"

Was soll denn diese Zeile (Not KeyDown(203) ) deiner Meinung nach machen ?
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
 

FBI-blitz

BeitragDi, Feb 27, 2007 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast BladeRunners post wohl nicht gelesen. Das was du jetzt machst, ist nur eine Halb-Umsetzung von dem, was er schrieb.

Das mit dem "Not KeyDown(203) hat er ja schon gesagt, aber so sieht doch auch die IF-Abfrage schon besser aus:
Code: [AUSKLAPPEN]

If wert Then
   player_x=player+1
Else
   Print "Irgendwas"
Endif
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

viper199

BeitragDi, Feb 27, 2007 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Das soll machen, das wenn wert besteht das so wirkt als ob die taste (203)
nicht gedrückt worden wäre

achso naja ich möchte ja keinen text mehr anzeigen sondern das das schiff nicht über die insel fährt dies hab ich schon geschaft durch

ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0) Then player_x,player_x+1 , player_y,player_y+1

Das bedeutet aber, das ich von einer seite wenn ich auf die inselfahre komplett drüber geschoben werde, deswegen muss es noch eine andere möglichkeit geben.

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group