Page 1 sur 2

Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 10:28
par Cool Dji
Hello,

Petit code qui ne mange pas de pain.
Une grille composée d'hexagones qui se colorient lorsque le pointeur souris passe dessus avec un effet fade-off...

Code : Tout sélectionner

InitSprite()
InitMouse()
InitKeyboard()


;----- Ouvre un Screen Plein écran
OpenScreen(1024, 768, 32, "")


;-- création d'un sprite en hexagone coloré à l'intérieur
CreateSprite(1,37,32,#PB_Sprite_AlphaBlending) 
StartDrawing(SpriteOutput(1))
LineXY(9,0,28,0,$FFFFFF)
LineXY(28,0,36,16,$FFFFFF)
LineXY(28,31,36,16,$FFFFFF)
LineXY(28,31,9,31,$FFFFFF)
LineXY(0,16,9,31,$FFFFFF)
LineXY(9,0,0,16,$FFFFFF)
FillArea(15,15,-1,RGB(152,50,100))
StopDrawing()
TransparentSpriteColor(1,O)

;-- création d'un sprite en hexagone non coloré à l'intérieur
CreateSprite(2,37,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(2))
LineXY(9,0,28,0,$FFFFFF)
LineXY(28,0,36,16,$FFFFFF)
LineXY(28,31,36,16,$FFFFFF)
LineXY(28,31,9,31,$FFFFFF)
LineXY(0,16,9,31,$FFFFFF)
LineXY(9,0,0,16,$FFFFFF)
StopDrawing()
TransparentSpriteColor(2,O)

;-- création d'un sprite => cercle pour le pointeur souris
CreateSprite(3,32,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(3))
Circle(16,16,15,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(3,O)

;-- Construit une grille formée d'hexagone
Global nbhexa=0, linehexa=22, colhexa=18
Global Dim hexaX(linehexa * colhexa * 2), Dim hexaY(linehexa * colhexa * 2) , Dim hexaL(linehexa * colhexa * 2)

; hexaX = position x d'un hexagone
; hexaY = position x d'un hexagone
; hexaL = luminosité d'un hexagone

 For y=0 To linehexa-1
       For x=0 To colhexa-1
         nbhexa+1
         hexaX(nbhexa)=x*55+15    ;Position X de l'hexagone
         hexaY(nbhexa)=y*32+15   ;Position Y de l'hexagone
     
         nbhexa+1
         hexaX(nbhexa)=x*55+28+15
         hexaY(nbhexa)=y*32+16+15
  Next
 Next 



;----- Clavier en mode International
KeyboardMode(#PB_Keyboard_International)


;-    
;--   S T A R T     L O O P
;-    
Repeat
   
;----- Examine Clavier et Souris
 ExamineKeyboard()
 ExamineMouse()
  
 ClearScreen(RGB(0,0,0)) ; Efface l'écran
 
 ;-- Affiche les hexagones
   For j=1 To nbhexa
     ; si le pointeur souris touche un hexagone, on active l'affichage d'un hexagone plein
      If SpritePixelCollision(3,MouseX(),MouseY(),2,hexaX(j),hexaY(j))
           hexaL(j)=255    ; valeur de la luminosité de l'hexagone plein
       EndIf  
       
       ; si un hexagone plein est activé, on baisse peu à peu sa luminosité
      DisplayTransparentSprite(1,hexaX(j),hexaY(j),HexaL(j))
      If hexaL(j)>0:hexaL(j)-5 : EndIf

       ; affiche le contour de l'hexagone
      DisplayTransparentSprite(2,hexaX(j),hexaY(j),255)
    
    Next        
    
   ; Affiche le pointeur souris (le sprite en cercle) 
   DisplayTransparentSprite(3,MouseX(),MouseY(),155)
 FlipBuffers()
 
Until KeyboardPushed(#PB_Key_Escape)

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 11:02
par Zorro
cool :)

comme ceci , ça permet d'en faire un Extincteur d'ecran a moindre frais

note, que j'ai pas inclu le code pour en faire un extincteur d'ecran ... mais c'est pas grand chose a ajouter :)

j'ai ajuster le graph a la resolution de l'ecran en cours, comme ça ça prends plein ecran chez tut le monde :)
et ajouter une gestion du deplacement automatique ....

Code : Tout sélectionner

InitSprite()
InitMouse()
InitKeyboard()


;----- Ouvre un Screen Plein écran

ExamineDesktops()
y_screen=desktopHeight(0)
x_screen=desktopWidth(0)

OpenScreen(x_screen, y_screen, 32, "")


;-- création d'un sprite en hexagone coloré à l'intérieur
CreateSprite(1,37,32,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(1))
		LineXY(9,0,28,0,$FFFFFF)
		LineXY(28,0,36,16,$FFFFFF)
		LineXY(28,31,36,16,$FFFFFF)
		LineXY(28,31,9,31,$FFFFFF)
		LineXY(0,16,9,31,$FFFFFF)
		LineXY(9,0,0,16,$FFFFFF)
		FillArea(15,15,-1,RGB(152,50,100))
StopDrawing()
TransparentSpriteColor(1,O)

;-- création d'un sprite en hexagone non coloré à l'intérieur
CreateSprite(2,37,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(2))
		LineXY(9,0,28,0,$FFFFFF)
		LineXY(28,0,36,16,$FFFFFF)
		LineXY(28,31,36,16,$FFFFFF)
		LineXY(28,31,9,31,$FFFFFF)
		LineXY(0,16,9,31,$FFFFFF)
		LineXY(9,0,0,16,$FFFFFF)
StopDrawing()
TransparentSpriteColor(2,O)

;-- création d'un sprite => cercle pour le pointeur souris
CreateSprite(3,32,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(3))
		Circle(16,16,15,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(3,O)

;-- Construit une grille formée d'hexagone
Global nbhexa=0, linehexa=x_screen/32, colhexa=y_screen/32
Global Dim hexaX(linehexa * colhexa * 2), Dim hexaY(linehexa * colhexa * 2) , Dim hexaL(linehexa * colhexa * 2)

; hexaX = position x d'un hexagone
; hexaY = position x d'un hexagone
; hexaL = luminosité d'un hexagone

For y=0 To linehexa-1
		For x=0 To colhexa-1
				nbhexa+1
				hexaX(nbhexa)=x*55+15    ;Position X de l'hexagone
				hexaY(nbhexa)=y*32+15   ;Position Y de l'hexagone
				
				nbhexa+1
				hexaX(nbhexa)=x*55+28+15
				hexaY(nbhexa)=y*32+16+15
		Next
Next



;----- Clavier en mode International
KeyboardMode(#PB_Keyboard_International)


;-   
;--   S T A R T     L O O P
;-   
X_random=x_screen/2
y_random=y_screen/2
;pas_x=5
;pas_y=5
Repeat
		
		changement=random(50,1)
		if changement=1
		Pas_x=random(10,1)
		Pas_y=random(10,1)
		Endif
		de_x=random(2,0)
		de_y=random(2,0)
		if  de_x=1:Pas_x=-Pas_x:Endif
		if  de_y=1:Pas_y=-Pas_y:Endif
		X_random=	X_random+Pas_x
		y_random=	y_random+Pas_y
		
		If x_random<0 :x_random =x_screen-32:Endif
		If y_random<0 :y_random =y_screen-32:Endif
		If x_random>=x_screen :x_random =32:Endif
		If y_random>=y_screen :y_random =32:Endif
		
		;----- Examine Clavier et Souris
		ExamineKeyboard()
		ExamineMouse()
		
		ClearScreen(RGB(0,0,0)) ; Efface l'écran
		
		;-- Affiche les hexagones
		For j=1 To nbhexa
				; si le pointeur souris touche un hexagone, on active l'affichage d'un hexagone plein
				If SpritePixelCollision(3,x_random,y_random,2,hexaX(j),hexaY(j))
						hexaL(j)=255    ; valeur de la luminosité de l'hexagone plein
				EndIf 
				
				; si un hexagone plein est activé, on baisse peu à peu sa luminosité
				DisplayTransparentSprite(1,hexaX(j),hexaY(j),HexaL(j))
				If hexaL(j)>0:hexaL(j)-5 : EndIf
				
				; affiche le contour de l'hexagone
				DisplayTransparentSprite(2,hexaX(j),hexaY(j),255)
				
		Next       
		
		; Affiche le pointeur souris (le sprite en cercle)
		;;   DisplayTransparentSprite(3,MouseX(),MouseY(),155)
		FlipBuffers()
		
Until KeyboardPushed(#PB_Key_Escape)

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 11:09
par Ar-S
Merci Cool Dji.
Les vraies prémices d'un jeu de stratégie au tour par tour :P

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 13:11
par falsam
Joli rendu visuel et j’apprécie ce code bien documenté. Merci pour ce partage Cool Dji.

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 13:27
par Kwai chang caine
CoolDJ a écrit :Petit code qui ne mange pas de pain.
L'important c'est qu'il ne mange pas de viande 8) .....enfin j'me comprends :mrgreen:

Waooouhhh !!!!
Super joli, incroyable ce que l'on peut faire, somme toutes, avec si peu de lignes 8O

Et en plus un code source de ruche complèt sans API "culteur".....c'est pas donné tous les jours d'en voir
Merci beaucoup pour le partage 8)

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 13:30
par Cool Dji
Hello les amis,

Héhé, Ar-S a vu juste ;)
Pas mal comme fond d'écran, Mr Zorro.
Merci Falsam, à l'origine j'avais testé avec Spider ;) et c'est en voyant Babylon que je me suis replongé dans mes vieux codes Spider...
KCC => je vais bientôt mettre en ligne un code que je n'ai pas pu sortir pour un purepunch avec une fonction spéciale KCC ;)

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 13:41
par Kwai chang caine
Waaaooouuuh rien que pour moi !!!! 8O
Quécécé ?????? un "kdo" bien mérité ? :D
Image

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 15:07
par Zorro
Kwai chang caine a écrit :Quécécé ??????
ptete un rapport avec le Gif ?

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 15:15
par microdevweb
Très beau

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 15:38
par Cool Dji
Héhé, je poste ce soir sur le forum...

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 18:07
par TazNormand
Une rapide modif du code de Zorro pour être plus en adéquation avec un éventuel économiseur d'écran, car les hexagones blancs ne font pas vraiment économiser les diodes de nos écans LCD :lol:
Changement de la couleur $FFFFFF en $000001
détection du déplacement de la souris pour sortir du programme (comme un screensaver)

Code : Tout sélectionner


; Initial code : Cool Dji
; 1st update : Zorro
; 2nd very very minor update TazNormand

InitSprite()
InitMouse()
InitKeyboard()


;----- Ouvre un Screen Plein écran

ExamineDesktops()
y_screen=DesktopHeight(0)
x_screen=DesktopWidth(0)

OpenScreen(x_screen, y_screen, 32, "")
ExamineMouse()

;-- création d'un sprite en hexagone coloré à l'intérieur
CreateSprite(1,37,32,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(1))
      LineXY(9,0,28,0,$000001)
      LineXY(28,0,36,16,$000001)
      LineXY(28,31,36,16,$000001)
      LineXY(28,31,9,31,$000001)
      LineXY(0,16,9,31,$000001)
      LineXY(9,0,0,16,$000001)
      FillArea(15,15,-1,RGB(152,50,100))
StopDrawing()
TransparentSpriteColor(1,O)

;-- création d'un sprite en hexagone non coloré à l'intérieur
CreateSprite(2,37,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(2))
      LineXY(9,0,28,0,$000001)
      LineXY(28,0,36,16,$000001)
      LineXY(28,31,36,16,$000001)
      LineXY(28,31,9,31,$000001)
      LineXY(0,16,9,31,$000001)
      LineXY(9,0,0,16,$000001)
StopDrawing()
TransparentSpriteColor(2,O)

;-- création d'un sprite => cercle pour le pointeur souris
CreateSprite(3,32,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(3))
      Circle(16,16,15,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(3,O)

;-- Construit une grille formée d'hexagone
Global nbhexa=0, linehexa=x_screen/32, colhexa=y_screen/32
Global Dim hexaX(linehexa * colhexa * 2), Dim hexaY(linehexa * colhexa * 2) , Dim hexaL(linehexa * colhexa * 2)

; hexaX = position x d'un hexagone
; hexaY = position x d'un hexagone
; hexaL = luminosité d'un hexagone

For y=0 To linehexa-1
      For x=0 To colhexa-1
            nbhexa+1
            hexaX(nbhexa)=x*55+15    ;Position X de l'hexagone
            hexaY(nbhexa)=y*32+15   ;Position Y de l'hexagone
            
            nbhexa+1
            hexaX(nbhexa)=x*55+28+15
            hexaY(nbhexa)=y*32+16+15
      Next
Next



;----- Clavier en mode International
KeyboardMode(#PB_Keyboard_International)


;-   
;--   S T A R T     L O O P
;-   
X_random=x_screen/2
y_random=y_screen/2
;pas_x=5
;pas_y=5
initialMouse=MouseX()+MouseY()

Repeat
      
      changement=Random(50,1)
      If changement=1
      Pas_x=Random(10,1)
      Pas_y=Random(10,1)
      EndIf
      de_x=Random(2,0)
      de_y=Random(2,0)
      If  de_x=1:Pas_x=-Pas_x:EndIf
      If  de_y=1:Pas_y=-Pas_y:EndIf
      X_random=   X_random+Pas_x
      y_random=   y_random+Pas_y
      
      If x_random<0 :x_random =x_screen-32:EndIf
      If y_random<0 :y_random =y_screen-32:EndIf
      If x_random>=x_screen :x_random =32:EndIf
      If y_random>=y_screen :y_random =32:EndIf
      
      ;----- Examine Clavier et Souris
      ExamineKeyboard()
      ExamineMouse()
      
      ClearScreen(RGB(0,0,0)) ; Efface l'écran
      
      ;-- Affiche les hexagones
      For j=1 To nbhexa
            ; si le pointeur souris touche un hexagone, on active l'affichage d'un hexagone plein
            If SpritePixelCollision(3,x_random,y_random,2,hexaX(j),hexaY(j))
                  hexaL(j)=255    ; valeur de la luminosité de l'hexagone plein
            EndIf
            
            ; si un hexagone plein est activé, on baisse peu à peu sa luminosité
            DisplayTransparentSprite(1,hexaX(j),hexaY(j),HexaL(j))
            If hexaL(j)>0:hexaL(j)-5 : EndIf
            
            ; affiche le contour de l'hexagone
            DisplayTransparentSprite(2,hexaX(j),hexaY(j),255)
            
      Next       
      
      ; Affiche le pointeur souris (le sprite en cercle)
      ;;   DisplayTransparentSprite(3,MouseX(),MouseY(),155)
      FlipBuffers()
      
Until KeyboardPushed(#PB_Key_Escape) Or (MouseX()+MouseY())<>initialmouse

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 20:05
par JohnJohnsonSHERMAN
Allez ....

Le même mais avec une mosaique d'hexagones aléatoires qui scintillent et de tout un tas de couleurs différentes :)
Pour un meilleur rendu n'hésitez pas à baisser les valeurs random de certaines couleurs (ex enlever le bleu ou le rouge), pour un ensemble plus homogéne et personnalisé

Code : Tout sélectionner

; Initial code : Cool Dji
; 1st update : Zorro
; 2nd very very minor update TazNormand
; 3rd update by JJSherman

InitSprite()
InitMouse()
InitKeyboard()


;----- Ouvre un Screen Plein écran

ExamineDesktops()
y_screen=DesktopHeight(0)
x_screen=DesktopWidth(0)

OpenScreen(x_screen, y_screen, 32, "")
ExamineMouse()

;-- création d'un sprite en hexagone coloré à l'intérieur
For i=4 To 104
CreateSprite(i,37,32,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(i))
LineXY(9,0,28,0,$000001)
LineXY(28,0,36,16,$000001)
LineXY(28,31,36,16,$000001)
LineXY(28,31,9,31,$000001)
LineXY(0,16,9,31,$000001)
LineXY(9,0,0,16,$000001)
FillArea(15,15,-1,RGB(Random(255),Random(255),Random(255)));<<<Jouez sur les valeurs pour modifier la teinte globale
StopDrawing()
TransparentSpriteColor(i,O)
Next


;-- création d'un sprite en hexagone non coloré à l'intérieur
CreateSprite(2,37,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(2))
LineXY(9,0,28,0,$000001)
LineXY(28,0,36,16,$000001)
LineXY(28,31,36,16,$000001)
LineXY(28,31,9,31,$000001)
LineXY(0,16,9,31,$000001)
LineXY(9,0,0,16,$000001)
StopDrawing()
TransparentSpriteColor(2,O)

;-- création d'un sprite => cercle pour le pointeur souris
CreateSprite(3,32,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(3))
Circle(16,16,1,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(3,O)

;-- Construit une grille formée d'hexagone
Global nbhexa=0, linehexa=x_screen/32, colhexa=y_screen/32
Global Dim hexaX(linehexa * colhexa * 2), Dim hexaY(linehexa * colhexa * 2) , Dim hexaL(linehexa * colhexa * 2) , Dim hexaC(linehexa * colhexa * 2)


; hexaX = position x d'un hexagone
; hexaY = position x d'un hexagone
; hexaL = luminosité d'un hexagone

For y=0 To linehexa-1
  For x=0 To colhexa-1
    nbhexa+1
    hexaX(nbhexa)=x*55+15       ;Position X de l'hexagone
    hexaY(nbhexa)=y*32+15       ;Position Y de l'hexagone
    hexaC(nbhexa)=Random(104,4) ;Couleur de l'hexagone (sprite)
    
    nbhexa+1
    hexaX(nbhexa)=x*55+28+15
    hexaY(nbhexa)=y*32+16+15
    hexaC(nbhexa)=Random(104,4)
  Next
Next



;----- Clavier en mode International
KeyboardMode(#PB_Keyboard_International)


;-   
;--   S T A R T     L O O P
;-   
X_random=x_screen/2
y_random=y_screen/2
;pas_x=5
;pas_y=5
initialMouse=MouseX()+MouseY()

Repeat
  
  
  
  
  ;----- Examine Clavier et Souris
  ExamineKeyboard()
  ExamineMouse()
  
  ClearScreen(RGB(0,0,0)) ; Efface l'écran
  
  ;-- Affiche les hexagones
  For j=1 To nbhexa
    ; si le pointeur souris touche un hexagone, on active l'affichage d'un hexagone plein
    For k=0 To 100
      x_random= Random(x_screen)
      y_random = Random(y_screen)
      If SpritePixelCollision(3,x_random,y_random,2,hexaX(j),hexaY(j))
        hexaL(j)=255    ; valeur de la luminosité de l'hexagone plein
      EndIf
    Next
    
    ; si un hexagone plein est activé, on baisse peu à peu sa luminosité
    DisplayTransparentSprite(hexaC(j),hexaX(j),hexaY(j),HexaL(j))
    If hexaL(j)>0:hexaL(j)-5 : EndIf
    
    ; affiche le contour de l'hexagone
    DisplayTransparentSprite(2,hexaX(j),hexaY(j),255)
    
  Next       
  
  ; Affiche le pointeur souris (le sprite en cercle)
  ;;   DisplayTransparentSprite(3,MouseX(),MouseY(),155)
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape) Or (MouseX()+MouseY())<>initialmouse

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 20:09
par raven
merci pour le partage cool dji 8)

petit test:

Code : Tout sélectionner

InitSprite()
InitMouse()
InitKeyboard()


;----- Ouvre un Screen Plein écran

ExamineDesktops()
y_screen=DesktopHeight(0)
x_screen=DesktopWidth(0)

OpenScreen(x_screen, y_screen, 32, "")


; ;-- création d'un sprite en hexagone coloré à l'intérieur
; CreateSprite(1,37,32,#PB_Sprite_AlphaBlending)
; StartDrawing(SpriteOutput(1))
;       LineXY(9,0,28,0,$FFFFFF)
;       LineXY(28,0,36,16,$FFFFFF)
;       LineXY(28,31,36,16,$FFFFFF)
;       LineXY(28,31,9,31,$FFFFFF)
;       LineXY(0,16,9,31,$FFFFFF)
;       LineXY(9,0,0,16,$FFFFFF)
;       FillArea(15,15,-1,RGB(rouge1,vert1,bleu1))
; StopDrawing()
; TransparentSpriteColor(1,O)

;-- création d'un sprite en hexagone non coloré à l'intérieur
CreateSprite(2,37,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(2))
LineXY(9,0,28,0,$FFFFFF)
LineXY(28,0,36,16,$FFFFFF)
LineXY(28,31,36,16,$FFFFFF)
LineXY(28,31,9,31,$FFFFFF)
LineXY(0,16,9,31,$FFFFFF)
LineXY(9,0,0,16,$FFFFFF)

StopDrawing()
TransparentSpriteColor(2,O)

;-- création d'un sprite => cercle pour le pointeur souris
CreateSprite(3,32,32,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(3))
Circle(14,14,15,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(3,O)

;-- Construit une grille formée d'hexagone
Global nbhexa=0, linehexa=x_screen/32, colhexa=y_screen/32
Global Dim hexaX(linehexa * colhexa * 2), Dim hexaY(linehexa * colhexa * 2) , Dim hexaL(linehexa * colhexa * 2)
Global Rouge2.f,Vert2.f,Bleu2.f,Drouge.f,Dvert.f,Dbleu.f,rouge1.f,vert1.f,bleu1.f
Procedure couleur()
  
  ;;-- création d'un sprite en hexagone coloré à l'intérieur
  CreateSprite(1,37,32,#PB_Sprite_AlphaBlending)
  StartDrawing(SpriteOutput(1))
  LineXY(9,0,28,0,$FFFFFF)
  LineXY(28,0,36,16,$FFFFFF)
  LineXY(28,31,36,16,$FFFFFF)
  LineXY(28,31,9,31,$FFFFFF)
  LineXY(0,16,9,31,$FFFFFF)
  LineXY(9,0,0,16,$FFFFFF)
  FillArea(15,15,-1,RGB(rouge1.f,vert1.f,bleu1.f))
  
  Rouge1.f = 0
  Vert1.f = 0
  Bleu1.f = 0
  
  Rouge2.f =55 
  Vert2.f = 45 
  Bleu2.f = 55 
  
  Drouge.f = ((Rouge2-Rouge1)/0.00010)
  Dvert.f =  ((Vert2-Vert1)/0.00010)
  Dbleu.f =  ((Bleu2-Bleu1)/0.0003)
  
  Rouge1- Drouge
  Vert1 - Dvert
  Bleu1 - Dbleu
  
  StopDrawing()
  
EndProcedure
; hexaX = position x d'un hexagone
; hexaY = position x d'un hexagone
; hexaL = luminosité d'un hexagone

For y=0 To linehexa-1
  For x=0 To colhexa-1
    nbhexa+1
    hexaX(nbhexa)=x*55+15    ;Position X de l'hexagone
    hexaY(nbhexa)=y*32+15    ;Position Y de l'hexagone
    
    nbhexa+1
    hexaX(nbhexa)=x*55+28+15
    hexaY(nbhexa)=y*32+16+15
  Next
Next

;----- Clavier en mode International
KeyboardMode(#PB_Keyboard_International)


;-   
;--   S T A R T     L O O P
;-   

; X_random=x_screen/2
; y_random=y_screen/2
;pas_x=5
;pas_y=5
Repeat
  
  ;----- Examine Clavier et Souris
  ExamineKeyboard()
  ExamineMouse()
  
  ClearScreen(RGB(0,0,0)) ; Efface l'écran
  couleur() 
  TransparentSpriteColor(1,O)
  ;-- Affiche les hexagones
  For j=1 To nbhexa
    ; si le pointeur souris touche un hexagone, on active l'affichage d'un hexagone plein
    If SpritePixelCollision(3,MouseX(),MouseY(),2,hexaX(j),hexaY(j))
      hexaL(j)=255;RGB(rouge1.f,vert1.f,bleu1.f)  ; valeur de la luminosité de l'hexagone plein
      Rouge1+ Drouge
      Vert1 + Dvert
      Bleu1 + Dbleu
    EndIf
    
    ; si un hexagone plein est activé, on baisse peu à peu sa luminosité
    DisplayTransparentSprite(1,hexaX(j),hexaY(j),HexaL(j))
    If hexaL(j)>0:hexaL(j)-5 : EndIf
    
    
    ; affiche le contour de l'hexagone
    DisplayTransparentSprite(2,hexaX(j),hexaY(j),15)
    
  Next       
  
  ; Affiche le pointeur souris (le sprite en cercle)
  ;   DisplayTransparentSprite(3,MouseX(),MouseY(),155)
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)

Re: Grille hexagonale lumineuse...

Publié : lun. 15/mai/2017 20:23
par JohnJohnsonSHERMAN
@raven, on a eu des idées similaires en même temps :P Je viens d'éditer mon code avec une version colorée ;)

Re: Grille hexagonale lumineuse...

Publié : mar. 16/mai/2017 8:40
par Cool Dji
Héhé,

Jolies production !

Celle de Raven est ma préférée ;)

Ce soir, je poste un code qui va déchirer : Pour mon boulot, à l'occasion d'une réunion de lancement en avril dernier, j'ai programmé en PB une animation projetée sur grand écran pour faire patienter les 300 invités... Le thème de la réunion était en lien avec l'aménagement du Territoire dans une nouvelle grande région...