Page 3 sur 6
					
				
				Publié : sam. 29/sept./2007 16:25
				par Backup
				Mytic a écrit :Tu scannes la couleur avant l’affichage du sprite !
Comme ça le Point te renverra la couleur du Fond ?
 

 
oui , bien sur !! 
pour illustrer ce suget j'avais fait une procedure il y a pas mal de temps
 regarde , je viens de la mettre en V4.10
http://www.purebasic.fr/french/viewtopi ... rcollision 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:30
				par Mytic
				Dobro a écrit :Mytic a écrit :Tu scannes la couleur avant l’affichage du sprite !
Comme ça le Point te renverra la couleur du Fond ?
 

 
oui , bien sur !! 
pour illustrer ce suget j'avais fait une procedure il y a pas mal de temps
 regarde , je viens de la mettre en V4.10
http://www.purebasic.fr/french/viewtopi ... rcollision 
Pratique ta super_collision(), Tu devrais l’utilisé, et l’adapter avec un tableau, comme ça tu n’auras plus besoin d’utiliser le Point()  

 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:32
				par Chris
				Y a pas comme un bug?

 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:36
				par Backup
				Chris a écrit :Y a pas comme un bug?

 
pas sur mon code, parcequ'avec le miens , impossible de remplir 

 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:38
				par Mytic
				Chris a écrit :Y a pas comme un bug?

 
Pour ce cas il faut rajouter la pression !! Pas facile à intégrer.
Mais je vais essayer de trouver une solution !
 
 
tu utilises le moteur N°3 ?
 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:47
				par Chris
				Mytic a écrit :Chris a écrit :Y a pas comme un bug?

 
Pour ce cas il faut rajouter la pression !! Pas facile à intégrer.
Mais je vais essayer de trouver une solution !
 
 
tu utilises le moteur N°3 ?
 
J'utilise pas de moteur. Je pédale. 

 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:48
				par Mytic
				Je devrai changer le liquide par des billes métalliques !
Comme ça la pression sera absorbée par le frottement.
 

 
			 
			
					
				
				Publié : sam. 29/sept./2007 16:56
				par Backup
				Mytic a écrit :Je devrai changer le liquide par des billes métalliques !
Comme ça la pression sera absorbée par le frottement.
 

 
tiens ça me fais penser a une connerie que j'avais pondu 
tu veux donner du poids a tes sprites ?? 
regarde comment on fait :
 
  
 
  
 ; connerie codé par Dobro  
  #dobro  =1
  #Police  =1
  #Sprite  =1
  #Window  =1
   Structure    sprite
  x.l
  Y.l
  sensx.l
  sensy.l
   EndStructure   
   Dim    sprite.sprite(1)
 ; ***********************************  
