Page 2 sur 2

Publié : ven. 28/janv./2005 12:41
par Frenchy Pilou
C'était juste pour gagner des lignes de code pour les encore non-licenciés :)

Publié : ven. 28/janv./2005 13:09
par hardy
Moi, je fais plutôt ça, c'est plus rapide:

Code : Tout sélectionner

Dim tab(10,10) ; on cree 2 tableaux
Dim tab2(10,10)


For x= 0 To 10
  For y=0 To 10
    tab (x,y)=Random(50) ; on rempli le premier avec des chiffre au hazard
Next y
Next x

;on copie le tableau 1  dans le 2

copymemory(@tab(),@tab2(),4*11*11); long=4 octets



; on verifie

For x= 0 To 10
  For y=0 To 10
     Debug "tableau 1 "+ Str(tab (x,y))
    Debug "tableau 2 "+ Str(tab2 (x,y))
   
  Next y
Next x 

Publié : ven. 28/janv./2005 13:51
par Backup
:D c'est ce que je disai en passant par les pointeurs ça doit etre plus rapide :D

Merci Hardy :D

ps : aquoi sert

Code : Tout sélectionner

4*11*11
le 4 c'est pour les long , mais les 11 ?? 8O

Publié : ven. 28/janv./2005 14:03
par Backup
avec c=c/4.002 la c'est delire !! a regarder un moment ! :D

Code : Tout sélectionner

#dobro=1
#Police=1
#Sprite=1

spr=1
Dim ecran(640,400)
For x = 0 To 640 ; un écran de couleurs aléatoires
  For y = 0 To 400
    r=Random(2)
    g=Random(255)
    b=Random(5)
    c=RGB(r,g,b)
    ecran(x,y)= c
  Next y
Next x

; ***********************************
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(1, 0, 0, 640, 400,  #PB_Window_SystemMenu| #PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello")
  
  WindowID = WindowID(1)
  Result = OpenWindowedScreen(WindowID,0,0, 640, 400, 1, 0,0)
  CreateSprite(1, 650, 420)  ; cree 1 sprites qui sert d'ecran 1
  CreateSprite(2, 650, 420)  ;  cree 1 sprites qui sert d'ecran 2
  
  
  Resultat = InitMouse()
  
  Repeat
    ExamineMouse()
    Event=WindowEvent()
    
    While MouseButton(1)
      mouse_event_(#MOUSEEVENTF_LEFTUP,xm,ym,0,1) ; appuis
      mouse_event_(#MOUSEEVENTF_LEFTDOWN,xm,ym,0,1) ; relache
    Wend
    
    If MouseButton(2)
      End
    EndIf
    
    StartDrawing(SpriteOutput(spr) ) ; on dessine dedans
    For x = 1 To 640
      For y = 1 To 400 ;genre de moyenne de couleur autour du pixel considéré
        c=ecran(x-1,y) + ecran(x+1,y) + ecran(x,y-1) + ecran(x,y+1)
        c=c/4.002
        If c<1
          c = RGB(0,0,255)
        EndIf
        ecran(x,y)=c
        Plot(x,y,c) ; on affiche les pixels avec la nouvelle couleur
      Next y
    Next x
    StopDrawing() 
    spr=spr+1
    If spr>2
      spr=1
    EndIf
    
    
    DisplaySprite(spr, -5, -5)
    
    
    
    
    
    FlipBuffers():; affiche l'ecran
    ClearScreen(0, 0, 0) :;efface l'ecran
    
  Until Event=#PB_Event_CloseWindow
  

Publié : ven. 28/janv./2005 15:01
par nico
Dobro a écrit ::D c'est ce que je disai en passant par les pointeurs ça doit etre plus rapide :D

Merci Hardy :D

ps : aquoi sert

Code : Tout sélectionner

4*11*11
le 4 c'est pour les long , mais les 11 ?? 8O
Ben alors, déjà oublié ce que tu disais, c'est le nombre d'éléments. :lol:

Publié : ven. 28/janv./2005 15:28
par hardy
@Dobro : pb de gestion de sortie du programme.
Ton prog m'a fait un mega plantage (spectaculaire!)
Enfin, pas de mal :D

Publié : ven. 28/janv./2005 15:31
par Frenchy Pilou

Code : Tout sélectionner

#dobro=1
#Police=1
#Sprite=1
spr=1
Dim ecran(640,480)
For x = 0 To 639 ; un écran de couleurs aléatoires
  For y = 0 To 479
    r=Random(255)
    g=Random(255)
    b=Random(255)   
    c=RGB(r,g,b)  ;Couleur du pixel
    ecran(x,y)= c
  Next y
Next x
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = 600 ;=largeur de l'ecran
EcranY = 480;=hauteur de l'ecran
  WindowID = OpenWindow(1, 0, 0, 640, 480,  #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello")
 
  WindowID = WindowID(1)
  Result = OpenWindowedScreen(WindowID,0,0, 640, 480, 1, 0,0)
  CreateSprite(1, 640, 480)  ; cree 1 sprites qui sert d'ecran 1
  CreateSprite(2, 640, 480)  ;  cree 1 sprites qui sert d'ecran 2   
 
 Repeat

    Event=WindowEvent()
   
      StartDrawing(SpriteOutput(spr) ) ; on dessine dedans
      
      For x = 1 To 638 ; lignes intérieures
              For y = 1 To 478;genre de moyenne de couleur autour du pixel considéré
          c=ecran(x-1,y) + ecran(x+1,y) + ecran(x,y-1) + ecran(x,y+1)
          Gosub t_race         
        Next y
      Next x      
 
      For x = 1 To 638 ;ligne x 0 
          c=ecran(x-1,0) + ecran(x+1,0) + ecran(x,1) + ecran(x,479)
          y=0
         Gosub t_race         
      Next x 
      For x = 1 To 638 ;ligne x 479 
          c=ecran(x-1,479) + ecran(x+1,479) + ecran(x,1) + ecran(x,478)
          y=479
         Gosub t_race         
      Next x 
      For y = 1 To 478 ;colonne 0 y
          c=ecran(639,y) + ecran(1,y) + ecran(0,y-1) + ecran(0,y+1)
          x= 0
         Gosub t_race         
      Next y
      For y = 1 To 478 ;colonne 639 y
          c=ecran(638,y) + ecran(0,y) + ecran(639,y-1) + ecran(639,y+1)
          x= 639
         Gosub t_race         
      Next y 
;Les 4 coins
         c=ecran(639,0) + ecran(1,0) + ecran(0,479) + ecran(0,1)
          x=0
          y=0
          Gosub t_race
         c=ecran(639,479) + ecran(1,479) + ecran(0,478) + ecran(0,0)
          x=0
          y=479
          Gosub t_race
        c=ecran(638,0) + ecran(0,0) + ecran(639,479) + ecran(639,1)
          x=639
          y=0
          Gosub t_race
         c=ecran(638,479) + ecran(0,479) + ecran(639,478) + ecran(639,0)
          x=639
          y=479
          Gosub t_race
     
    StopDrawing() 
    spr=spr+1
    If spr>2
      spr=1
    EndIf
      
    DisplaySprite(spr, 0, 0)      
   
    FlipBuffers():; affiche l'ecran
    ClearScreen(0, 0, 0) :;efface l'ecran
   
  Until Event=#PB_Event_CloseWindow 
  End
        t_race :
          m=4     
          c=c/m   ;Genre de moyenne de couleurs des 4 voisins du pixel considéré 
          s= 1 ;seuil 
          ;C'est la moyenne et le seuil qui déterminent des genres d'images totalement différentes!
          If c<s
            c=RGB(125,125,125)       ;Si la  moyenne de couleurs dépasse un seuil on la normalise   
          EndIf
          ecran(x,y)=c
          Plot(x,y,c) ; on affiche le pixel avec la nouvelle couleur
         Return    
     
Voila les bords sont propres :)
Maintenant il faudrait pouvoir rentrer 2 valeurs M et S car ce sont elles qui conditionnent la structure de l'image :)
J'ai abandonné le tableau temporaire, mais je garde précieusement vos indications de remplissage de tableaux :)

Publié : ven. 28/janv./2005 15:39
par Frenchy Pilou
@dobro
Psychadélique n'est-ce pas ?
par contre c'est curieux que ton programme marche car moi le programme me dit dépassement des tailles de tableaux
La boucle doit aller de 0 à 639 :)
J'ai rectifié et cela marche :) (toujours en virant les tests de souris et autres fonctions donnant la taille écran :)

Pour ces programmes c'est fou le nombre de différentes d'images que l'on peut obtenir en changeant la Moyenne et le seuil !

Ps Autres truc curieux, les boutons de l'editeur de votre forum mettent systématiquements les balises à la fin de l'écran :x alors que cela ne m'arrive pas dans les autres forum!
Astuce: Une mise en forme peut être appliquée au texte sélectionné.
Cela ne marche pas pour moi :cry:
Je suis obligé de faire cela manuellement !

Publié : ven. 28/janv./2005 16:12
par filperj
Hé, très joli ! :D
J'aime beaucoup l'effet "à 2 niveaux".

Publié : ven. 28/janv./2005 16:59
par Oliv
filperj a écrit :Hé, très joli ! :D
J'aime beaucoup l'effet "à 2 niveaux".
Moi aussi :)

Publié : ven. 28/janv./2005 17:23
par Frenchy Pilou
Essayez la même chose en chargeant une "Photo" !
Cela doit marcher tout pareil et faire des trucs pas croyables :)

Publié : ven. 28/janv./2005 18:55
par Backup
Ben alors, déjà oublié ce que tu disais, c'est le nombre d'éléments. Laughing
:oops: quel ane ! :lol: