Jeu de petits chevaux

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Jeu de petits chevaux

Message par GallyHC »

Bonjour,

Une version du premier code avec antialias :

Code : Tout sélectionner

Enumeration Fenetre
  #Fenetre
EndEnumeration

Enumeration Gadgets
  #Canvas
EndEnumeration  

InitSprite() :InitKeyboard() : InitMovie() : InitMouse() : InitSound() : UseJPEGImageDecoder()

Procedure ACircle(x.i, y.i, radius.d, color.i, antilenh.d = 1)
;
  Define.l lR, lG, lB
  Define.d dNormal, dValue

  If radius <= 0
    radius = 0.00001
  EndIf
  If antilenh <= 0
    antilenh = 0.00001
  EndIf

  DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Gradient)
  ResetGradientColors()

  lR      = Red  (color)
  lG      = Green(color)
  lB      = Blue (color)
  dNormal = 1 / radius
  dValue  = 1.0 - antilenh * dNormal

  GradientColor(   0  , RGBA(lR, lG, lB, 255))
  GradientColor(dValue, RGBA(lR, lG, lB, 255))
  GradientColor(   1  , RGBA(lR, lG, lB, 0  ))

  CircularGradient(x, y, radius)
  Circle          (x, y, radius)

EndProcedure

Procedure Ouvrir_Fenetre_principale()
  OpenWindow(#Fenetre, 0, 0, 1100, 950, "Petits chevaux", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  CanvasGadget(#Canvas, 0, 0, 1100, 950, #PB_Canvas_Border)
  
  
  ;dessin du plateau de jeu
  
  If StartDrawing(CanvasOutput(#Canvas))
    Ecart = 80
    Rayon = 30
    ;ligne 1
    Couleur = 0
    ACircle(70, 70, Rayon, Couleur)
    ACircle(70+Ecart, 70, Rayon, Couleur)    
    Couleur = $FFFF
    ACircle(70, 70, Rayon - 4, Couleur)
    ACircle(70+Ecart, 70, Rayon - 4, Couleur)
    couleur = 0
    ACircle(70 + (Ecart * 5), 70, Rayon, couleur)
    ACircle(70 + (Ecart * 6), 70, Rayon, couleur)
    ACircle(70 + (Ecart * 7), 70, Rayon, couleur)
    
    ACircle(70 + (Ecart * 11), 70, Rayon, Couleur)
    ACircle(70 + (Ecart * 12), 70, Rayon, Couleur)
    Couleur = $FF00
    ACircle(70 + (Ecart * 11), 70, Rayon - 4, Couleur)
    ACircle(70 + (Ecart * 12), 70, Rayon - 4, Couleur)
    ;ligne 2
    Couleur = 0
    ACircle(70, 70 + Ecart, Rayon, Couleur)
    ACircle(70 + Ecart,70 + Ecart, Rayon, Couleur)
    Couleur = $FFFF
    ACircle(70, 70 + Ecart, Rayon - 4, Couleur)
    ACircle(70 + Ecart,70 + Ecart, Rayon - 4, Couleur)
    Couleur = 0
    ACircle(70 + (Ecart * 5), 70 + Ecart, Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + Ecart, Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + Ecart, Rayon, Couleur)
    
    Couleur = 0
    ACircle(70 + (Ecart * 11), 70 + Ecart, Rayon, Couleur)
    ACircle(70 + (Ecart * 12), 70 + Ecart, Rayon, Couleur)
    Couleur = $FF00
    ACircle(70 + (Ecart * 11), 70 + Ecart, Rayon - 4, Couleur)
    ACircle(70 + (Ecart * 12), 70 + Ecart, Rayon - 4, Couleur)
    ;ligne 3
    Couleur = 0
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 2), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 2), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 2), Rayon, Couleur)
    ;ligne 4
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 3), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 3), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 3), Rayon, Couleur)
    ;ligne 5
    ACircle(70, 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 2), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 3), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 4), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 4), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 8), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 9), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 10), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 4), Rayon, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 4), Rayon, Couleur)
    ;ligne 6
    ACircle(70, 70 + (Ecart * 5), Rayon, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 2), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 3), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 4), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ;ACircle(70 + (Ecart * 6), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 8), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 9), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 10), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 5), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 5), Rayon, Couleur)
    ;ligne 7
    ACircle(70, 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 2), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 3), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 4), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 6), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 8), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 9), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 10), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 6), Rayon, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 6), Rayon, Couleur)
    ;ligne 8
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 7), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 7), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 7), Rayon, Couleur)
    ;ligne 9
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 8), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 8), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 8), Rayon, Couleur)
    ;ligne 10
    Couleur = 0
    ACircle(70, 70 + (Ecart * 9), Rayon, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 9), Rayon, Couleur)
    Couleur = $FF0000
    ACircle(70, 70 + (Ecart * 9), Rayon - 4, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 9), Rayon - 4, Couleur)
    Couleur = 0
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 9), Rayon, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 9), Rayon - 10, Couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 9), Rayon, Couleur)
    Couleur = 0
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 9), Rayon, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 9), Rayon, Couleur)
    Couleur = $FF
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 9), Rayon - 4, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 9), Rayon - 4, Couleur)
    ;ligne 11
    Couleur = 0
    ACircle(70, 70 + (Ecart * 10), Rayon, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 10), Rayon, Couleur)
    Couleur = $FF0000
    ACircle(70, 70 + (Ecart * 10), Rayon - 4, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 10), Rayon - 4, Couleur)
    couleur = 0
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 10), Rayon, couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 10), Rayon, couleur)
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 10), Rayon, couleur)
    Couleur = 0
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 10), Rayon, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 10), Rayon, Couleur)
    Couleur = $FF
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 10), Rayon - 4, Couleur)
    ACircle(70 + (Ecart * 12), 70 + (Ecart * 10), Rayon - 4, Couleur)
    
    Couleur = $FF00
    ACircle(70 + (Ecart * 6), 70 + Ecart, Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 2), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 3), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 4), Rayon - 14, Couleur)
    
    ;ligne horizontale
    Couleur = $FFFF
    ;ACircle(70, 70 + (Ecart * 5), Rayon, Couleur)
    ACircle(70 + Ecart, 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 2), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 3), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 4), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 5), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ;ACircle(70 + (Ecart * 6), 70 + (Ecart * 5), Rayon - 10, Couleur)
    Couleur = $FF
    ACircle(70 + (Ecart * 7), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 8), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 9), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 10), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ACircle(70 + (Ecart * 11), 70 + (Ecart * 5), Rayon - 14, Couleur)
    ;ACircle(70 + (Ecart * 12), 70 + (Ecart * 5), Rayon, Couleur)
    Couleur = $FF0000
    ;ligne 7
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 6), Rayon - 14, Couleur)
    ;ligne 8
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 7), Rayon - 14, Couleur)
    ;ligne 9
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 8), Rayon - 14, Couleur)
    ;ligne 10
    ACircle(70 + (Ecart * 6), 70 + (Ecart * 9), Rayon - 14, Couleur)
    
    StopDrawing()
    
  EndIf
  
EndProcedure


Ouvrir_Fenetre_principale()


;Boucle événementielle
Repeat
  Event = WindowEvent()
  
  Select Event
    Case #PB_Event_Gadget
      
    Case #PB_Event_CloseWindow
      End
  EndSelect
  
  
  Delay(1)
Until Event = #PB_Event_CloseWindow
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Jeu de petits chevaux

Message par Micoute »

Bonjour GallyHC, c'est beau et c'est dommage que je ne lusse pas eut plus tôt !

J'adore !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Jeu de petits chevaux

Message par GallyHC »

Bonjour,

Désolé mais comme je ne viens plus bcp sur le forum, je rate des trucs c'est sur ;). Part contre le code des cercles avec antialias est sur mon site (http://www.pbfrance.com/?url=source&cmd=viewer&val=61).

GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Jeu de petits chevaux

Message par Micoute »

Merci pour le tuyau, c'est bon à savoir !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre