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

Beitrag von Janiboy »

wow, sieht echt schwer aus :shock: , ob ich das hinbekomm :freak: . Naja, hier mal ne ich denke einfachere frage. Erstens: warum wird die animation der bilder 15-21 nicht richtig angezeigt (bleibt beim 2. bild stehen)? Zweitens: wie baue ich einen befehl ein, der angibt, dass eine animation abläuft, sobald ein Schlag den gegner trifft?

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,"Fighter1.bmp",0)=0 
EndIf 
If LoadSprite(2,"Fighter2.bmp",0)=0                                
EndIf 
If LoadSprite(3,"Fighter3.bmp",0)=0 
EndIf 
If LoadSprite(4,"Fighter4.bmp",0)=0                                
EndIf 
If LoadSprite(5,"Boden.bmp",0)=0
EndIf 
If LoadSprite(6,"Himmel.bmp",0)=0
EndIf
If LoadSprite(7,"Schwertstein.bmp",0)=0
EndIf
If LoadSprite(8,"Fighter-Punch.bmp",0)=0
EndIf
If LoadSprite(9,"Fighter-Punch1.bmp",0)=0
EndIf
If LoadSprite(10,"Fighter-Punch2.bmp",0)=0
EndIf 
If LoadSprite(11,"Fighter-Punch3.bmp",0)=0
EndIf
If LoadSprite(12,"Fighter-Punch4.bmp",0)=0
EndIf
If LoadSprite(13,"Baum.bmp",0)=0
EndIf
If LoadSprite(14,"Gegner.bmp",0)=0
EndIf
If LoadSprite(15,"Fighter-Speed-Attack.bmp",0)=0
EndIf
If LoadSprite(16,"Fighter-Speed-Attack1.bmp",0)=0
EndIf
If LoadSprite(17,"Fighter-Speed-Attack1.bmp",0)=0
EndIf 
If LoadSprite(18,"Fighter-Speed-Attack2.bmp",0)=0
EndIf
If LoadSprite(19,"Fighter-Speed-Attack3.bmp",0)=0
EndIf
If LoadSprite(20,"Fighter-Speed-Attack4.bmp",0)=0
EndIf
If LoadSprite(21,"Fighter-Speed-Attack4.bmp",0)=0
EndIf






TransparentSpriteColor(0, 255, 255, 0)
TransparentSpriteColor(1, 255, 255, 0)
TransparentSpriteColor(2, 255, 255, 0)
TransparentSpriteColor(3, 255, 255, 0)
TransparentSpriteColor(4, 255, 255, 0)
TransparentSpriteColor(5, 255, 255, 0)
TransparentSpriteColor(6, 255, 255, 0)
TransparentSpriteColor(7, 255, 255, 0)
TransparentSpriteColor(8, 255, 255, 0)
TransparentSpriteColor(9, 255, 255, 0)
TransparentSpriteColor(10, 255, 255, 0)
TransparentSpriteColor(11, 255, 255, 0)
TransparentSpriteColor(12, 255, 255, 0)
TransparentSpriteColor(13, 255, 255, 0)
TransparentSpriteColor(14, 255, 255, 0)
TransparentSpriteColor(15, 255, 255, 0)
TransparentSpriteColor(16, 255, 255, 0)
TransparentSpriteColor(17, 255, 255, 0)
TransparentSpriteColor(18, 255, 255, 0)
TransparentSpriteColor(19, 255, 255, 0)
TransparentSpriteColor(20, 255, 255, 0)
TransparentSpriteColor(21, 255, 255, 0)

position_x = 0 
position_y = 0 

Repeat                                                
  If IsScreenActive()                                    
    ClearScreen(0,0,0)                                
    
    DisplayTransparentSprite(6, 0, 5)
    
    DisplayTransparentSprite(7, 0, 5)
   
    DisplayTransparentSprite(5, 0, 5)
    
    DisplayTransparentSprite(13, 0, 5)
    
    DisplayTransparentSprite(AniFrame, position_x, position_y)
   
    DisplayTransparentSprite(14, 0, 5)

    
    
    FlipBuffers() 
    
    ExamineKeyboard()                                  

 
 
If delay<50 
  If move=1 
    AniFrame+1 
    If aniframe<minrange 
    AniFrame=minrange 
    EndIf 
    If AniFrame >maxrange 
      AniFrame=minrange 
    EndIf
    If AniFrame >maxrange 
      AniFrame=minrange 
    EndIf 
   delay=60 
  EndIf 
Else 
  delay-1 
