Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Etoile | |
| | Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Etoile Dim 1 Avr 2018 - 21:00 | |
| Bonjour à tous ! Une p'tite étoile... - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC Star - Etoile ' Marc - April 2018 - Panoramic v0.9.28.i16 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ Init() Star(150) Edges() Colorize(150) END ' ------------------------------------------------------------------------------ SUB Init() WIDTH 0,500 HEIGHT 0,500 LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 DIM x_center%, y_center% x_center% = WIDTH_CLIENT(0)/2 y_center% = HEIGHT_CLIENT(0)/2 PICTURE 1 FULL_SPACE 1 2D_TARGET_IS 1 COLOR 1,50,50,90 DIM p%(10,1) DEGREES END_SUB ' ------------------------------------------------------------------------------ SUB Star(r%) DIM_LOCAL i%,j%,x,y j% = 0 FOR i% = 0 to 360 STEP 36 IF MOD(i%,72) = 0 x = COS(i%) * r% / 2.62 + x_center% y = SIN(i%) * r% / 2.62 + y_center% p%(j%,0) = x p%(j%,1) = y ELSE x = COS(i%) * r% + x_center% y = SIN(i%) * r% + y_center% p%(j%,0) = x p%(j%,1) = y END_IF j% = j% + 1 NEXT i% 2D_PEN_COLOR 200,180,0 2D_POLY_FROM p%(0,0),p%(0,1) FOR j% = 0 to 10 2D_POLY_TO p%(j%,0),p%(j%,1) NEXT j% END_SUB ' ------------------------------------------------------------------------------ SUB Edges() DIM_LOCAL i% FOR i% = 1 to 10 2D_LINE p%(i%,0),p%(i%,1),x_center%,y_center% NEXT i% END_SUB ' ------------------------------------------------------------------------------ SUB Colorize(r%) DIM_LOCAL x,y,i%,j% j%=0 FOR i% = 18 to 378 STEP 36 x=COS(i%) * r% / 2.62 + x_center% y=SIN(i%) * r% / 2.62 + y_center% p%(j%,0) = x p%(j%,1) = y j% = j% + 1 NEXT i% 2D_FLOOD p%(0,0),p%(0,1),255,255,0 2D_FLOOD p%(1,0),p%(1,1),240,180,0 2D_FLOOD p%(2,0),p%(2,1),255,200,0 2D_FLOOD p%(3,0),p%(3,1),255,255,0 2D_FLOOD p%(4,0),p%(4,1),240,180,0 2D_FLOOD p%(5,0),p%(5,1),255,255,0 2D_FLOOD p%(6,0),p%(6,1),255,255,0 2D_FLOOD p%(7,0),p%(7,1),255,200,0 2D_FLOOD p%(8,0),p%(8,1),255,255,0 2D_FLOOD p%(9,0),p%(9,1),240,180,0 END_SUB
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Etoile Dim 1 Avr 2018 - 21:40 | |
| Bravo Marc pour cette Star. Je te propose d’indiquer DEGREES dans la SUB Star(r%) plutôt que dans la SUB Init(). Une SUB doit être autonome. Supposons que quelqu’un veuille récupérer le code du tracé de l’étoile et l’utiliser dans son programme, il n’est pas évident qu’il a initialisé son programme en indiquant qu’il utilise de degrés et non des radians. Tu vois bien ce que je vois. Et pour participer à la fête des étoiles, voici mon code - Code:
-
rem ============================================================================ rem Etoiles rem ============================================================================
Init() Que_Le_Spectacle_Commence() end rem ============================================================================ SUB Init() dim CX,CY : ' centre de l'étoile dim Rayon : ' rayon de l'étoile dim Nbranche : ' nombre de branches de l'étoile dim resX,resY : ' Résolution de l'écran dim nbr : nbr = 500 : ' Nombre d'étoiles dim etoile(nbr,2) : ' Tableau des coordonnées des centres des étoiles dim r,g,b : ' Composantes de la couleur du tracé full_space 0 : picture 10 : full_space 10 2d_target_is 10 : color 10, 255, 255, 196 : ' Jaune pale resX = width_client(10) : resY = height_client(10) alpha 20 : font_color 20,0,0,255 : font_size 20,50 : font_name 20,"arial" top 20,200 : left 20,400 : caption 20,"That's all folks !" : hide 20 END_SUB rem ============================================================================ SUB CalculerEoile(CX, CY, Rayon, Nbranche , r, g, b) dim_local i, prof, CentreX, CentreY, Angle Prof = int(Rayon + rnd(Rayon + 120)) : ' prodondeur des branches de l'étoile aléa entre Rayon et Rayon + 120 for i = 0 to (2 * Nbranche - 1) Angle = i * PI / Nbranche : ' angle au sommet if Odd(i) > 0 : ' parité des sommets CentreX = CX + int(Rayon * (Rayon - Prof) * cos(Angle) / Rayon) : ' introduction du paramètre Prof CentreY = CY + int(Rayon * (Rayon - Prof) * sin(Angle) / Rayon) : ' pour la prodondeur des branches else CentreX = CX + int(cos(Angle) * Rayon) CentreY = CY + int(sin(Angle) * Rayon) end_if etoile(i,1) = CentreX : etoile(i,2) = CentreY : ' stockage de la série de points next i DessinerEtoile(Nbranche) END_SUB rem ============================================================================ SUB DessinerEtoile(Nbranche) dim_local i 2d_pen_color r,g,b : 2d_poly_from etoile(1,1) , etoile(1,2) for i = 0 to 2*Nbranche-1 : 2d_poly_to etoile(i,1) , etoile(i,2) : next i 2d_poly_to etoile(0,1) , etoile(0,2) ' 2d_flood cx,cy, r,g,b END_SUB rem ============================================================================ SUB Que_Le_Spectacle_Commence() dim_local n n = 0 2d_pen_width 2 repeat n = n + 1 Cx = int(rnd(ResX)) : CY = int(rnd(ResY)) : Rayon = int(5+rnd(100)) Nbranche = int(5+rnd(21)) : ' Nombre des branches de l'étoile de 5 à 25 r = int(rnd(256)) : g = int(rnd(256)) : b = int(rnd(256)) : ' Couleur aléatoire CalculerEoile(CX, CY, Rayon, Nbranche , r, g, b) display : pause 200 if mod(n,51) = 0 : ' effacement pour aérer la toile pause 1000 color 10, 255, 255, 196 : ' couleur du fond jaune pale end_if caption 0, str$(n) + "/ " + str$(nbr) + "... <ESC> pour arrêter ..." until (n = nbr) or scancode = 27 show 20 END_SUB rem ============================================================================
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Etoile Dim 1 Avr 2018 - 21:59 | |
| Merci Papydall pour cette pluie d'étoiles ! Un véritable feu d'artifice ! - Citation :
- Une SUB doit être autonome.
Merci du conseil, j’essaierai de mettre en application dans mes futures SUBs. | |
| | | Contenu sponsorisé
| Sujet: Re: Etoile | |
| |
| | | | Etoile | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |