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)