jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: Puzzles-ABCD Mer 6 Déc 2023 - 16:00 | |
| Vous aimez les passe-temps ? Eh bien, en voici un amusant : Vous devez remplir les figures proposées en déplaçant les pièces colorées disponibles. Comme ci-dessous : Oh, ce n'est pas toujours aussi simple ! Plein de figures sont disponibles et certaines font passer pas mal de temps !!! Bon, mais ne vous arrachez quand même pas les cheveux, Changez de figures, certaines sont plus faciles... Pour le télécharger, Vous pouvez passer par le Webdav jjn4, ou l'obtenir individuellement par ce lien : https://kdrive.infomaniak.com/app/share/845078/9bbd92da-5c46-456e-ae29-844ebbbe20adEt pour les fans de programmation, voici le source (finalement assez court) : - Code:
-
rem ' Puzzles-ABCD par jjn4 - le 02/12/2023 =================================== dim ANC$ : rem Ancien Nom du précédent Choix effectué dim DPX%(12) , DPY%(12) : rem Dimensions des 12 Pièces en X et Y dim EPDX%(12) , EPDY%(12) : rem Emplacement des Pièces au Début en X et Y dim IDS% : rem Indice de Déplacement de la Souris dim NBC$(5) : rem Nom des Boutons de Commande dim NSC% : rem Numéro du Sprite Choisi dim PAS% : rem Paramètre d`Autorisation du Son dim PIX% , PIY% : rem Position de l`image par rapport à la Souris en X et Y dim PSX%(12) , PSY%(12) : rem Position de la pièce en X et Y dim TDPX%(63) , TDPY%(63) : rem Tableau complet des dimensions des Pièces en X et Y dim V1M% , V2M% , V3M% : rem Variables à utilisations Multiples label clic , down , fin , move , up
rem Premiers préparatifs ====================================================== width 0,1365 height 0,720 color 0,50,200,255 caption 0," PUZZLES ABCD - par jjn4 - Ver:PAB-051223.1.3" on_close 0,fin for V1M% = 1 to 12 : read EPDX%(V1M%) : read EPDY%(V1M%) : next V1M% for V1M% = 1 to 63 read V2M% TDPX%(V1M%)=int(V2M%/10)*41+1 TDPY%(V1M%)=mod(V2M%,10)*41+1 next V1M% for V1M% = 1 to 5 : read NBC$(V1M%) : next V1M% dlist 60 : rem Détermination des pièces du pattern choisi create_hide picture 155 : rem Image destinée aux button-picture image 157 : rem idem create_show rem Affichage de la façade ==================================================== combo 200 : rem Choix du pattern left 200,20 top 200,5 width 200,300 font_size 200,24 color 200,50,255,255 font_color 200,0,0,255 if file_exists("Patterns.txt")=1 file_load 200,"Patterns.txt" end_if on_click 200,clic alpha 210 : rem Aide du combo left 210,20 top 210,52 font_size 210,18 font_name 210,"Arial" font_color 210,0,0,255 caption 210,"Choisissez une figure" for V1M% = 1 to 2 : rem Bouton 220 et 230 inactifs V2M%=V1M%+211 : ' N° 212 et 213 panel V2M% left V2M%,410+(V1M%-1)*290 top V2M%,5 width V2M%,270-(V1M%-1)*80 height V2M%,70 font_size V2M%,24 font_name V2M%,"Arial" font_color V2M%,200,160,255 color V2M%,50,255,255 caption V2M%,NBC$(V1M%) next V1M% for V1M% = 1 to 4 : rem Boutons de commande V2M%=V1M%*10+210 : ' N° 220 à 250 à pas de 10 button_picture V2M% button_picture_target_is_object left V2M%,(V1M%-1)*240+380 top V2M%,5 select V1M% case 1 : V3M%=270 : left V2M%,410 case 2 : V3M%=190 : left V2M%,700 case 3 : V3M%=170 : left V2M%,910 case 4 : V3M%=230 end_select width V2M%,V3M% height V2M%,70 button_picture_target_is_picture width V2M%,V3M%-4 height V2M%,66 if file_exists(NBC$(V1M%)+".jpg")=1 file_load 155,NBC$(V1M%)+".jpg" end_if 2d_target_is 155 2d_image_copy 157,0,0,V3M%-5,65 2d_target_is V2M% 2d_image_paste 157,0,0 on_click V2M%,clic next V1M% hide 220 : hide 230 button_picture 260 : rem Bouton du haut-parleur button_picture_target_is_object left 260,340 top 260,5 width 260,50 height 260,70 button_picture_target_is_picture width 260,46 height 260,66 if file_exists("HP-0.jpg")=1 file_load 155,"HP-0.jpg" end_if 2d_target_is 155 2d_image_copy 157,0,0,45,65 2d_target_is 260 2d_image_paste 157,0,0 on_click 260,clic scene2d 500 : rem Grille où afficher le pattern choisi left 500,19 top 500,80 width 500,1310 height 500,579 sprite_target_is 500 on_mouse_down 500,down on_mouse_up 500,up for V1M% = 1 to 12 : rem Support des 12 pièces utilisées ' N° 510 à 521 V2M%=V1M%+509 sprite V2M% next V1M% create_hide for V1M% = 1 to 12 : rem Détection de la transparence des 12 pièces ' N° 530 à 541 V2M%=V1M%+529 picture V2M% next V1M% create_show sprite 600 : rem Affichage bravo !!! if file_exists("Bravo.bmp")=1 sprite_file_load 600,"Bravo.bmp" sprite_position 600,930,100 end_if sprite_hide 600 panel 610 : rem Support de l`affiche de départ left 610,19 top 610,80 width 610,1310 height 610,579 picture 620 : rem Affiche de départ parent 620,610 full_space 620 if file_exists("Début.jpg")=1 file_load 620,"Début.jpg" end_if rem Système d`aide ============================================================ panel 700 : rem Support hide 700 width 700,1349 height 700,681 picture 710 : rem Image d`aide parent 710,700 full_space 710 if file_exists("Aide2.jpg")=1 file_load 710,"Aide2.jpg" end_if button_picture 720 : rem Bouton de sortie button_picture_target_is_object parent 720,700 left 720,1100 top 720,5 width 720,230 height 720,70 button_picture_target_is_picture width 720,226 height 720,66 if file_exists("Sortir.jpg")=1 file_load 155,"Sortir.jpg" end_if 2d_target_is 155 2d_image_copy 157,0,0,225,65 2d_target_is 720 2d_image_paste 157,0,0 on_click 720,clic sound 800 : rem Base des sons du pg width 155,1310 height 155,579 end : ' Début des routines ====================================================
sub bien() : rem Acclamation de la victoire =================================== dim_local v1bi% , v2bi% for v1bi% = 1 to 12 if val(item_read$(60,v1bi%*2+11))=PSX%(v1bi%) if val(item_read$(60,v1bi%*2+12))=PSY%(v1bi%) v2bi%=v2bi%+1 end_if end_if next v1bi% if v2bi%=12 sprite_show 600 if PAS%=0 if file_exists("Bravo.mp3")=1 file_load 800,"Bravo.mp3" play 800 pause 600 end_if if file_exists("Applau.mp3")=1 file_load 800,"Applau.mp3" play 800 pause 5000 end_if end_if end_if end_sub
clic: : rem Gestion des différents on-click =================================== inactive 0 select number_click case 200 : ' Combo listant les différents modèles if file_exists(ANC$)=1 file_delete ANC$ end_if if file_exists(item_index$(200)+".bmp")=0 if file_exists(item_index$(200)+".jpg")=1 file_load 155,item_index$(200)+".jpg" file_save 155,item_index$(200)+".bmp" pause 35 end_if end_if if file_exists(item_index$(200)+".bmp")=1 file_load 500,item_index$(200)+".bmp" clear 60 ANC$=item_index$(200)+".bmp" if file_exists(item_index$(200)+".txt")=1 file_load 60,item_index$(200)+".txt" for V1M% = 1 to 12 V2M%=V1M%+509 PSX%(V1M%)=EPDX%(V1M%) : PSY%(V1M%)=EPDY%(V1M%) DPX%(V1M%)=TDPX%(val(item_read$(60,V1M%))) DPY%(V1M%)=TDPY%(val(item_read$(60,V1M%))) if file_exists("Piece-"+item_read$(60,V1M%)+".bmp")=1 sprite_file_load V2M%,"Piece-"+item_read$(60,V1M%)+".bmp" sprite_position V2M%,PSX%(V1M%),PSY%(V1M%) end_if V2M%=V1M%+529 width V2M%,DPX%(V1M%) height V2M%,DPY%(V1M%) if file_exists("Piece-"+item_read$(60,V1M%)+".bmp")=1 file_load V2M%,"Piece-"+item_read$(60,V1M%)+".bmp" end_if caption 210,"Déplacez les pièces" sprite_hide 600 next V1M% end_if end_if hide 610 case 220 : ' Bouton Recommencer for V1M% = 1 to 12 V2M%=V1M%+509 PSX%(V1M%)=EPDX%(V1M%) : PSY%(V1M%)=EPDY%(V1M%) sprite_position V2M%,PSX%(V1M%),PSY%(V1M%) next V1M% pause 100 case 230 : ' Bouton J'ai fini active 200 hide 220 hide 230 bien() caption 210,"Essayez une autre figure" case 240 : show 700 : ' Bouton d'Aide case 250 : ' Bouton Quitter gosub fin terminate case 260 : ' Bouton d'activation-désactivation su son if PAS%=0 if file_exists("HP-1.jpg")=1 file_load 155,"HP-1.jpg" end_if PAS%=1 else if file_exists("HP-0.jpg")=1 file_load 155,"HP-0.jpg" end_if PAS%=0 end_if 2d_target_is 155 2d_image_copy 157,0,0,45,65 2d_target_is 260 2d_image_paste 157,0,0 pause 100 case 720 : hide 700 : ' Bouton de sortie du panneau d'Aide end_select active 0 return
rem DATAS ===================================================================== data 22,22,22,390,678,22,678,390,945,18,945,157,945,296,945,435 data 1109,18,1109,157,1109,296,1109,435 data 51,15,42,42,42,42,24,24,24,24,42,42,42,42,24,24,24,24,42,42,42,42 data 24,24,24,24,33,23,23,32,32,33,33,33,33,33,33,33,33,33,33,33,33,33 data 33,33,33,33,33,33,33,33,33,33,33,32,32,23,23,32,32,23,23 data "Recommencer" , "J'ai fini" , "Aide" , "Quitter" , "Sortir" rem Fin des datas
down: : rem Mise en marche du sprite à partir du clic souris ================== quel() if NSC%>0 PIX%=mouse_x_position(500) PIY%=mouse_y_position(500) if (PIX%>PSX%(NSC%)) and (PIX%<(PSX%(NSC%)+DPX%(NSC%)-1)) if (PIY%>PSY%(NSC%)) and (PIY%<(PSY%(NSC%)+DPY%(NSC%)-1)) PIX%=PIX%-PSX%(NSC%) PIY%=PIY%-PSY%(NSC%) V3M%=color_pixel_red(NSC%+529,PIX%,PIY%) if V3M%>0 IDS%=1 inactive 200 show 220 show 230 caption 210,item_index$(200) on_mouse_move 500,move end_if end_if end_if end_if return
fin: : rem Gestion de la fermeture du pg par la croix rouge =================== if file_exists(item_index$(200)+".bmp")=1 file_delete item_index$(200)+".bmp" end_if return
move: : rem Mouvement du sprite sur la grille ================================= off_mouse_move 500 V1M%=mouse_x_position(500) V2M%=mouse_y_position(500) if ((V1M%-PIX%)>2) and ((V1M%-PIX%+DPX%(NSC%))<1313) if ((V2M%-PIY%)>2) and ((V2M%-PIY%+DPY%(NSC%))<575) sprite_position NSC%+509,V1M%-PIX%,V2M%-PIY% end_if end_if on_mouse_move 500,move return
sub quel() : rem Détection du sprite cliqué =================================== dim_local v1qu% , qx% , qy% qx%=mouse_x_position(500) qy%=mouse_y_position(500) for v1qu% = 1 to 12 if qx%>PSX%(v1qu%) and qx%<PSX%(v1qu%)+DPX%(v1qu%) if qy%>PSY%(v1qu%) and qy%<PSY%(v1qu%)+DPY%(v1qu%) if color_pixel_red(v1qu%+529,qx%-PSX%(v1qu%),qy%-PSY%(v1qu%))>0 NSC%=v1qu% exit_for end_if end_if end_if next v1qu% end_sub
up: : rem Relâchement de la souris sur la grille ============================== if IDS%=1 off_mouse_move 500 PSX%(NSC%)=mouse_x_position(500) PSX%(NSC%)=PSX%(NSC%)-PIX% PSY%(NSC%)=mouse_y_position(500) PSY%(NSC%)=PSY%(NSC%)-PIY% IDS%=0 V1M%=PSX%(NSC%) V2M%=PSY%(NSC%) PSX%(NSC%)=int(PSX%(NSC%)/41)*41+2 PSY%(NSC%)=int(PSY%(NSC%)/41)*41+2 if V1M%>(PSX%(NSC%)+41/2) PSX%(NSC%)=PSX%(NSC%)+41 end_if if V2M%>(PSY%(NSC%)+41/2) PSY%(NSC%)=PSY%(NSC%)+41 end_if if PSX%(NSC%)<2 PSX%(NSC%)=2 end_if if (PSX%(NSC%)+DPX%(NSC%))>1314 PSX%(NSC%)=1315-DPX%(NSC%) end_if if PSY%(NSC%)<2 PSY%(NSC%)=2 end_if if (PSY%(NSC%)+DPY%(NSC%))>576 PSY%(NSC%)=577-DPY%(NSC%) end_if sprite_position NSC%+509,PSX%(NSC%),PSY%(NSC%) end_if return (Mais bien sûr, vous ne pourrez pas l'utiliser sans les fichiers annexes) Amusez-vous bien (pour ces prochaines fêtes...) !
Dernière édition par jjn4 le Ven 19 Jan 2024 - 17:32, édité 13 fois | |
|