Seite 1 von 7

Anzeige des Sprites funktioniert nicht!

Verfasst: 17.01.2006 18:19
von Janiboy
Hallo leute, nachdem ich einige zeit aufgehört hatte, habe ich nun noch einmal mit der programmierung begonnen, doch jedtzt gibts wieder probleme /:-> .

Das ist der Code:

Code: Alles auswählen

 If InitSprite() = 0                                               
  MessageRequester("Fehler","Konnte dx nicht finden",0)          
EndIf                                                       


If InitKeyboard()=0                                               
  MessageRequester("Fehler","Konnte dx nicht finden",0)           
EndIf                                                             

If OpenScreen(800,600,32,"Vollbild") = 0                          
  MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0)  
EndIf                                                             

If LoadSprite(0,"Fighter.bmp",0)=0                               

x = 4
y = 363

EndIf 

position_x = 0
position_y = 0 

Repeat                                               
  FlipBuffers()                                      
  
  ClearScreen(0, 0,0)                               
  
  ExamineKeyboard()                                  

  If KeyboardPushed(#PB_Key_Right)                   
    position_x + 5                                      
    If position_x > 700                              
      position_x = 700                               
    EndIf                                            
  EndIf                                              

  If KeyboardPushed(#PB_Key_Left)                    
    position_x  - 5                                  

      position_x = 0                                
    EndIf                                            
  End                                           

  If KeyboardPushed(#PB_Key_Up)                     
    position_y  - 5                                  
    If position_y < 0                                
      position_y = 0                                 
    EndIf                                            
  EndIf                                             

  If KeyboardPushed(#PB_Key_Down)                   
    position_y + 5                                   
    If position_y > 500                             
      position_y = 500                               
    EndIf                                            
  EndIf                                              

  DisplayTransparentSprite(0,position_x,position_y)  
  
   If KeyboardPushed(#PB_Key_Escape)                
     End                                             
   EndIf                                            
ForEver 


Es wird aber nur schwarz angezeigt und teilweise bricht er sofort wieder ab, der debugger zeigt aber nichts an.

Was ist falsch, könnt ihr mit helfen?

Danke im Vorraus,
Janiboy[/code]

Verfasst: 17.01.2006 18:43
von Macros
gelöscht.

Verfasst: 17.01.2006 18:45
von Macros
Ich glaub du willst uns zum Narren halten,
bei mir hast du´s geschafft. :wink:

If KeyboardPushed(#PB_Key_Left)
position_x - 5

position_x = 0
EndIf
End

Verfasst: 17.01.2006 18:52
von Janiboy
naja, sorry wenns ne dumme frage war, der bildschirm wird jetzt angezeigt, aber ich fürchte, ich muss gleich dumm weiterfragen :roll: . Der Sprite wird nämlich immer noch nicht angezeigt, woran liegts?

Verfasst: 17.01.2006 22:18
von Macros
Theoretisch müsste jetzt alles klappen.
Nur, dass vieleicht das Sprite nicht geladen werden kann?
zur Vorsicht hier nochmal der korrigierte

Code: Alles auswählen

If InitSprite() = 0                                               
  MessageRequester("Fehler","Konnte dx nicht finden",0)         
EndIf                                                       


If InitKeyboard()=0                                               
  MessageRequester("Fehler","Konnte dx nicht finden",0)           
EndIf                                                             

If OpenScreen(800,600,32,"Vollbild") = 0                         
  MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0) 
EndIf                                                             

If LoadSprite(0,"Fighter.bmp",0)=0                               

x = 4
y = 363

EndIf

position_x = 0
position_y = 0

Repeat                                               
  FlipBuffers()                                     
 
  ClearScreen(0, 0,0)                               
 
  ExamineKeyboard()                                 

  If KeyboardPushed(#PB_Key_Right)                   
    position_x + 5                                     
    If position_x > 700                             
      position_x = 700                               
    EndIf                                           
  EndIf                                             

  If KeyboardPushed(#PB_Key_Left)                   
    position_x  - 5                                 
If position_x < 0                             
          position_x = 0                            
    EndIf                                           
  EndIf                                             

                                

                                          

  If KeyboardPushed(#PB_Key_Up)                     
    position_y  - 5                                 
    If position_y < 0                               
      position_y = 0                                 
    EndIf                                           
  EndIf                                             

  If KeyboardPushed(#PB_Key_Down)                   
    position_y + 5                                   
    If position_y > 500                             
      position_y = 500                               
    EndIf                                           
  EndIf                                             

  DisplayTransparentSprite(0,position_x,position_y) 
 
   If KeyboardPushed(#PB_Key_Escape)               
     End                                             
   EndIf                                           
ForEver
Übrigens: ein Tipp. Mache "höhere" Bildbearbeitungsprogramme hängen
selbst an .bmp noch Informationen an.
Paint ignoriert sie einfach, aber Purebasic kapituliert.
(zumindest, als ich noch 3.30 hatte, habs seitdem nicht mehr getestet)
Wenn das Bild am korrektem Ort liegt, probier mal folgendes.
Fighter.bmp einfach mal mit Paint öffnen, Strg+A und dann Strg+c
drücken, auf Neu klicken, Strg+V drücken und auf Fighter.bmp abspeichern.
Wenn es noch weitere Probleme gibt, melde dich.

Verfasst: 18.01.2006 16:02
von Janiboy
Ok, vielen dank für die mühe, funktioniert jetzt. Dann zur nächsten hürde, animation: ;) . Ich melde mich, wenns da auch probleme gibt.

Verfasst: 18.01.2006 17:21
von Janiboy
Und schon wieder Probleme :roll: . Also, der Debugger meint "Another End-Condition ist expected here". Aber was ist an "forever" falsch?

Code: Alles auswählen


If InitSprite() = 0                                                
  MessageRequester("Fehler","Konnte dx nicht finden",0)          
EndIf                                                        


If InitKeyboard()=0                                                
  MessageRequester("Fehler","Konnte dx nicht finden",0)            
EndIf                                                              

If OpenScreen(800,600,32,"Vollbild") = 0                          
  MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0) 
EndIf                                                              

If LoadSprite(0,"Fighter.bmp",0)=0                                
EndIf
If LoadSprite(1,"Fighter.bmp",0)=0
EndIf 

position_x = 0 
position_y = 0 

Repeat                                                
If IsScreenActive()                                   
  ClearScreen(0,0,0)                                
  DisplayTransparentSprite(AniFrame, x, y)
  FlipBuffers()
  Delay(200)
  AniFrame + 1
  If AniFrame => 1 : AniFrame = 0 : EndIf
  
  ExamineKeyboard()                                  

  If KeyboardPushed(#PB_Key_Right)                    
    position_x + 5                                      
    If position_x > 700                              
      position_x = 700                                
    EndIf                                            
  EndIf                                              

  If KeyboardPushed(#PB_Key_Left)                    
    position_x  - 5                                  
If position_x < 0                              
          position_x = 0                            
    EndIf                                            
  EndIf                                              

                                

                                          

  If KeyboardPushed(#PB_Key_Up)                      
    position_y  - 5                                  
    If position_y < 0                                
      position_y = 0                                  
    EndIf                                            
  EndIf                                              

  If KeyboardPushed(#PB_Key_Down)                    
    position_y + 5                                    
    If position_y > 500                              
      position_y = 500                                
    EndIf                                            
  EndIf                                              

  DisplayTransparentSprite(0,position_x,position_y) 
  
   If KeyboardPushed(#PB_Key_Escape)                
     End                                              
   EndIf                                            
ForEver
Danke im Vorraus,
Janiboy

Verfasst: 18.01.2006 17:27
von PMV
Wenn solch eine Fehlermeldung kommt, bedeutet es nichts anders, als das er noch kein Schleifenende erwartet, oder änliches.

Das passiert z.B. wenn man ein "EndIf" vergessen hat. (was hier der fall ist)
Abhilfe schaft hier die Einrückung :wink: , allerdings muss man so was konsequent durchziehen. Schau dir noch mal genau das Schleifeninnere an.

Die selbe Fehlermeldung würde auch kommen, wenn du das genau anders rum machen würdest. Du vergisst die Schleife zu schließen, dann würde er bei einem "EndIf" stehen bleiben, sofern die Schleife in einer IF-Abfrage wäre.

MFG PMV

Verfasst: 18.01.2006 17:30
von Macros
Du hast dein

Code: Alles auswählen

If IsScreenActive()   
nicht mit Endif geschlossen.

Probleme über Probleme!

Verfasst: 18.01.2006 17:44
von Janiboy
Ok, er wird jetzt angezeigt aber nicht animiert, außerdem scheint die tastatur nicht zu reagieren. Was ist falsch?

Danke im Vorraus,
Janiboy