Anzeige des Sprites funktioniert nicht!

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Janiboy
Beiträge: 71
Registriert: 02.01.2005 15:22

Anzeige des Sprites funktioniert nicht!

Beitrag 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]
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

gelöscht.
Zuletzt geändert von Macros am 17.01.2006 18:46, insgesamt 1-mal geändert.
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag 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
Janiboy
Beiträge: 71
Registriert: 02.01.2005 15:22

Beitrag 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?
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag 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.
Janiboy
Beiträge: 71
Registriert: 02.01.2005 15:22

Beitrag 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.
Janiboy
Beiträge: 71
Registriert: 02.01.2005 15:22

Beitrag 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
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Du hast dein

Code: Alles auswählen

If IsScreenActive()   
nicht mit Endif geschlossen.
Janiboy
Beiträge: 71
Registriert: 02.01.2005 15:22

Probleme über Probleme!

Beitrag 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
Antworten