Seite 4 von 7

Verfasst: 19.01.2006 16:51
von Macros

Code: Alles auswählen

If delay2<50 
  If KeyboardPushed(#PB_Key_Any) 
    AniFrame2+1 
    If AniFrame2 >8 
      AniFrame2=6
    EndIf 
    delay2=60 
  EndIf 
Else 
  delay2-1 
EndIf 
Und natürlich noch oben Displaytransparentsprite(Aniframe2,x,y)

Verfasst: 19.01.2006 17:06
von Janiboy
Mist, doch noch ne frage, folgender code, "else" wird als fehler gemeldet, hab schon diverse lösungen versucht, nichts funktioniert.

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                                
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,"Flagge.bmp",0)=0                                
EndIf 
If LoadSprite(8,"Flagge1.bmp",0)=0
EndIf 
If LoadSprite(9,"Flagge2.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)

position_x = 0 
position_y = 0 

Repeat                                                
  If IsScreenActive()                                    
    ClearScreen(0,0,0)                                
    
    DisplayTransparentSprite(6, 0, 5)
    
    DisplayTransparentSprite(Aniframe2,x,y)
    
    DisplayTransparentSprite(AniFrame, position_x, position_y) 
    
    DisplayTransparentSprite(5, 0, 5)
    
    
    FlipBuffers() 
    
    ExamineKeyboard()                                  
 
 If delay2<50 
    AniFrame2+1 
    If AniFrame2 >8 
      AniFrame2=6 
    EndIf 
    delay2=60 
  EndIf 
Else 
  delay2-1 
EndIf
ForEver 
 
    
 If delay<50
  If KeyboardPushed(#PB_Key_Right) 
    AniFrame+1 
    If AniFrame >4 
      AniFrame=0 
    EndIf 
    delay=60 
  EndIf 
Else 
  delay-1 
EndIf
    
    If KeyboardPushed(#PB_Key_Right)                    
      position_x + 3                                      
      If position_x > 700                              
        position_x = 700                                
      EndIf                                            
    EndIf                                              
    
    If KeyboardPushed(#PB_Key_Left)                    
      position_x  - 3                                  
      If position_x < 0                              
        position_x = 0                            
      EndIf                                            
    EndIf                                              
        
    
    If KeyboardPushed(#PB_Key_Escape)                
      End                                              
    EndIf 
    
  Else 
    Delay(20)    
  EndIf                                      
ForEver   
Danke,
Janiboy

Verfasst: 19.01.2006 17:16
von Macros

Code: Alles auswählen

If delay2<50 
    AniFrame2+1 
    If AniFrame2 >8 
      AniFrame2=6 
    EndIf 
    delay2=60 
Else 
  delay2-1 
EndIf 
ForEver 
Das Endif vor dem Else löschen, Der Fehler hatte sich schon bei mir eingeschlichen, hab hier kein PB.

Verfasst: 19.01.2006 17:19
von Janiboy
Jetzt akzeptiert er Forever nicht mehr (das in der animationsschleife), da muss ich wohl mal en bisschen rumprobieren. hmm...

Verfasst: 19.01.2006 17:33
von Macros
Endlich zuhause :D
Mainloop:

Code: Alles auswählen

Repeat                                               
  If IsScreenActive()                                   
    ClearScreen(0,0,0)                               
   
    DisplayTransparentSprite(6, 0, 5)
   
    DisplayTransparentSprite(Aniframe2,x,y)
   
    DisplayTransparentSprite(AniFrame, position_x, position_y)
   
    DisplayTransparentSprite(5, 0, 5)
   
   
    FlipBuffers()
   
    ExamineKeyboard()                                 
 
 If delay2<50
    AniFrame2+1
    If AniFrame2 >8
      AniFrame2=6
    EndIf
    delay2=60

Else
  delay2-1
EndIf

 
   
 If delay<50
  If KeyboardPushed(#PB_Key_Right)
    AniFrame+1
    If AniFrame >4
      AniFrame=0
    EndIf
    delay=60
  EndIf
Else
  delay-1
EndIf
   
    If KeyboardPushed(#PB_Key_Right)                   
      position_x + 3                                     
      If position_x > 700                             
        position_x = 700                               
      EndIf                                           
    EndIf                                             
   
    If KeyboardPushed(#PB_Key_Left)                   
      position_x  - 3                                 
      If position_x < 0                             
        position_x = 0                           
      EndIf                                           
    EndIf                                             
       
   
    If KeyboardPushed(#PB_Key_Escape)               
      End                                             
    EndIf
   
  Else
    Delay(20)   
  EndIf                                     
ForEver    

Verfasst: 19.01.2006 18:10
von Janiboy
Gut, damit sind alle bisjetzigen fragen geklärt und ich entwickle erstmal ne kleine Spielwelt. Doch fragen werden wohl wieder beim thema kollisionsabfrage auftauchen :wink: .

Verfasst: 19.01.2006 21:54
von Janiboy
Und schon wieder kommt eine frage auf. Ich wollte jetzt auf pfeiltaste nach unten einen schlag setzen, dieser funktioniert auch, allerdings wird die animantion immer an derselben stelle abgespielt und nicht da, wo die figur vorher stand.
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                                
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,"Flagge.bmp",0)=0
EndIf 
If LoadSprite(9,"Flagge1.bmp",0)=0
EndIf
If LoadSprite(10,"Flagge2.bmp",0)=0
EndIf
If LoadSprite(11,"Fighter-Punch.bmp",0)=0
EndIf
If LoadSprite(12,"Fighter-Punch1.bmp",0)=0
EndIf
If LoadSprite(13,"Fighter-Punch2.bmp",0)=0
EndIf 
If LoadSprite(14,"Fighter-Punch3.bmp",0)=0
EndIf
If LoadSprite(15,"Fighter-Punch4.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)


position_x = 0 
position_y = 0 

Repeat                                                
  If IsScreenActive()                                    
    ClearScreen(0,0,0)                                
    
    DisplayTransparentSprite(6, 0, 5)
    
    DisplayTransparentSprite(7, 0, 5)
   
    DisplayTransparentSprite(Aniframe2,x,y)
   
    DisplayTransparentSprite(AniFrame, position_x, position_y) 
    
    DisplayTransparentSprite(5, 0, 5)
    
    
    FlipBuffers() 
    
    ExamineKeyboard()                                  
 
  If delay3<10 
   If KeyboardPushed(#PB_Key_Down) 
    AniFrame2+1 
    If AniFrame2 >15 
      AniFrame2=11 
    EndIf 
    delay2=60 
   EndIf 
Else 
  delay2-1 
EndIf 
  
  If delay2<50 
    AniFrame2+1 
    If AniFrame2 >10 
      AniFrame2=8 
    EndIf 
    delay2=60 

Else 
  delay2-1 
EndIf 

 
 
 If delay<50
  If KeyboardPushed(#PB_Key_Right) 
    AniFrame+1 
    If AniFrame >4 
      AniFrame=0 
    EndIf 
    delay=60 
  EndIf 
Else 
  delay-1 
EndIf
    
    If KeyboardPushed(#PB_Key_Right)                    
      position_x + 3                                      
      If position_x > 700                              
        position_x = 700                                
      EndIf                                            
    EndIf                                              
    
    If KeyboardPushed(#PB_Key_Left)                    
      position_x  - 3                                  
      If position_x < 0                              
        position_x = 0                            
      EndIf                                            
    EndIf                                              
        
    
    If KeyboardPushed(#PB_Key_Escape)                
      End                                              
    EndIf 
    
  Else 
    Delay(20)    
  EndIf                                      
ForEver 
Danke,
Janiboy

P.S.: Wie kann man eine aktion von zwei dingen abhängig machen, also wenn man eine taste drückt UND er kollidiert mit einer bestimmten sprite, soll etwas anderes, als wenn man nur diese taste drückt?

Verfasst: 19.01.2006 22:01
von Macros
Zu 1. :

Code: Alles auswählen

DisplayTransparentSprite(Aniframe2,position_x,position_y)
ausbessern

Zu 2. :

Code: Alles auswählen

IF Keyboardpushed(#PB_key_xyz) and Spritecollision(...)
endif

Verfasst: 19.01.2006 22:36
von Janiboy
so richtig klappts nicht, er ist immernoch an derselben stelle. Und wenn ich die animierte flagge lösche, ist er zwar da, wo die figur steht, wird aber von ihr verdeckt. muss man da einen löschen-befehl anwenden?

Danke,
Janiboy

Verfasst: 19.01.2006 22:40
von Macros
Stell bitte nochmal den Code (Komplett) rein.