Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Carré mystérieux Dim 2 Avr 2017 - 2:39 | |
| Le carré mystérieux : certes, pas grand intérêt, juste pour le plaisir de programmer. - Code:
-
' ------------------------------------------------------------------------------ ' Carré mystérieux ' Marc37 - Avril 2017 - Panoramic v0.9.27i9 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' ------------------------------------------------------------------------------ BORDER_HIDE 0 WIDTH 0,340 HEIGHT 0,180 DISPLAY LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 DIM a : ' maintien de la boucle WHILE DIM i% : ' variable boucle FOR/NEXT DIM Vitesse% : Vitesse%=10 : ' vitesse déplacement des sprites Forme_1() Forme_2() Forme_3() Forme_4() FORME_5() Cadrillage() Creation_sprites() Action() TERMINATE ' ------------------------------------------------------------------------------ SUB Action() WHILE a=0 FOR i%= 200 to 40 STEP -1 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 1,i%,40 PAUSE vitesse% NEXT i% FOR i%= 40 to 100 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 1,40,i% PAUSE vitesse% NEXT i% FOR i%= 80 to 40 STEP -1 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 4,40,i% PAUSE vitesse% NEXT i% FOR i%= 40 to 140 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 4,i%,40 PAUSE vitesse% NEXT i% FOR i%= 200 to 140 STEP -1 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 2,i%,80 PAUSE vitesse% NEXT i% FOR i%= 80 to 100 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 2,140,i% PAUSE vitesse% NEXT i% PAUSE 500 FOR i%= 100 to 40 STEP -1 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 1,40,i% PAUSE vitesse% NEXT i% FOR i%= 40 to 200 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 1,i%,40 PAUSE vitesse% NEXT i% FOR i%= 140 to 40 STEP -1 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 4,i%,40 PAUSE vitesse% NEXT i% FOR i%= 40 to 80 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 4,40,i% PAUSE vitesse% NEXT i% FOR i%= 100 to 80 STEP -1 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 2,140,i% PAUSE vitesse% NEXT i% FOR i%= 140 to 200 IF SCANCODE <> 0 THEN a=1:EXIT_SUB SPRITE_POSITION 2,i%,80 PAUSE vitesse% NEXT i% PAUSE 500 END_WHILE END_SUB ' ------------------------------------------------------------------------------ SUB forme_1():' Dessin du petit triangle PICTURE 1 WIDTH 1,340 HEIGHT 1, 180 2D_TARGET_IS 1 COLOR 1,0,0,0 2D_PEN_COLOR 20,20,20 2D_POLY_FROM 0,40 2D_POLY_TO 100,40 2D_POLY_TO 100,0 2D_POLY_TO 0,40 2D_FLOOD 80,20,0,250,0:' couleur du petit triangle IMAGE 2 2D_IMAGE_COPY 2,0,0,101,41 2D_CLEAR END_SUB ' ------------------------------------------------------------------------------ SUB forme_2(): ' dessin figure en forme de "r" COLOR 1,0,0,0 2D_PEN_COLOR 20,20,20 2D_POLY_FROM 0,0 2D_POLY_TO 100,0 2D_POLY_TO 100,20 2D_POLY_TO 40,20 2D_POLY_TO 40,40 2D_POLY_TO 0,40 2D_POLY_TO 0,0 2D_FLOOD 10,10,250,250,0:' couleur figure en forme de "r" IMAGE 3 2D_IMAGE_COPY 3,0,0,101,41 2D_CLEAR END_SUB ' ------------------------------------------------------------------------------ SUB forme_3(): ' dessin figure en forme de "j" COLOR 1,0,0,0 2D_PEN_COLOR 20,20,20 2D_POLY_FROM 40,0 2D_POLY_TO 100,0 2D_POLY_TO 100,40 2D_POLY_TO 0,40 2D_POLY_TO 0,20 2D_POLY_TO 40,20 2D_POLY_TO 40,0 2D_FLOOD 80,20,100,100,250:' couleur figure en forme de "j" IMAGE 4 2D_IMAGE_COPY 4,0,0,101,41 2D_CLEAR END_SUB ' ------------------------------------------------------------------------------ SUB forme_4():' Dessin du grand triangle COLOR 1,0,0,0 2D_PEN_COLOR 20,20,20 2D_POLY_FROM 160,0 2D_POLY_TO 160,60 2D_POLY_TO 0,60 2D_POLY_TO 160,0 2D_FLOOD 140,40,250,0,0:' couleur du grand triangle IMAGE 5 2D_IMAGE_COPY 5,0,0,161,61 2D_CLEAR END_SUB ' ------------------------------------------------------------------------------ SUB forme_5():' dessin du carré mystérieux COLOR 1,0,0,0 2D_PEN_COLOR 20,20,20 2D_POLY_FROM 0,0 2D_POLY_TO 20,0 2D_POLY_TO 20,20 2D_POLY_TO 0,20 2D_POLY_TO 0,0 2D_FLOOD 10,10,20,20,20:' couleur du carré mystérieux IMAGE 6 2D_IMAGE_COPY 6,0,0,161,61 2D_CLEAR END_SUB ' ------------------------------------------------------------------------------ SUB Cadrillage() DIM_LOCAL i% COLOR 1,0,0,0 2D_PEN_COLOR 20,20,20 : ' couleur des traits du cadriallage FOR i% = 1 to 16 2D_LINE 20*i%,20,20*i%,160 NEXT i% FOR i% = 1 to 8 2D_LINE 20,20*i%,320,20*i% NEXT i% 2D_FLOOD 10,10,250,250,250 : ' couleur du cadre autour du cadriallage IMAGE 7 2D_IMAGE_COPY 7,0,0,340,180 2D_CLEAR END_SUB ' ------------------------------------------------------------------------------ SUB Creation_sprites() DIM_LOCAL i% SCENE2D 10 COLOR 10,150,150,150 : ' couleur de fond du cadrillage FULL_SPACE 10 FOR i% = 1 to 6 SPRITE i% NEXT i% SPRITE_IMAGE_LOAD 6,6:' carré mystérieux SPRITE_IMAGE_LOAD 1,2:' petit triangle SPRITE_IMAGE_LOAD 3,4:' forme "j" SPRITE_IMAGE_LOAD 4,5:' grand triangle SPRITE_IMAGE_LOAD 2,3:' forme "r" SPRITE_IMAGE_LOAD 5,7:' cadrillage SPRITE_POSITION 1,200,40 SPRITE_POSITION 2,200,80 SPRITE_POSITION 3,200,100 SPRITE_POSITION 4,40,80 SPRITE_POSITION 6,180,120 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: Carré mystérieux Dim 2 Avr 2017 - 13:55 | |
| - Marc37 a écrit:
- Le carré mystérieux : certes, pas grand intérêt, juste pour le plaisir de programmer.
Pour le plaisir de programmer : Ok! Mission accomplie. Bravo ! Pour la réponse à ce puzzle : - Spoiler:
En fait les quatre formes ne s’inscrivent pas dans le grand triangle de base : La surface du grand triangle est de 32,5 unités La somme des quatre formes n’est que de 32 unités. Dans la proposition 1 il y a une demie unité disponible, dans le grand triangle, que l’on ne distingue pas sur le dessin. Dans la proposition 2, les deux petits triangles débordent au delà de l’hypoténuse, dégageant une surface de une unité dans le grand triangle lui même. Preuve visuelle : Lancez le programme et remarquez bien la hauteur du triangle vert : 2 carreaux (2 unités) exactement. Maintenant observez bien l’hypoténuse du triangle rouge : elle passe un petit peu en dessous de la valeur 2. Preuve calculée : Hypothèse : si les formes s’inscrivent dans le grand triangle alors, la distance ED dans le grand triangle est égale au petit coté du triangle rouge ( soit trois unités). Calcul de ED. Selon le théorème des triangles semblables, on peut écrire : CB / AB = ED / AD Soit encore : ED = CB x AD / AB Avec les unités du dessin on a : ED = 5 x 8 / 13 ED = 3,0769 unités Conclusion : La distance ED est donc supérieure à la base du triangle rouge ( 3 unités) . Nous sommes ici en face d’une illusion due à l’imprécision du dessin !!!
| |
|