Resultat =    InitSprite   ()
   FontID    =    LoadFont   (  #Police  ,   "arial"   , 18,   #PB_Font_Bold   )
EcranX =    GetSystemMetrics_   (  #SM_CXSCREEN  ): ;=largeur de l'ecran  
EcranY =    GetSystemMetrics_   (  #SM_CYSCREEN  ): ;=hauteur de l'ecran  
     WindowID    =    OpenWindow   (  #Window  , 0, 0,320, 200,   "hello"   ,    #PB_Window_SystemMenu|#PB_Window_BorderLess   |#PB_Window_ScreenCentered ) 
  Result =    OpenWindowedScreen   (   WindowID   (  #Window  ) ,0,0, 320, 200, 1, 0,0)
  
   ; creation d'un Sprite  
     CreateSprite   (  #Sprite  , 64, 64)  
     StartDrawing   (   SpriteOutput   (  #Sprite  ) )  ; on dessine dedans  
     Circle   (32, 32, 32 ,    RGB   ($FF,$FF,$0)) 
     StopDrawing   () 
  
  
  Resultat =    InitMouse   ()  
  sprite(1)\x=160
  sprite(1)\Y=100
  sprite(1)\sensx=2
  sprite(1)\sensy=2
  
     Repeat   
       While       WindowEvent   () :    Wend   
       ExamineMouse   () 
       WindowEvent   ()  
       Delay   (2)
    
       If       MouseButton   (2)
         End    
       EndIf   
    
    sprite(  #Sprite  )\x=sprite(  #Sprite  )\x+sprite(1)\sensx
    sprite(  #Sprite  )\Y=sprite(  #Sprite  )\Y+sprite(  #Sprite  )\sensy
       If     sprite(  #Sprite  )\x<0
      sprite(  #Sprite  )\sensx=-sprite(  #Sprite  )\sensx
      xwin =    WindowX   (  #Window  )
      ywin =    WindowY   (  #Window  ) 
         ResizeWindow   (   #Window  ,xwin-20,ywin,  #PB_Ignore  ,  #PB_Ignore  )  
         Beep_   (100,50)
       EndIf   
       If     sprite(1)\x>320-64
      sprite(  #Sprite  )\sensx=-sprite(  #Sprite  )\sensx
      xwin =    WindowX   (  #Window  )
      ywin =    WindowY   (  #Window  ) 
         ResizeWindow   (   #Window  ,xwin+20,ywin,  #PB_Ignore  ,  #PB_Ignore  )  
         Beep_   (100,50)
       EndIf   
       If     sprite(  #Sprite  )\Y>200-64
      sprite(  #Sprite  )\sensy=-sprite(  #Sprite  )\sensy
      xwin =    WindowX   (  #Window  )
      ywin =    WindowY   (  #Window  ) 
         ResizeWindow   (   #Window  ,xwin,ywin+20,  #PB_Ignore  ,  #PB_Ignore  )  
         Beep_   (80,50)
       EndIf   
       If     sprite(  #Sprite  )\Y<0
      sprite(  #Sprite  )\sensy=-sprite(  #Sprite  )\sensy
      xwin =    WindowX   (  #Window  )
      ywin =    WindowY   (  #Window  ) 
         ResizeWindow   (  #Window  , xwin,ywin-20,  #PB_Ignore  ,  #PB_Ignore  )  
         Beep_   (80,50)
       EndIf   
    
       DisplaySprite   (  #Sprite  , sprite(  #Sprite  )\x, sprite(  #Sprite  )\Y) 
    
    
       FlipBuffers   (): ; affiche l'ecran  
       ClearScreen   (   RGB   (0, 0, 0)) : ;efface l'ecran  
    
     Until    Event=  #PB_Event_CloseWindow   
 
 
			 
			
					
				
				Publié : sam. 29/sept./2007 17:06
				par Mytic
				@Dobro
Sympa le Code (je m’attendais à autre chose)  

 
			 
			
					
				
				Publié : dim. 30/sept./2007 9:19
				par Backup
				bon vu les nombreux bug rencontre avec la procedure rapide_point()
j'ai décider de ne garder que la procedure simplifié au mode 32 bit 
Ajout du mode 16 bit par mytic !:D
teste sur le listing coloré que j'avais poste ici :
http://www.purebasic.fr/french/viewtopi ... 9&start=15
rapide_point() et rapide_plot() s''appel toujours entre stardrawing() et stopdrawing())
 
 
   Procedure    rapide_Point(x,Y)   
     Select       DrawingBufferPixelFormat   ()  
       Case      #PB_PixelFormat_16Bits  : PF=2  
      color =    PeekW   (    DrawingBuffer   ()  + (x * PF) +   DrawingBufferPitch   ()* ( Y ) )  
       Case      #PB_PixelFormat_32Bits_RGB      : PF=4
      color=    PeekL   (   DrawingBuffer   () + (x * PF) +   DrawingBufferPitch   ()* ( Y )  )
       Case      #PB_PixelFormat_32Bits_BGR      : PF=4
      color=    PeekL   (   DrawingBuffer   () + (x * PF) +   DrawingBufferPitch   ()* ( Y )  ) 
      Rouge=   Red   (color)
      Vert=   Green   (color)
      Bleu=   Blue   (color)
      color=   RGB   (Bleu,Vert,Rouge)  
     EndSelect      
     ProcedureReturn    color 
   EndProcedure   
   Procedure    rapide_Plot(x,Y,color)   
     Select       DrawingBufferPixelFormat   () 
       Case      #PB_PixelFormat_16Bits   : PF=2 
      Rouge=   Red   (color)
      Vert=   Green   (color)
      Bleu=   Blue   (color)
      color=   RGB   (Bleu,Vert,Rouge)   
      color=color>>2  
         PokeW   (    DrawingBuffer   ()  + (x * PF) +   DrawingBufferPitch   ()* ( Y ) , color ) 
       Case      #PB_PixelFormat_32Bits_RGB      : PF=4:t=0 
         PokeL   (   DrawingBuffer   () + (x * PF) +   DrawingBufferPitch   ()* ( Y ) ,color ) 
       Case      #PB_PixelFormat_32Bits_BGR      : PF=4:t=1  
      Rouge=   Red   (color)
      Vert=   Green   (color)
      Bleu=   Blue   (color)
      color=   RGB   (Bleu,Vert,Rouge) 
         PokeL   (   DrawingBuffer   () + (x * PF) +   DrawingBufferPitch   ()* ( Y ) ,color ) 
     EndSelect      
   EndProcedure   
 
 
			 
			
					
				
				Publié : dim. 30/sept./2007 11:06
				par Backup
				ok ! Merci Comtois, je viens de comprendre mon erreur !! 
j'ai donc remis ma procedure a jour , (comme avant mais en ne gardant que le 32 bit ! 

 )
@Patrick88 : ça devrai marcher maintenant , l'exemple coloré !! 
ps ; je me suis permis de nettoyer le post, pour eviter l'embrouille lors des recherches futur )
 
			 
			
					
				
				Publié : dim. 30/sept./2007 12:05
				par Mytic
				@Dobro
Avec ton nouveau rapide_plot() ça marche plus chez moi ?!
Y’a plus de collision !!
 

 
			 
			
					
				
				Publié : dim. 30/sept./2007 12:09
				par Mytic
				@Dobro
Essai ce rapide_Plot():
Code : Tout sélectionner
Procedure rapide_Point(x,Y)
Select DrawingBufferPixelFormat()
Case #PB_PixelFormat_8Bits : PF=1:t=0
Case #PB_PixelFormat_15Bits : PF=2:t=0
Case #PB_PixelFormat_16Bits : PF=2:t=0
Case #PB_PixelFormat_24Bits_RGB : PF=3:t=0
Case #PB_PixelFormat_24Bits_BGR : PF=3:t=1
Case #PB_PixelFormat_32Bits_RGB : PF=4:t=0
Case #PB_PixelFormat_32Bits_BGR : PF=4:t=1
EndSelect
Select PF
Case 1 :color= PeekB(DrawingBuffer() + (x * PF) +DrawingBufferPitch()* ( Y ) )
Case 2 :color= PeekW(DrawingBuffer() + (x * PF) +DrawingBufferPitch()* ( Y ) )
Case 3 :
;--------
;C’est plus délicat, il faut faire 3 peekB pour le Rouge le Vert et le Bleu,
;puis les rassemblés avec un RGB()
;--------
Case 4 :color= PeekL(DrawingBuffer() + (x * PF) +DrawingBufferPitch()* ( Y ) )
EndSelect
If t=1
Rouge=Red(color)
Vert=Green(color)
Bleu=Blue(color)
color=RGB(Bleu,Vert,Rouge)
EndIf
ProcedureReturn color
EndProcedure 
 
			 
			
					
				
				Publié : dim. 30/sept./2007 12:12
				par Backup
				Mytic a écrit :@Dobro
Avec ton nouveau rapide_plot() ça marche plus chez moi ?!
Y’a plus de collision !!
 

 
tu veux dire rapide point() 
oui je sais, j'ai eu une conversation avec Comtois qui m'a explique pourquoi !! 
du coup je suis revenu a l'ancienne version, simplifié au 32 Bit 

(je sais plus d'ailleurs si ce code etait de toi ou de Cpl-Bator ??!! ) 

et j'ai dans la foulée remodifié mon code 

 
			 
			
					
				
				Publié : dim. 30/sept./2007 12:12
				par Mytic
				Ah j’ai trouvé, ça marchait pas parce que ma carte graphique était configurer pour 16 bits (Bizarre j’utilise d’habitude que le 32)  