EndIf
    
    If KeyboardPushed(#PB_Key_Right)                    
    Move=1
    maxrange=4
    minrange=0
      position_x + 3                                      
      If position_x > 700                              
        position_x = 700                                
      EndIf
      Else
      m0ve=0                                            
    EndIf                                              
    
    If KeyboardPushed(#PB_Key_Left)                    
      position_x  - 3                                  
      If position_x < 0                              
        position_x = 0                            
      EndIf                                            
    EndIf    
    
    If KeyboardPushed(#PB_Key_Return)
   Move=1
    maxrange=12
    minrange=8                                                                                  
    EndIf
    
     
    If KeyboardPushed(#PB_Key_Space)
   Move=1
    maxrange=15
    minrange=21                                                                                  
    EndIf  
  
    
    If KeyboardPushed(#PB_Key_Escape)                
      End                                              
    EndIf 
    
  Else 
    Delay(20)    
  EndIf                                      
Danke im Vorraus,
Janiboy

(sorry, dass die codes mittlerweile etwas lang sind :) )
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Also erstmal zu

Code: Alles auswählen




TransparentSpriteColor(0, 255, 255, 0)
TransparentSpriteColor(1, 255, 255, 0)
TransparentSpriteColor(2, 255, 255, 0)
TransparentSpriteColor(3, 255, 255, 0)
TransparentSpriteColor(4, 255, 255, 0)
TransparentSpriteColor(5, 255, 255, 0)
TransparentSpriteColor(6, 255, 255, 0)
TransparentSpriteColor(7, 255, 255, 0)
TransparentSpriteColor(8, 255, 255, 0)
TransparentSpriteColor(9, 255, 255, 0)
TransparentSpriteColor(10, 255, 255, 0)
TransparentSpriteColor(11, 255, 255, 0)
TransparentSpriteColor(12, 255, 255, 0)
TransparentSpriteColor(13, 255, 255, 0)
TransparentSpriteColor(14, 255, 255, 0)
TransparentSpriteColor(15, 255, 255, 0)
TransparentSpriteColor(16, 255, 255, 0)
TransparentSpriteColor(17, 255, 255, 0)
TransparentSpriteColor(18, 255, 255, 0)
TransparentSpriteColor(19, 255, 255, 0)
TransparentSpriteColor(20, 255, 255, 0)
TransparentSpriteColor(21, 255, 255, 0)
Das geht auch so:

Code: Alles auswählen

For Count=0 to 21
TransparentSpriteColor(Count, 255, 255, 0)
next
und schon ist er um 18 Zeilen kürzer.
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Zu 1. :

Code: Alles auswählen

maxrange=15
    minrange=21   
schaus dir nochmal genau an

Zu 2. :

Code: Alles auswählen

If SpritePixelCollision(SPieler,spielerx,spielery,gegner,gegberx,gegnery)
maxrange=Endbild
minrange=Beginnbild
move=1
EndIf
3. Sprites laden:
(das erste jeweils umbenennen)

Code: Alles auswählen

For count=0 To 4
If LoadSprite(8+count,"Fighter-Punch"+Str(count)+".bmp",0)=0
EndIf
Next
Janiboy
Beiträge: 71
Registriert: 02.01.2005 15:22

Beitrag von Janiboy »

ok, ich hab in der kollisionsabfrage einfach mal das wort "spieler" durch die zahl des spielers (12) ersetzt und das wort gegner durch die zahl des gegners (14) ersetzt, ich hoffe, das ist richtig. Aber was muss man anstatt spielerx, spielery, gegnerx und gegnery zum Beispiel eingeben?

Ich hoffe, das war die letzte frage fürs erste.

Danke im Vorraus,
Janiboy
Benutzeravatar
Macros
Beiträge: 1365
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Janiboy hat geschrieben:ok, ich hab in der kollisionsabfrage einfach mal das wort "spieler" durch die zahl des spielers (12) ersetzt und das wort gegner durch die zahl des gegners (14) ersetzt, ich hoffe, das ist richtig. Aber was muss man anstatt spielerx, spielery, gegnerx und gegnery zum Beispiel eingeben?

Ich hoffe, das war die letzte frage fürs erste.

Danke im Vorraus,
Janiboy
falls das die nummern der Sprites sind, ist das korrekt.
spielerx ist die x Koordinate das Spieler-Sprites, spielery die y Koordinate.
genauso beim Gegner gegnerx=x Koordinate das Gegner-Sprites,
gegnery die y Koordinate.

Also praktisch die Parameter der Diplayspritebefehle hintereinandergeschrieben.
Antworten