couleur des pixels...

Programmation avancée de jeux en PureBasic
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

couleur des pixels...

Message 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 
Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 :)
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message 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
Image
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message 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
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message 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 ???
Image
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

tu es en dehor du sprite ;)
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

oh ben j'ai posté mon message 2 secondes après
Image
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

pourquoi je suis en dehors???
a chaque fois je remet mon for a 0 et je recommence!
Image
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

même comme ça ça marche pas!
Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pourquoi le debugueur s'affiche pas, chez moi, en mode écran ?? :(

Chris :)
Répondre