Page 1 sur 1

couleur des pixels...

Publié : sam. 28/févr./2004 17:16
par Pierre
donc je veux regarder la couleur de tous les pixels d'un sprite, dans le code posté
ci-dessous le debug marche même pas et la variable couleur me retourne toujours 0
je vois pas ou est le problème (c'est peut-être tout bête...)

si en passant vous pouviez me donner une façon efficace pour debugger un programme, ça serait pas de refus, parce que ça commence a me les casser, tous ce que je fais ça marche 1 fois sur 10 (sans exagerer!), et quand ça marche c'est bourré de bugs! :mad: :evil: :mad: :evil:
:mad: :evil: :mad: :evil:

il faut un sprite pour executer le code

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Erreur", "Il faut directx7.0 minimum pour que ce programme puisse fonctionner", #MB_ICONERROR) 
  End 
EndIf 

; ouverture de l'écran 
If OpenScreen(800,600,16,"") = 0    
  MessageRequester("Erreur", "L'écran n'a pus être ouvert, cette application ne peut-être lancée", #MB_ICONERROR) 
  End 
EndIf 

DefType.f

LoadSprite(1,"1.bmp") 

TransparentSpriteColor(1,0,0,0)

largeur = SpriteWidth(1)
hauteur = SpriteHeight(1)

;- debut de la boucle principale   
Repeat 
  ClearScreen(0,0,0)       
  ExamineKeyboard()
  
  DisplayTransparentSprite(1, x, y) 
  
  StartDrawing(SpriteOutput(1));j'opère sur le sprite 1    
  For C.l = 0 To hauteur ;ligne par ligne
    For A.l = 0 To largeur  ;pixel par pixel  
      Couleur = Point(A, C)
   
      Debug Couleur
    Next A
  Next C
  StopDrawing()
    
  FlipBuffers()
Until KeyboardPushed(#PB_key_escape) 
CloseScreen()  
End 

Publié : sam. 28/févr./2004 17:28
par Chris
J'ai pas testé ton code, mais pour debugger, pourquoi tu ne fais pas ça dans un OpenWindowedScreen().

Ca te permettrait d'avoir le debugger, et quand c'est au point, tu mets tout ça en OpenScreen().

Chris :)

Publié : sam. 28/févr./2004 17:33
par Pierre
même quand c'est en plein écran d'habitude je vois le debugger (je trouve ça un peu bizarre mais c'est comme ça), donc le problème que le debug s'affiche pas ne viens pas de la et pis mon problème c'est que couleur = 0 tous le temp!
ça m'énerve

Publié : sam. 28/févr./2004 19:20
par cederavic

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0 
  MessageRequester("Erreur", "Il faut directx7.0 minimum pour que ce programme puisse fonctionner", #MB_ICONERROR) 
  End 
EndIf 

; ouverture de l'écran 
If OpenScreen(800,600,16,"") = 0    
  MessageRequester("Erreur", "L'écran n'a pus être ouvert, cette application ne peut-être lancée", #MB_ICONERROR) 
  End 
EndIf 

;DefType.f 

UsePNGImageDecoder()
LoadSprite(1,"s.png") 



TransparentSpriteColor(1,0,0,0) 

largeur = SpriteWidth(1) 
hauteur = SpriteHeight(1) 

Dim tj(hauteur, largeur)

;- debut de la boucle principale    
Repeat 
  ClearScreen(0,0,0)        
  ExamineKeyboard() 
  
  DisplayTransparentSprite(1, x, y) 
  
  StartDrawing(SpriteOutput(1));j'opère sur le sprite 1    
  For C.l = 0 To hauteur ;ligne par ligne 
    For A.l = 0 To largeur  ;pixel par pixel  
    
      tj(a, c) = Point(A, C) 
      
    Next A 
  Next C 
  StopDrawing() 
  
  StartDrawing(ScreenOutput())
   For C.l = 0 To hauteur * 20 ;ligne par ligne 
    For A.l = 0 To largeur * 20  ;pixel par pixel
      
      LineXY(a + 100, c + 100, a + 120, c + 120, tj(a / 20, c / 20))
 
    Next A 
  Next C 
  StopDrawing()
    
  FlipBuffers() 
Until KeyboardPushed(#PB_key_escape) 
CloseScreen()  
End 
mon image fait 10 * 10 donc ajuste, ça marche bien par contre pour le debuggueur je pense que c'et un bug, j'en parlerai a fred

Publié : sam. 28/févr./2004 19:23
par Pierre
bon ben j'ai enlevé le deftype et ça marche, couleur me renvoie des valeurs, mais ça veut dire quoi quand ça retourne - 1 ???

Publié : sam. 28/févr./2004 19:25
par cederavic
tu es en dehor du sprite ;)

Publié : sam. 28/févr./2004 19:26
par Pierre
oh ben j'ai posté mon message 2 secondes après

Publié : sam. 28/févr./2004 19:28
par Pierre
pourquoi je suis en dehors???
a chaque fois je remet mon for a 0 et je recommence!

Publié : sam. 28/févr./2004 19:33
par comtois
ben , si tu as une largeur de 3 pixels , et que tu commences à 0
ta boucle sera

Code : Tout sélectionner

for a = 0 to 2 
et pas 3 , sinon ça fait 4 pixels , 0 ,1 , 2 , 3 !

donc tu dois faire

for a = 0 to largeur - 1

Publié : sam. 28/févr./2004 19:40
par Pierre
même comme ça ça marche pas!

Publié : sam. 28/févr./2004 20:01
par Chris
Pourquoi le debugueur s'affiche pas, chez moi, en mode écran ?? :(

Chris :)