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 |
|
|
| ROTOR : le jeu qui vous donne du fil à RETORDRE !!! | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Lun 25 Mai 2020 - 2:10 | |
| Voici le jeu qui va vous donner du fil à retordre. Vous jouez à vos risques et périls. Je ne serais en aucun cas responsable si vous finirez par arracher le dernier de vos cheveux !!! - Code:
-
rem ============================================================================ rem ROTOR : le jeu qui vous donne du fil à RETORDRE rem Papydall le 25 / 05 / 2020 rem ============================================================================ rem J’ai essayé de coder à ma façon un jeu que j’ai trouvé sur : rem http://ressources.univ-lemans.fr/AccesLibre/UM/Pedago/physique/02/recre/rotor.html rem ============================================================================ dim bouton,coup,rotation,i,j,n,m,nm,w,t$ label nouveau,melanger,tourner,retablir,quitter label bouton20,bouton30,bouton40,bouton50 width 0,1200 : height 0,700 : color 0,0,150,150
Rotor()
end rem ============================================================================ SUB Rotor() Damier() Info() GUI() END_SUB rem ============================================================================ SUB Damier() w = 200 picture 99 : top 99,20 : left 99,20 width 99,600 : height 99,600 : color 99,200,180,50 for i = 1 to 3 for j = 1 to 3 n = j + (i-1)*3 memo n : top n,40+(i-1)* w : left n,40+(j-1)*w width n,w/2 : height n,w/2 font_name n,"arial blak" : font_size n,30 : item_add n,str$(n) color n, 0,0,255 : font_color n,255,255,0 next j next i button 20 : top 20,60+w/2 : left 20,60+w/2 : width 20,60 : height 20,60 button 30 : top 30,60+w/2 : left 30, 60+w+w/2 : width 30,60 : height 30,60 button 40 : top 40,60+w+w/2 : left 40,60+w/2 : width 40,60 : height 40,60 button 50 : top 50,60+w+w/2 : left 50,60+w+w/2 : width 50,60 : height 50,60 for i = 20 to 50 step 10 font_name i,"wingdings 3" : font_size i,12 : caption i, chr$(81) font_bold i : on_click i,tourner next i on_mouse_move 20,bouton20 : on_mouse_move 30,bouton30 on_mouse_move 40,bouton40 : on_mouse_move 50,bouton50 on_mouse_move 99,retablir END_SUB rem ============================================================================ SUB Info() t$ = "Un damier 3 x 3 contient 9 pions numérotés de 1 à 9." +chr$(13) t$ = t$ + "Quatre boutons provoquent quand ils sont pressés" + chr$(13) t$ = t$ + "une permutation circulaire des quatres pions les plus" + chr$(13) t$ = t$ + "proches du bouton pressé." + chr$(13) t$ = t$ + "Lorsque le curseur de la souris se positionne sur l'un"+chr$(13) t$ = t$ + "des 4 boutons de rotation, les pions concernés changent"+chr$(13) t$ = t$ + "de couleur pour votre confort."+chr$(13) t$ = t$ + "Quatre pressions successives redonnent la situation de"+chr$(13) t$ = t$ + "départ." + chr$(13)+chr$(13) t$ = t$ + "Le jeu :" + chr$(13) + chr$(13) t$ = t$ + "Presser le bouton [ Mélanger ]."+chr$(13) t$ = t$ + "Le programme effectue alors un nombre aléatoire de"+chr$(13) t$ = t$ + "rotations avec un choix également aléatoire des"+chr$(13) t$ = t$ + "boutons utilisés." + chr$(13)+chr$(13) t$ = t$ + "Le but du jeu consiste à ramener tous les pions dans"+chr$(13) t$ = t$ + "la configuration initiale." + chr$(13)+chr$(13) t$ = t$ + "Ça ne vous rappelle pas un autre jeu comme le taquin ?" + chr$(13) +chr$(13) t$ = t$ + "BONNE CHANCE !!!" END_SUB rem ============================================================================ SUB GUI() alpha 100 : top 100,20 : left 100,650 : font_name 100,"arial black" : font_size 100,12 font_color 100,255,255,0 : caption 100,t$ t$ = "Le jeu du ROTOR qui vous donne du fil à RETORDRE !!!" caption 0,t$ : application_title t$ button 110 : top 110,600 : left 110,650 : font_bold 110 : caption 110,"&Nouveau" width 110,100 : font_size 110,12 : on_click 110,nouveau button 120 : top 120,600 : left 120,800 : font_bold 120 : caption 120,"&Mélanger" width 120,100 : font_size 120,12 : on_click 120,melanger button 130 : top 130,600 : left 130,950 : font_bold 130 : caption 130,"&Quitter" width 130,100 : font_size 130,12 : on_click 130,quitter alpha 140 : top 140,620 : left 140,50 : font_bold 140 : font_size 140,12 caption 140,"Nombre de coups : 0" END_SUB rem ============================================================================ Retablir: for i = 1 to 9 : color i,0,0,255 : next i return rem ============================================================================ Bouton20: bouton = 20 : Montrer(20) return rem ============================================================================ Bouton30: bouton = 30 : Montrer(30) return rem ============================================================================ Bouton40: bouton = 40 : Montrer(40) return rem ============================================================================ Bouton50: bouton = 50 : Montrer(50) return rem ============================================================================ SUB Montrer(bouton) for i = 1 to 9 : color i,0,0,255 : next i select bouton case 20 : color 1,0,128,0 : color 2,0,128,0 : color 4,0,128,0 : color 5,0,128,0 case 30 : color 2,0,128,0 : color 3,0,128,0 : color 5,0,128,0 : color 6,0,128,0 case 40 : color 4,0,128,0 : color 5,0,128,0 : color 7,0,128,0 : color 8,0,128,0 case 50 : color 5,0,128,0 : color 6,0,128,0 : color 8,0,128,0 : color 9,0,128,0 end_select END_SUB rem ============================================================================ Tourner: Tourne(number_click) : Verifier() return rem ============================================================================ SUB Tourne(n) dim_local tmp$ coup = coup + 1 select n case 20 : tmp$ = item_read$(5,1) clear 5 : item_add 5,item_read$(4,1) clear 4 : item_add 4,item_read$(1,1) clear 1 : item_add 1,item_read$(2,1) clear 2 : item_add 2,tmp$ case 30 : tmp$ = item_read$(6,1) clear 6 : item_add 6,item_read$(5,1) clear 5 : item_add 5,item_read$(2,1) clear 2 : item_add 2,item_read$(3,1) clear 3 : item_add 3,tmp$ case 40 : tmp$ = item_read$(8,1) clear 8 : item_add 8,item_read$(7,1) clear 7 : item_add 7,item_read$(4,1) clear 4 : item_add 4,item_read$(5,1) clear 5 : item_add 5,tmp$ case 50 : tmp$ = item_read$(9,1) clear 9 : item_add 9,item_read$(8,1) clear 8 : item_add 8,item_read$(5,1) clear 5 : item_add 5,item_read$(6,1) clear 6 : item_add 6,tmp$ end_select caption 140,"Nombre de coups : " + str$(coup) END_SUB rem ============================================================================ Nouveau: coup = 0 caption 140,"Nombre de coups : 0" for n = 1 to 9 clear n : item_add n,str$(n) next n return rem ============================================================================ Melanger: gosub Nouveau rotation = 0 nm = 5 + int(rnd(20)) if mod(nm,4) = 0 then nm = nm+1 for i = 1 to nm m = 10*int(2 + rnd(4)) tourne(m) : pause 100 next i caption 140,"Nombre de rotations : " + str$(nm) coup = 0 return rem ============================================================================ SUB Verifier() for i = 1 to 9 if item_read$(i,1) <> str$(i) then exit_for next i if i = 10 message "!!! BRAVO !!! Tu as réussi en " + str$(coup) + " coups !!! Tu es un grand champion !!!" coup = 0 : caption 140,"Nombre de coups : 0" for i = 1 to 9 : color i, 0,0,255 : next i end_if END_SUB rem ============================================================================ Quitter: terminate return rem ============================================================================
- Spoiler:
Dernière édition par papydall le Lun 25 Mai 2020 - 22:47, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 25 Mai 2020 - 9:42 | |
| Bon ca y est, plus un cheveu sur le caillou ! Sympa ce jeu Papydall, bravo ! Une petite note sur les sous programmes "Bouton..." : tu pourrais placer un "off_mouse_move XX" et relancer par un sous programme sur la base du plateau cela éviterait les clignotements de couleurs quand on bouge la souris sur un bouton de rotation. Bonne continuation à tous ! | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Lun 25 Mai 2020 - 14:48 | |
| Commentaire en image : Vraiment pas facile ! Bravo et merci Papydall ! - JL35 a écrit:
- tu pourrais placer un "off_mouse_move XX"
Oui tu as tout à fait raison ! A ce sujet, pardonne-moi Papydall pour mon erreur. J'ai publié un erratum > ICI < | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Lun 25 Mai 2020 - 15:38 | |
| Salut tout le monde.
@Yannick Je ne vois pas trop comment éviter les clignotements de couleurs quand on bouge la souris sur un bouton de rotation. D’ailleurs, c’est voulu pour montrer quels sont les pions concernés par la rotation. Bon, si tu as une autre façon de voir, je prendrais. Désolé pour tes cheveux pour le moment, mais j’ajouterai dans le code peut-être un truc qui fera repousser les cheveux !
@Marc Merci d’avoir tenté ta chance. J’ajouterai dans le code un petit indice pour faciliter la recherche de la solution. D’ici-là, je laisse les vieux se débarrasser de quelques touffes de cheveux qui n’ont plus raison d’exister et les jeunes pour voir leur chevelure blanchir à vue d’œil !
Quant au martien qui est naturellement chauve, il n’a rien à perdre s’il se frotte au rotor.
Tard dans la nuit, je posterai(s) une autre version. Attention : le S entre parenthèses indique une action qui pourrait arriver ou non.
Bonne torsion du rotor! | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Lun 25 Mai 2020 - 16:43 | |
| Je réussi à chaque fois en 4 coups! Pour ça, il suffit de cliquer 4 fois sur un bouton de rotation avant de commencer une partie Sinon pour éliminer le clignotement, il suffit de mettre en REM la ligne 108 dans le sub montrer(). C'est redondant puisque 'retablir:' est appelé dès que la souris bouge sur l'objet 99. Yannick à raison pour les off_mouse_move XX, sans ça, sur un vieux pc sa risque de planter | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 25 Mai 2020 - 18:02 | |
| Cher Papydall, pour éviter le petit scintillement : ajouter après la ligne 115 : off_mouse_move boutonajouter après la ligne 87: on_mouse_move 20,bouton20 : on_mouse_move 30,bouton30 on_mouse_move 40,bouton40 : on_mouse_move 50,bouton50Mes amitiés... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Lun 25 Mai 2020 - 22:58 | |
| - silverman a écrit:
- Je réussi à chaque fois en 4 coups!
Pour ça, il suffit de cliquer 4 fois sur un bouton de rotation avant de commencer une partie Je pense que tu n’as pas compris comment jouer. AVANT de commencer un nouveau jeu, il faut cliquer sur Mélanger, sinon , comme c’est déjà ordonné dès le départ, cliquer 4 fois sur le même bouton c’est comme si on n’a rien fait. D’ailleurs, il est mentionné que « quatre pressions successives redonnent la situation de départ. » Le rôle du bouton Nouveau c'est pour ordonner les pions pour un nouveau jeu déclanché par Mélanger si on n'a pas su résoudre le jeu. @Yannick Merci pour l’aide, je prends note. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Mar 26 Mai 2020 - 4:08 | |
| - Citation :
- Je pense que tu n’as pas compris comment jouer.
Bien sur que si, c'était une façon humoristique de montrer une anomalie; Selon moi les boutons de rotation devraient etre inactifs tant que la grille n'est pas mélangé... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 26 Mai 2020 - 10:07 | |
| @ Papydall, Tu tiens un bon jeu là, bien chiant comme il faut Avec un peu d'imagerie et quelques mises au point cela pourrait être génial. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Mar 26 Mai 2020 - 12:46 | |
| Voici les modifications que j’ai apportées au code en tenant compte des avis de silverman et de Yannick. Merci à vous deux. Tout un chacun peut améliorer le jeu ou proposer une idée ou modifier le code ou en faire ce qui lui plait. Comme d’habitude le code est bien sûr libre. - Yannick a écrit:
- @ Papydall,
Tu tiens un bon jeu là, bien chiant comme il faut Laughing Avec un peu d'imagerie et quelques mises au point cela pourrait être génial. C'est une bonne occasion de te remettre au codage; vas-y ! Apportes ton grain de sel ! - Code:
-
rem ============================================================================ rem ROTOR : le jeu qui vous donne du fil à RETORDRE rem Papydall le 25 / 05 / 2020 rem Dernière modification : le 27 / 05 / 2020 rem ============================================================================ rem J’ai essayé de coder à ma façon un jeu que j’ai trouvé sur : rem http://ressources.univ-lemans.fr/AccesLibre/UM/Pedago/physique/02/recre/rotor.html rem ============================================================================ dim bouton,coup,rotation,shuffle,i,j,n,m,nm,w,t$,r$
label nouveau,melanger,tourner,retablir,quitter label bouton20,bouton30,bouton40,bouton50,aide width 0,1200 : height 0,700 : color 0,0,150,150
Rotor()
end rem ============================================================================ SUB Rotor() Damier() Info() GUI() END_SUB rem ============================================================================ SUB Damier() w = 200 picture 99 : top 99,20 : left 99,20 width 99,600 : height 99,600 : color 99,200,180,50 for i = 1 to 3 for j = 1 to 3 n = j + (i-1)*3 memo n top n,40+(i-1)* w : left n,40+(j-1)*w width n,w/2 : height n,w/2 font_name n,"arial blak" : font_size n,30 : item_add n,str$(n) color n, 0,0,255 : font_color n,255,255,0 next j next i button 20 : top 20,60+w/2 : left 20,60+w/2 : width 20,60 : height 20,60 : hint 20,"Bouton 20" : inactive 20 button 30 : top 30,60+w/2 : left 30, 60+w+w/2 : width 30,60 : height 30,60 : hint 30,"Bouton 30" : inactive 30 button 40 : top 40,60+w+w/2 : left 40,60+w/2 : width 40,60 : height 40,60 : hint 40,"Bouton 40" : inactive 40 button 50 : top 50,60+w+w/2 : left 50,60+w+w/2 : width 50,60 : height 50,60 : hint 50,"Bouton 50" : inactive 50 for i = 20 to 50 step 10 font_name i,"wingdings 3" : font_size i,12 : caption i, chr$(81) font_bold i : on_click i,tourner next i on_mouse_move 20,bouton20 : on_mouse_move 30,bouton30 on_mouse_move 40,bouton40 : on_mouse_move 50,bouton50 on_mouse_move 99,retablir END_SUB rem ============================================================================ SUB Info() t$ = "Un damier 3 x 3 contient 9 pions numérotés de 1 à 9." + chr$(13) t$ = t$ + "Quatre boutons provoquent quand ils sont pressés" + chr$(13) t$ = t$ + "une permutation circulaire des quatres pions les plus" + chr$(13) t$ = t$ + "proches du bouton pressé." + chr$(13) t$ = t$ + "Lorsque le curseur de la souris se positionne sur l'un" + chr$(13) t$ = t$ + "des 4 boutons de rotation, les pions concernés changent" + chr$(13) t$ = t$ + "de couleur pour votre confort." + chr$(13) t$ = t$ + "Quatres pressions successives redonnent la situation de" + chr$(13) t$ = t$ + "départ." + chr$(13) + chr$(13) t$ = t$ + "Le jeu :" + chr$(13) + chr$(13) t$ = t$ + "Presser le bouton [ Mélanger ]." + chr$(13) t$ = t$ + "Le programme effectue alors un nombre aléatoire de" + chr$(13) t$ = t$ + "rotations avec un choix également aléatoire des" + chr$(13) t$ = t$ + "boutons utilisés." + chr$(13) + chr$(13) t$ = t$ + "Le but du jeu consiste à ramener tous les pions dans" + chr$(13) t$ = t$ + "la configuration initiale." + chr$(13)+ chr$(13) t$ = t$ + "Ça ne vous rappelle pas un autre jeu comme le taquin ?" + chr$(13) + chr$(13) t$ = t$ + "BONNE CHANCE !!!" END_SUB rem ============================================================================ SUB GUI() alpha 100 : top 100,20 : left 100,650 : font_name 100,"arial black" : font_size 100,12 font_color 100,255,255,0 : caption 100,t$ t$ = "Le jeu du ROTOR qui vous donne du fil à RETORDRE !!!" caption 0,t$ : application_title t$ button 110 : top 110,580 : left 110,650 : font_bold 110 : caption 110,"&Nouveau" width 110,100 : font_size 110,12 : on_click 110,nouveau : inactive 110 button 120 : top 120,580 : left 120,800 : font_bold 120 : caption 120,"&Mélanger" width 120,100 : font_size 120,12 : on_click 120,melanger button 130 : top 130,580 : left 130,1050 : font_bold 130: caption 130,"&Quitter" width 130,100 : font_size 130,12 : on_click 130,quitter button 135 : top 135,580 : left 135,930 : font_bold 135 : caption 135,"&Aide" font_size 135,12 : on_click 135,aide : inactive 135 alpha 140 : top 140,630 : left 140,50 : font_bold 140 : font_size 140,12 caption 140,"Nombre de coups : 0" alpha 150 : top 150,630 : left 150,400 : font_bold 150 : font_size 150,12 font_color 150,255,255,0 END_SUB rem ============================================================================ Retablir: for i = 1 to 9 : color i,0,0,255 : next i on_mouse_move 20,bouton20 : on_mouse_move 30,bouton30 on_mouse_move 40,bouton40 : on_mouse_move 50,bouton50
return rem ============================================================================ Bouton20: bouton = 20 : Montrer(20) return rem ============================================================================ Bouton30: bouton = 30 : Montrer(30) return rem ============================================================================ Bouton40: bouton = 40 : Montrer(40) return rem ============================================================================ Bouton50: bouton = 50 : Montrer(50) return rem ============================================================================ Aide: inactive 135 t$ = "Heu !!! Ça s'appelle de la triche là !!!" + chr$(13) t$ = t$ + "Fais travailler tes méninges."+chr$(13) t$ = t$ + "Voyons ! Un petit effort, ça ne peut que te faire du bien!"+chr$(13) t$ = t$ + "Surtout, ne dis pas que Papydall se fait un malin plaisir de te voir"+chr$(13) t$ = t$ + "gratter le crâne ou arracher le dernier des tes cheveux s'il y en reste!"+chr$(13)+chr$(13) t$ = t$ + "L'aide ou plutôt la triche sera codée dans la prochaine modification."+chr$(13) t$ = t$ + "D'ici-là, tu peux décortiquer le code afin de découvrir comment tu peux"+chr$(13) t$ = t$ + "gagner à TOUS les coups. Mais, ça ne sera plus drôle!" message t$ return rem ============================================================================ SUB Montrer(bouton) for i = 1 to 9 : color i,0,0,255 : next i select bouton case 20 : color 1,0,128,0 : color 2,0,128,0 : color 4,0,128,0 : color 5,0,128,0 case 30 : color 2,0,128,0 : color 3,0,128,0 : color 5,0,128,0 : color 6,0,128,0 case 40 : color 4,0,128,0 : color 5,0,128,0 : color 7,0,128,0 : color 8,0,128,0 case 50 : color 5,0,128,0 : color 6,0,128,0 : color 8,0,128,0 : color 9,0,128,0 end_select off_mouse_move bouton END_SUB rem ============================================================================ Tourner: inactive 120 : inactive 135 Tourne(number_click) : Verifier() return rem ============================================================================ SUB Tourne(n) dim_local tmp$ coup = coup + 1 select n case 20 : tmp$ = item_read$(5,1) clear 5 : item_add 5,item_read$(4,1) clear 4 : item_add 4,item_read$(1,1) clear 1 : item_add 1,item_read$(2,1) clear 2 : item_add 2,tmp$ case 30 : tmp$ = item_read$(6,1) clear 6 : item_add 6,item_read$(5,1) clear 5 : item_add 5,item_read$(2,1) clear 2 : item_add 2,item_read$(3,1) clear 3 : item_add 3,tmp$ case 40 : tmp$ = item_read$(8,1) clear 8 : item_add 8,item_read$(7,1) clear 7 : item_add 7,item_read$(4,1) clear 4 : item_add 4,item_read$(5,1) clear 5 : item_add 5,tmp$ case 50 : tmp$ = item_read$(9,1) clear 9 : item_add 9,item_read$(8,1) clear 8 : item_add 8,item_read$(5,1) clear 5 : item_add 5,item_read$(6,1) clear 6 : item_add 6,tmp$ end_select if shuffle = 0 caption 140,"Nombre de coups : " + str$(coup) else caption 140,"Nombre de rotations : " +str$(coup) end_if END_SUB rem ============================================================================ Nouveau: coup = 0 inactive 20 : inactive 30: inactive 40 : inactive 50 : inactive 135 active 120 caption 150,"" : caption 140,"" for n = 1 to 9 clear n : item_add n,str$(n) next n inactive 110 return rem ============================================================================ Melanger: gosub Nouveau r$ = "" shuffle = 1 nm = 5 + int(rnd(16)) for i = 1 to nm m = 10*int(2 + rnd(4)) r$ = r$ + str$(m) + " / " tourne(m) : pause 100 next i coup = 0 caption 140,"Nombre de rotations : " + str$(nm) active 135 : active 110 : active 20 : active 30: active 40 : active 50 shuffle = 0 return rem ============================================================================ SUB Verifier() for i = 1 to 9 if item_read$(i,1) <> str$(i) then exit_for next i if i = 10 message "!!! BRAVO !!! Tu as réussi en " + str$(coup) + " coups !!! Tu es un grand champion !!!" coup = 0 : caption 140,"Nombre de coups : 0" : caption 150,"" for i = 1 to 9 : color i, 0,0,255 : next i inactive 110 : active 120 end_if END_SUB rem ============================================================================ Quitter: terminate return rem ============================================================================
code édité une fois
Dernière édition par papydall le Mer 27 Mai 2020 - 20:20, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Mar 26 Mai 2020 - 14:42 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 26 Mai 2020 - 20:29 | |
| @ Papydall, Y a un blème avec tes modifs. Le compteur de rotation est incrémenté par le bouton "Mélanger" comme si l'on avait entamé la partie. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Mer 27 Mai 2020 - 20:22 | |
| Merci yannick. C'est édité ci-dessus @Jean claude. Oui ce n'est plus du gâteau ! REM : j'ai des sérieux problèmes avec mon ordi. Alors, si je n'arrive plus à m'en servir, | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Jeu 28 Mai 2020 - 13:28 | |
| Grrrrrrrffffffllllllllsssssssssss ! Épouvantable, ce jeu ! Ah, ce papydall ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Jeu 28 Mai 2020 - 15:31 | |
| C’est surprenant de voir qu’aucun n’a trouvé comment on peut gagner à tous les coups ! Je vous donne un indice : Dans le code, j’ai déclaré un ALPHA 150 en ligne 89. J’ai simplement affecté à cet alpha un caption vide en deux endroits du code et j’ai omis (volontairement) d’insérer là où il faut le caption qui donne l’indice à travers lequel on peut aboutir à la solution. Sans cela, il est presque impossible de résoudre ce jeu DIABOLIQUE comme l’a qualifié Jean Claude. Je vous laisse décortiquer le jeu : ça sera un autre jeu dans le jeu. Le premier qui trouvera la combine (ou la triche si vous préférez) aura droit à … - Une poignée de:
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Jeu 28 Mai 2020 - 18:07 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! Ven 29 Mai 2020 - 23:17 | |
| Voici ma dernière modif avec possibilité de gagner à tous les coups. C’est bon pour le moral quant à la morale, c’est autre chose ! - Code:
-
rem ============================================================================ rem ROTOR : le jeu qui vous donne du fil à RETORDRE rem Papydall le 25 / 05 / 2020 rem Dernière modification : le 30 / 05 / 2020 rem ============================================================================ rem J’ai essayé de coder à ma façon un jeu que j’ai trouvé sur : rem http://ressources.univ-lemans.fr/AccesLibre/UM/Pedago/physique/02/recre/rotor.html rem ============================================================================ dim bouton,coup,rotation,shuffle,i,j,n,m,nm,w,t$,r$ label nouveau,melanger,tourner,retablir,quitter label bouton20,bouton30,bouton40,bouton50,aide
width 0,1200 : height 0,700 : color 0,0,150,150 top 0,(screen_y - height_client(0))/2 left 0,(screen_x - width_client(0))/2
Rotor()
end rem ============================================================================ SUB Rotor() Damier() Info() GUI() END_SUB rem ============================================================================ SUB Damier() w = 200 picture 99 : top 99,20 : left 99,20 width 99,600 : height 99,600 : color 99,200,180,50 for i = 1 to 3 for j = 1 to 3 n = j + (i-1)*3 memo n top n,40+(i-1)* w : left n,40+(j-1)*w width n,w/2 : height n,w/2 font_name n,"arial blak" : font_size n,30 : item_add n,str$(n) color n, 0,0,255 : font_color n,255,255,0 next j next i button 20 : top 20,60+w/2 : left 20,60+w/2 : width 20,60 : height 20,60 : hint 20,"Bouton 20" : inactive 20 button 30 : top 30,60+w/2 : left 30, 60+w+w/2 : width 30,60 : height 30,60 : hint 30,"Bouton 30" : inactive 30 button 40 : top 40,60+w+w/2 : left 40,60+w/2 : width 40,60 : height 40,60 : hint 40,"Bouton 40" : inactive 40 button 50 : top 50,60+w+w/2 : left 50,60+w+w/2 : width 50,60 : height 50,60 : hint 50,"Bouton 50" : inactive 50 for i = 20 to 50 step 10 font_name i,"wingdings 3" : font_size i,12 : caption i, chr$(81) font_bold i : on_click i,tourner next i on_mouse_move 20,bouton20 : on_mouse_move 30,bouton30 on_mouse_move 40,bouton40 : on_mouse_move 50,bouton50 on_mouse_move 99,retablir END_SUB rem ============================================================================ SUB Info() t$ = "Un damier 3 x 3 contient 9 pions numérotés de 1 à 9." + chr$(13) t$ = t$ + "Quatre boutons provoquent quand ils sont pressés" + chr$(13) t$ = t$ + "une permutation circulaire des quatres pions les plus" + chr$(13) t$ = t$ + "proches du bouton pressé." + chr$(13) t$ = t$ + "Lorsque le curseur de la souris se positionne sur l'un" + chr$(13) t$ = t$ + "des 4 boutons de rotation, les pions concernés changent" + chr$(13) t$ = t$ + "de couleur pour votre confort." + chr$(13) t$ = t$ + "Quatres pressions successives redonnent la situation de" + chr$(13) t$ = t$ + "départ." + chr$(13) + chr$(13) t$ = t$ + "Le jeu :" + chr$(13) + chr$(13) t$ = t$ + "Presser le bouton [ Mélanger ]." + chr$(13) t$ = t$ + "Le programme effectue alors un nombre aléatoire de" + chr$(13) t$ = t$ + "rotations avec un choix également aléatoire des" + chr$(13) t$ = t$ + "boutons utilisés." + chr$(13) + chr$(13) t$ = t$ + "Le but du jeu consiste à ramener tous les pions dans" + chr$(13) t$ = t$ + "la configuration initiale." + chr$(13)+ chr$(13) t$ = t$ + "Ça ne vous rappelle pas un autre jeu comme le taquin ?" + chr$(13) + chr$(13) t$ = t$ + "BONNE CHANCE !!!" END_SUB rem ============================================================================ SUB GUI() alpha 100 : top 100,20 : left 100,650 : font_name 100,"arial black" : font_size 100,12 font_color 100,255,255,0 : caption 100,t$ t$ = "Le jeu du ROTOR qui vous donne du fil à RETORDRE !!!" caption 0,t$ : application_title t$ button 110 : top 110,580 : left 110,650 : font_bold 110 : caption 110,"&Nouveau" width 110,100 : font_size 110,12 : on_click 110,nouveau : inactive 110 button 120 : top 120,580 : left 120,800 : font_bold 120 : caption 120,"&Mélanger" width 120,100 : font_size 120,12 : on_click 120,melanger button 130 : top 130,580 : left 130,1050 : font_bold 130: caption 130,"&Quitter" width 130,100 : font_size 130,12 : on_click 130,quitter button 135 : top 135,580 : left 135,930 : font_bold 135 : caption 135,"&Aide" font_size 135,12 : on_click 135,aide : inactive 135 alpha 140 : top 140,630 : left 140,50 : font_bold 140 : font_size 140,12 caption 140,"Nombre de coups : 0" alpha 150 : top 150,630 : left 150,400 : font_bold 150 : font_size 150,12 font_color 150,255,255,0 END_SUB rem ============================================================================ Retablir: for i = 1 to 9 : color i,0,0,255 : next i on_mouse_move 20,bouton20 : on_mouse_move 30,bouton30 on_mouse_move 40,bouton40 : on_mouse_move 50,bouton50 return rem ============================================================================ Bouton20: bouton = 20 : Montrer(20) return rem ============================================================================ Bouton30: bouton = 30 : Montrer(30) return rem ============================================================================ Bouton40: bouton = 40 : Montrer(40) return rem ============================================================================ Bouton50: bouton = 50 : Montrer(50) return rem ============================================================================ Aide: inactive 135 caption 150,r$ : ' c'est de la triche !!! t$ = " !!! C ' E S T D E L A T R I C H E !!!"+chr$(13) + chr$(13) t$ = t$ + "Vous voyez en bas de l'écran affichés le nombre de rotations ainsi que les numéros"+chr$(13) t$ = t$ + "des boutons qui ont été actionnés pour chaque rotation." + chr$(13) t$ = t$ + "Pour trouver la solution, il suffit de ramener les pions à leurs positions initiales."+chr$(13) t$ = t$ + "Pour cela, on doit procéder de cette façon :"+chr$(13) t$ = t$ + "On commence par le dernier bouton qu'on actionne jusqu'à 4 fois en tenant compte"+chr$(13) t$ = t$ + "qu'il a été actionné une fois ou plus."+chr$(13) t$ = t$ + "Rappellez-vous : Quatres pressions successives redonnent la situation de départ." + chr$(13) t$ = t$ + "Exemple : Supposons que le programme vous indique :"+chr$(13) t$ = t$ + "Nombre de rotations : 8 30 / 20 /30 / 40 / 30 / 20 / 20 / 50 /"+chr$(13) t$ = t$ + "On commence par actionner le dernier boutons (50 dans notre exemple) TROIS fois"+chr$(13) t$ = t$ + "puisqu'il a été actionné une fois, puis on s'intéresse au bouton précédent qui est"+chr$(13) t$ = t$ + "le bouton 20, mais on remarque que ce même bouton 20 figure deux fois de suite."+chr$(13) t$ = t$ + "Cela signifie qu'il a été actionné deux fois, donc il suffit de le réactionner encore deux fois."+chr$(13) t$ = t$ + "Puis on récule d'un cran et on s'intérêsse au bouton 30 qu'il faut actionner trois fois."+chr$(13) t$ = t$ + "Ensuite les boutons 40, 30, 20 et enfin le bouton 30 : tous ces boutons doivent être"+chr$(13) t$ = t$ + "actionnés trois fois chacun."+chr$(13) t$ = t$ + "En procédant de la sorte, tous les boutons sont actionnés 4 fois chacun (ou un multiple de 4)"+chr$(13) t$ = t$ + "et redonnent la situation de départ." +chr$(13)+chr$(13) t$ = t$ + "Les 4 boutons de rotations sont : "+chr$(13) t$ = t$ + " *** 20 : le bouton haut gauche"+chr$(13) t$ = t$ + " *** 30 : le bouton haut droite"+chr$(13) t$ = t$ + " *** 40 : le bouton bas gauche"+chr$(13) t$ = t$ + " *** 50 : le bouton bas droite" message t$ return rem ============================================================================ SUB Montrer(bouton) for i = 1 to 9 : color i,0,0,255 : next i select bouton case 20 : color 1,0,128,0 : color 2,0,128,0 : color 4,0,128,0 : color 5,0,128,0 case 30 : color 2,0,128,0 : color 3,0,128,0 : color 5,0,128,0 : color 6,0,128,0 case 40 : color 4,0,128,0 : color 5,0,128,0 : color 7,0,128,0 : color 8,0,128,0 case 50 : color 5,0,128,0 : color 6,0,128,0 : color 8,0,128,0 : color 9,0,128,0 end_select off_mouse_move bouton END_SUB rem ============================================================================ Tourner: inactive 120 : inactive 135 Tourne(number_click) : Verifier() return rem ============================================================================ SUB Tourne(n) dim_local tmp$ coup = coup + 1 select n case 20 : tmp$ = item_read$(5,1) clear 5 : item_add 5,item_read$(4,1) clear 4 : item_add 4,item_read$(1,1) clear 1 : item_add 1,item_read$(2,1) clear 2 : item_add 2,tmp$ case 30 : tmp$ = item_read$(6,1) clear 6 : item_add 6,item_read$(5,1) clear 5 : item_add 5,item_read$(2,1) clear 2 : item_add 2,item_read$(3,1) clear 3 : item_add 3,tmp$ case 40 : tmp$ = item_read$(8,1) clear 8 : item_add 8,item_read$(7,1) clear 7 : item_add 7,item_read$(4,1) clear 4 : item_add 4,item_read$(5,1) clear 5 : item_add 5,tmp$ case 50 : tmp$ = item_read$(9,1) clear 9 : item_add 9,item_read$(8,1) clear 8 : item_add 8,item_read$(5,1) clear 5 : item_add 5,item_read$(6,1) clear 6 : item_add 6,tmp$ end_select if shuffle = 0 caption 140,"Nombre de coups : " + str$(coup) else caption 140,"Nombre de rotations : " +str$(coup) end_if END_SUB rem ============================================================================ Nouveau: coup = 0 inactive 20 : inactive 30: inactive 40 : inactive 50 : inactive 135 active 120 caption 150,"" : caption 140,"" for n = 1 to 9 clear n : item_add n,str$(n) next n inactive 110 return rem ============================================================================ Melanger: gosub Nouveau r$ = "" shuffle = 1 nm = 5 + int(rnd(16)) for i = 1 to nm m = 10*int(2 + rnd(4)) r$ = r$ + str$(m) + " / " tourne(m) : pause 100 next i coup = 0 caption 140,"Nombre de rotations : " + str$(nm) active 135 : active 110 : active 20 : active 30: active 40 : active 50 shuffle = 0 return rem ============================================================================ SUB Verifier() for i = 1 to 9 if item_read$(i,1) <> str$(i) then exit_for next i if i = 10 message "!!! BRAVO !!! Tu as réussi en " + str$(coup) + " coups !!! Tu es un grand champion !!!" coup = 0 : caption 140,"Nombre de coups : 0" : caption 150,"" for i = 1 to 9 : color i, 0,0,255 : next i inactive 110 : active 120 for i = 20 to 50 step 10 : inactive i : next i end_if END_SUB rem ============================================================================ Quitter: terminate return rem ============================================================================
- Spoiler:
| |
| | | Contenu sponsorisé
| Sujet: Re: ROTOR : le jeu qui vous donne du fil à RETORDRE !!! | |
| |
| | | | ROTOR : le jeu qui vous donne du fil à RETORDRE !!! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |