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 |
|
|
| Jeu de reflexion : MASTERMIND | |
| | |
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 12:14 | |
| Bonjour a tous voila un classique des jeux de reflexion. Il y a encore les options a coder. je vais les faire a suivre... Bon amusement - Code:
-
' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MASTERMIND >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MiniBug - JUILLET 2012 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' --------------------------------------------------- INITIALISATION VARIABLES ET LABELS --------------------------------------------------- dim x%,y%,r%,n%,coul%,coulr%,coulv%,coulb%,couleur%(8,3),selection%,proposition$,tour%,choix$,tirage$,arret%,texte$,existe%,position% label Nouvelle_partie,Options,Regles,quitter,choix,boutton,initialisation,selection_couleur tour%=1 : arret%=0 data 187,11,11,255,255,0,0,210,0,0,0,200,237,127,16,255,255,255,161,6,132,253,63,146 ' --------------------------------------------------- INITIALISATION GRAPHIQUE FENETRES --------------------------------------------------- caption 0,"REFLEXION" : border_small 0 : left 0,400 : color 0,0,0,0 : width 0,616 : height 0,900 alpha 9 : font_color 9,255,255,255 : left 9,105 : top 9,5 : width 9,400 : height 9,50 : FONT_NAME 9,"@FangSong" : FONT_SIZE 9,60 : caption 9,"MASTERMIND" form 20 : border_small 20 : color 20,100,100,100 : left 20,200 : top 20,50 : width 20,1000 : height 20,800 alpha 21 :parent 21,20 : color 21,100,100,100 : left 21,8 : top 21,8 : width 21,567 : height 21,313 : FONT_SIZE 21,10 button 22 : caption 22,"Ok" : parent 22,20 : top 22,700 : left 22,850 : width 22,100 : height 22,50 : hide 20 : on_click 22,boutton form 30 : border_small 30 : color 30,100,100,100 : left 30,550 : top 30,300 : width 30,295 : height 30,400 button 31 : caption 31,"Ok" : parent 31,30 : top 31,335 : left 31,200 : hide 30 : on_click 31,boutton container_option 50 : parent 50,30 : left 50,5 : top 50,5 : width 50,270 : height 50,100 : color 50,0,0,0 : font_color 50,255,255,255 : caption 50,"CHOIX DE LA COMBINAISON" option 52 : parent 52,50 : top 52,30 : left 52,10 : width 52,250 : caption 52,"Choisir la combinaison" : inactive 52 option 53 : parent 53,50 : top 53,60 : left 53,10 : width 53,250 : caption 53,"Deviner la combinaison" : mark_on 53 container 60 : parent 60,30 : left 60,5 : top 60,115 : width 60,270 : height 60,100 : color 60,0,0,0 : font_color 60,255,255,255 : caption 60,"COULEURS DES PIONS" option 62 : parent 62,60 : top 62,30 : left 62,10 : width 62,250 : caption 62,"Plusieurs pions de la même couleur" : inactive 62 option 63 : parent 63,60 : top 63,60 : left 63,10 : width 63,250 : caption 63,"Un seul pion de la même couleur" : mark_on 63 container 70 : parent 70,30 : left 70,5 : top 70,225 : width 70,270 : height 70,100 : color 70,0,0,0 : font_color 70,255,255,255 : caption 70,"ABSENCE DES PIONS" option 72 : parent 72,70 : top 72,30 : left 72,10 : width 72,250 : caption 72,"Absence d'un ou de plusieurs pions" : inactive 72 option 73 : parent 73,70 : top 73,60 : left 73,10 : width 73,250 : caption 73,"Présence de tous les pions" : mark_on 73 ' --------------------------------------------------- INITIALISATION MENU --------------------------------------------------- main_menu 1 sub_menu 2 : caption 2,"Nouvelle partie" : parent 2, 1 : on_click 2, nouvelle_partie sub_menu 3 : caption 3,"Options" : parent 3, 1 : on_click 3, Options sub_menu 4 : caption 4,"Régles du jeu" : parent 4, 1 : on_click 4, Regles sub_menu 5 : caption 5,"Quitter" : parent 5, 1 : on_click 5,quitter end ' --------------------------------------------------- LANCEMENT PARTIE --------------------------------------------------- Nouvelle_partie: for n%=2 to 4 : inactive n% : next n% : hide 20 : hide 30 gosub initialisation ' Nombre de tours a effectuer for tour%=1 to 10 proposition$="" : existe%=0 : position%=0 for selection%=1 to 6 if object_exists(40)=1 2D_TARGET_IS 0 delete 40 end_if picture 40 : top 40,780-(tour%*70) : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 restore ' Affichage de la barre de choix des 8 couleurs for x%=1 to 8 read couleur%(x%,1): read couleur%(x%,2) : read couleur%(x%,3) 2D_FILL_COLOR couleur%(x%,1),couleur%(x%,2),couleur%(x%,3) : 2D_PEN_WIDTH 3 : 2d_circle x%*50-20,25,20 next x% r%=0 repeat coulb%=COLOR_PIXEL_BLUE(40,MOUSE_X_LEFT_DOWN(40),25) coulv%=COLOR_PIXEL_GREEN(40,MOUSE_X_LEFT_DOWN(40),25) coulr%=COLOR_PIXEL_RED(40,MOUSE_X_LEFT_DOWN(40),25) coul%=coulr%+coulv%+coulb% if coul%<>360 and coul%<>0 ' la selection du joueur se trouve dans proposition$ ' on code de 1 a 8 selon la couleur (Somme des RVB) select coul% case 200 : proposition$=proposition$+"4" case 209 : proposition$=proposition$+"1" case 210 : proposition$=proposition$+"3" case 299 : proposition$=proposition$+"7" case 380 : proposition$=proposition$+"5" case 462 : proposition$=proposition$+"8" case 510 : proposition$=proposition$+"2" case 765 : proposition$=proposition$+"6" end_select ' On verifie si la couleur n'est pas deja prise (r%) if instr(left$(proposition$,len(proposition$)-1),right$(proposition$,1))=0 r%=1 else proposition$=left$(proposition$,len(proposition$)-1) r%=0 end_if else r%=0 end_if until r%=1 if instr(tirage$,right$(proposition$,1))<>0 existe%=existe%+1 end_if gosub selection_couleur next selection% ' on verifie la position et les couleurs par rapport au tirage for n%=1 to 6 if mid$(proposition$,n%,1)=mid$(tirage$,n%,1) position%=position%+1 existe%=existe%-1 end_if next n% ' on affiche les pions rouges et noirs pour savoir si la combinaison est bonne for n%=1 to existe%+position% if n%<position%+1 2D_FILL_COLOR 187,11,11 else 2D_FILL_COLOR 255,255,255 end_if 2D_PEN_WIDTH 3 : 2d_circle n%*60+392-n%*30,770-(tour%*70),10 next n% ' pour le debogage on affiche cette ligne - elle donne le resultats des pions noirs et rouges et le tirage rem message "Il y a "+str$(position%)+" bien placé(s) "+str$(existe%)+" pions qui existent dans "+tirage$ ' si on a gagné on sort... if position%=6 then exit_for next tour% ' on affichage le resultat si gagné ou perdu picture 40 : top 40,90 : left 40,100 : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 for x%=1 to 6 2D_FILL_COLOR couleur%(val(mid$(tirage$,x%,1)),1),couleur%(val(mid$(tirage$,x%,1)),2),couleur%(val(mid$(tirage$,x%,1)),3) 2D_PEN_WIDTH 3 : 2d_circle x%*70-40,25,20 next x% if position%=6 message "BRAVO ! vous avez gagné en "+str$(tour%)+" tours." hide 40 : 2D_TARGET_IS 0 : delete 40 else message "DOMMAGE ! vous y étiez presque..." end_if ' Et ca repart ! for n%=2 to 4 : active n% : next n% gosub initialisation return
' --------------------------------------------------- INITIALISATION DU JEU --------------------------------------------------- initialisation: if object_exists(10)=1 2D_TARGET_IS 0 delete 10 end_if ' on affiche les cases vides des 10 tours + cases des pions noirs et rouges picture 10 : left 10,0 : top 10,100 : width 10,600 : height 10,740 : color 10,0,0,0 2D_TARGET_IS 10 for x%=45 to 345 step 60 for y%=70 to 760 step 70 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 55,55,55 : 2D_PEN_WIDTH 3 : 2d_circle x%,y%,20 : 2d_circle x%+400-x%/2,y%,10 next y% next x% tirage$="" ' calcul du tirage aléatoire de la combinaison a trouver (tirage$) couleur=chiffre de 1 a 8 / exemple : tirage$="123456" repeat choix: choix$=str$(int(RND(9))) for n%=1 to len(tirage$) if mid$(tirage$,n%,1)=choix$ choix$="0" end_if next n% if choix$="0" goto choix end_if tirage$=tirage$+choix$ until len(tirage$)=6 return
' --------------------------------------------------- CHOIX DES COULEURS --------------------------------------------------- selection_couleur: 2D_TARGET_IS 10 : delete 40 2D_FILL_COLOR coulr%,coulv%,coulb% : 2D_PEN_WIDTH 3 : 2d_circle selection%*60-15,770-(tour%*70),20 return
' --------------------------------------------------- OPTIONS --------------------------------------------------- Options: show 30 : inactive 3 : inactive 4 return
' --------------------------------------------------- REGLES --------------------------------------------------- Regles: show 20 : caption 20,"Régles" : inactive 3 : inactive 4 texte$=""+CHR$(10) texte$=texte$+" REGLES DU JEU"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz dans les années 1970."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRESENTATION"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il se présente généralement sous la forme d'un plateau perforé de 10 rangées de quatre trous pouvant accueillir des pions de couleurs."+CHR$(10) texte$=texte$+" Le nombre de pions de couleurs différentes est de 8 et les 8 couleurs sont généralement : rouge, jaune, vert, bleu, orange, blanc, violet, fuchsia."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il y a également des pions blancs et rouges (ou noirs) utilisés pour donner des indications à chaque étape du jeu."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il existe de nombreuses variantes suivant le nombre de couleurs, de rangées ou de trous."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRINCIPE"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Un joueur commence par placer son choix de pions sans qu'ils soient vus de l'autre joueur"+CHR$(10) texte$=texte$+" à l'arrière d'un cache qui les masquera à la vue de celui-ci jusqu'à la fin de la manche."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur qui n'a pas sélectionné les pions doit trouver quels sont les quatre pions, c'est-à-dire leurs couleurs et positions."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Pour cela, à chaque tour, le joueur doit se servir de pions pour remplir une rangée selon l'idée qu'il se fait des pions dissimulés."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Une fois les pions placés, l'autre joueur indique :"+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur bien placés en utilisant le même nombre de pions rouges ; "+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur, mais mal placés, avec les pions blancs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+"Il arrive donc surtout en début de partie qu'il ne fasse rien concrètement et qu'il n'ait à dire qu'aucun pion ne correspond, en couleur ou en couleur et position."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" La tactique du joueur actif consiste à sélectionner en fonction des coups précédents, couleurs et positions,"+CHR$(10) texte$=texte$+" de manière à obtenir le maximum d'informations de la réponse du partenaire puisque le nombre de propositions est limité par le nombre de rangées de trous du jeu."+CHR$(10) texte$=texte$+" Dans la plupart des cas, il s'efforce de se rapprocher le plus possible de la solution, compte-tenu des réponses précédentes,"+CHR$(10) texte$=texte$+" mais il peut aussi former une combinaison dans le seul but de vérifier une partie des conclusions des coups précédents"+CHR$(10) texte$=texte$+" et de faire en conséquence la proposition la plus propice à la déduction d'une nouvelle information."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur gagne cette manche s'il donne la bonne combinaison de pions sur la dernière rangée ou avant."+CHR$(10) texte$=texte$+" Dans tous les cas, c'est à son tour de choisir les pions à découvrir."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" VARIANTES"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Selon le niveau des joueurs, un même jeu peut être rendu plus difficile en autorisant plusieurs pions"+CHR$(10) texte$=texte$+" de la même couleur, voire en autorisant l'absence d'un pion ou de plusieurs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Sources WIKIPEDIA - http://fr.wikipedia.org/wiki/Mastermind"+CHR$(10) caption 21,texte$ return
boutton: hide 20 : hide 30 : active 3 : active 4 : active 5 return
quitter: terminate end
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 13:30 | |
| Cool ça, un bouveau jeu Je testerai ce soir. Entre le puzzle les sources de bignono et ton nouveau jeu, Panoramic vas m'occuper un peu ce soir. Merci Minibug pour ce partage de sources | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Aoû 2012 - 13:39 | |
| Bravo ! Il te reste quelques truc à voir, comme moi pour le puzzle mais c'est super même si je ne suis vraiment pas bon à ce jeu... Ps : comme pour le mien, il te faut voir les arrêt intempestif pendant le jeu en cours, essayes , tu auras un message " Repeat not found line...." sauf que çà a rien à voir avec cette ligne... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 13:43 | |
| bonjour ygeronimi
Oui j'ai vu mais je ne sais pas comment gerer cela car je suis dans une boucle repeat-until. j'ai essayé avec exit_repeat sans resultat.
si quelqu'un a une idée ... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Aoû 2012 - 13:56 | |
| Je ne suis pas un sepcialiste du truc mais perso je vais voir du côté de "on_error_go_to"
et je me rappelle aussi de sujet sur la gestion de la fermeture par la croix qui parfois pause un problème. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 14:11 | |
| Eviter les gosub dans une boucle Vous pouvez utiliser une variable quand il faut sortir de la boucle (genre au début sorte vaut 0, s'il faut sortir => mettre sortie à 1) dans votre boucle vous rajouter un test si sortie =1 (avec un exit ou dans vos condition de sortie selon le programme) Une fosi sortie de la boucle, vous faite votre gosub et comme ça vous ne serrez plus embété (Si vous avez plusieurs boucle, mettez plusieurs variables sinon avec les événement genre clic, vous risquez d'avoir des problème de variable qui a une valeur qu'elle ne devrait pas avoir J'espère que j'ai réussi à expliquer l'idée de manière compréhensible (j'ai parfois du mal à m'expliquer simplement ...) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 14:23 | |
| J'ai pas le temps de regarder le code, mais j'ai essayé. çà promet... Une remarque: les couleurs de la rubrique d'aide (caractères noires sur fond gris foncé) c'est pas le pied pour mes yeux. Bon courage, A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 14:49 | |
| Salut Minibug. Un beau classique en perspective. Je t’encourage à le finaliser et à l’améliorer. Tu as fais un bon boulot, mais (hé oui, je fais toujours des mais) Il parait que les dimensions de ton écran se mesurent en mètres. Les fenêtres sont trop grandes tandis que la 1ere est étroite. Petite remarque : l’écriture noire sur fond gris est pénible à lire pour des jeunes vieux à lunettes comme moi. Le end en fin de programme n’a aucun effet et est donc inutile. Et pour finir avec les remarques, Minibug, il y a un mini bug dans ton programme : lorsqu’on clique sur ‘Nouvelle partie’ puis sur ‘quitter’ on a un message d’erreur : ‘ (67) No corresponding REPEAT found.Line 250’. bon je m'arrête ici. Bonne continuation. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 15:09 | |
| Voici le correctif plus de bug suite a l'arret et changement des couleurs pour les regles... - Code:
-
' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MASTERMIND >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MiniBug - JUILLET 2012 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' --------------------------------------------------- INITIALISATION VARIABLES ET LABELS --------------------------------------------------- dim x%,y%,r%,n%,coul%,coulr%,coulv%,coulb%,couleur%(8,3),selection%,proposition$,tour%,choix$,tirage$,arret%,texte$,existe%,position% label Nouvelle_partie,Options,Regles,quitter,choix,boutton,initialisation,selection_couleur,erreur tour%=1 : arret%=0 data 187,11,11,255,255,0,0,210,0,0,0,200,237,127,16,255,255,255,161,6,132,253,63,146
' --------------------------------------------------- INITIALISATION GRAPHIQUE FENETRES --------------------------------------------------- caption 0,"REFLEXION" : border_small 0 : left 0,400 : color 0,0,0,0 : width 0,616 : height 0,900 alpha 9 : font_color 9,255,255,255 : left 9,105 : top 9,5 : width 9,400 : height 9,50 : FONT_NAME 9,"@FangSong" : FONT_SIZE 9,60 : caption 9,"MASTERMIND" form 20 : border_small 20 : color 20,100,100,100 : left 20,200 : top 20,50 : width 20,1005 : height 20,785 alpha 21 :parent 21,20 : color 21,0,0,0 : font_color 21,255,255,255 : left 21,8 : top 21,8 : width 21,567 : height 21,313 : FONT_SIZE 21,10 button 22 : caption 22,"Ok" : parent 22,20 : top 22,685 : left 22,870 : width 22,100 : height 22,50 : hide 20 : on_click 22,boutton form 30 : border_small 30 : color 30,100,100,100 : left 30,550 : top 30,300 : width 30,295 : height 30,400 button 31 : caption 31,"Ok" : parent 31,30 : top 31,335 : left 31,200 : hide 30 : on_click 31,boutton container_option 50 : parent 50,30 : left 50,5 : top 50,5 : width 50,270 : height 50,100 : color 50,0,0,0 : font_color 50,255,255,255 : caption 50,"CHOIX DE LA COMBINAISON" option 52 : parent 52,50 : top 52,30 : left 52,10 : width 52,250 : caption 52,"Choisir la combinaison" : inactive 52 option 53 : parent 53,50 : top 53,60 : left 53,10 : width 53,250 : caption 53,"Deviner la combinaison" : mark_on 53 container 60 : parent 60,30 : left 60,5 : top 60,115 : width 60,270 : height 60,100 : color 60,0,0,0 : font_color 60,255,255,255 : caption 60,"COULEURS DES PIONS" option 62 : parent 62,60 : top 62,30 : left 62,10 : width 62,250 : caption 62,"Plusieurs pions de la même couleur" : inactive 62 option 63 : parent 63,60 : top 63,60 : left 63,10 : width 63,250 : caption 63,"Un seul pion de la même couleur" : mark_on 63 container 70 : parent 70,30 : left 70,5 : top 70,225 : width 70,270 : height 70,100 : color 70,0,0,0 : font_color 70,255,255,255 : caption 70,"ABSENCE DES PIONS" option 72 : parent 72,70 : top 72,30 : left 72,10 : width 72,250 : caption 72,"Absence d'un ou de plusieurs pions" : inactive 72 option 73 : parent 73,70 : top 73,60 : left 73,10 : width 73,250 : caption 73,"Présence de tous les pions" : mark_on 73
' --------------------------------------------------- INITIALISATION MENU --------------------------------------------------- main_menu 1 sub_menu 2 : caption 2,"Nouvelle partie" : parent 2, 1 : on_click 2, nouvelle_partie sub_menu 3 : caption 3,"Options" : parent 3, 1 : on_click 3, Options sub_menu 4 : caption 4,"Régles du jeu" : parent 4, 1 : on_click 4, Regles sub_menu 5 : caption 5,"Quitter" : parent 5, 1 : on_click 5,quitter
on_error_goto erreur
end
' --------------------------------------------------- LANCEMENT PARTIE --------------------------------------------------- Nouvelle_partie: for n%=2 to 4 : inactive n% : next n% : hide 20 : hide 30 :arret%=0 gosub initialisation
' Nombre de tours a effectuer
for tour%=1 to 10 proposition$="" : existe%=0 : position%=0 for selection%=1 to 6 if object_exists(40)=1 2D_TARGET_IS 0 delete 40 end_if picture 40 : top 40,780-(tour%*70) : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 restore
' Affichage de la barre de choix des 8 couleurs
for x%=1 to 8 read couleur%(x%,1): read couleur%(x%,2) : read couleur%(x%,3) 2D_FILL_COLOR couleur%(x%,1),couleur%(x%,2),couleur%(x%,3) : 2D_PEN_WIDTH 3 : 2d_circle x%*50-20,25,20 next x% r%=0 repeat coulb%=COLOR_PIXEL_BLUE(40,MOUSE_X_LEFT_DOWN(40),25) coulv%=COLOR_PIXEL_GREEN(40,MOUSE_X_LEFT_DOWN(40),25) coulr%=COLOR_PIXEL_RED(40,MOUSE_X_LEFT_DOWN(40),25) coul%=coulr%+coulv%+coulb% if coul%<>360 and coul%<>0
' la selection du joueur se trouve dans proposition$ ' on code de 1 a 8 selon la couleur (Somme des RVB)
select coul% case 200 : proposition$=proposition$+"4" case 209 : proposition$=proposition$+"1" case 210 : proposition$=proposition$+"3" case 299 : proposition$=proposition$+"7" case 380 : proposition$=proposition$+"5" case 462 : proposition$=proposition$+"8" case 510 : proposition$=proposition$+"2" case 765 : proposition$=proposition$+"6" end_select
' On verifie si la couleur n'est pas deja prise (r%)
if instr(left$(proposition$,len(proposition$)-1),right$(proposition$,1))=0 r%=1 else proposition$=left$(proposition$,len(proposition$)-1) r%=0 end_if else r%=0 end_if until r%=1 or arret%=1 if instr(tirage$,right$(proposition$,1))<>0 existe%=existe%+1 end_if gosub selection_couleur if arret%=1 then exit_for next selection%
' on verifie la position et les couleurs par rapport au tirage
for n%=1 to 6 if mid$(proposition$,n%,1)=mid$(tirage$,n%,1) position%=position%+1 existe%=existe%-1 end_if next n% ' on affiche les pions rouges et noirs pour savoir si la combinaison est bonne for n%=1 to existe%+position% if n%<position%+1 2D_FILL_COLOR 187,11,11 else 2D_FILL_COLOR 255,255,255 end_if 2D_PEN_WIDTH 3 : 2d_circle n%*60+392-n%*30,770-(tour%*70),10 next n%
' pour le debogage on affiche cette ligne - elle donne le resultats des pions noirs et rouges et le tirage
rem message "Il y a "+str$(position%)+" bien placé(s) "+str$(existe%)+" pions qui existent dans "+tirage$
' si on a gagné on sort...
if position%=6 or arret%=1 then exit_for next tour%
' on affichage le resultat si gagné ou perdu
picture 40 : top 40,90 : left 40,100 : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 for x%=1 to 6 2D_FILL_COLOR couleur%(val(mid$(tirage$,x%,1)),1),couleur%(val(mid$(tirage$,x%,1)),2),couleur%(val(mid$(tirage$,x%,1)),3) 2D_PEN_WIDTH 3 : 2d_circle x%*70-40,25,20 next x% if position%=6 message "BRAVO ! vous avez gagné en "+str$(tour%)+" tours." hide 40 : 2D_TARGET_IS 0 : delete 40 else message "DOMMAGE ! vous y étiez presque..." end_if
' Et ca repart !
for n%=2 to 4 : active n% : next n% gosub initialisation if arret%=1 then terminate return
' --------------------------------------------------- INITIALISATION DU JEU --------------------------------------------------- initialisation: if object_exists(10)=1 2D_TARGET_IS 0 delete 10 end_if
' on affiche les cases vides des 10 tours + cases des pions noirs et rouges
picture 10 : left 10,0 : top 10,100 : width 10,600 : height 10,740 : color 10,0,0,0 2D_TARGET_IS 10 for x%=45 to 345 step 60 for y%=70 to 760 step 70 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 55,55,55 : 2D_PEN_WIDTH 3 : 2d_circle x%,y%,20 : 2d_circle x%+400-x%/2,y%,10 next y% next x% tirage$=""
' calcul du tirage aléatoire de la combinaison a trouver (tirage$) couleur=chiffre de 1 a 8 / exemple : tirage$="123456"
repeat choix: choix$=str$(int(RND(9))) for n%=1 to len(tirage$) if mid$(tirage$,n%,1)=choix$ choix$="0" end_if next n% if choix$="0" goto choix end_if tirage$=tirage$+choix$ until len(tirage$)=6 return
' --------------------------------------------------- CHOIX DES COULEURS --------------------------------------------------- selection_couleur: 2D_TARGET_IS 10 : delete 40 2D_FILL_COLOR coulr%,coulv%,coulb% : 2D_PEN_WIDTH 3 : 2d_circle selection%*60-15,770-(tour%*70),20 return
' --------------------------------------------------- OPTIONS --------------------------------------------------- Options: show 30 : inactive 3 : inactive 4 return
' --------------------------------------------------- REGLES --------------------------------------------------- Regles: show 20 : caption 20,"Régles" : inactive 3 : inactive 4 texte$=""+CHR$(10) texte$=texte$+" REGLES DU JEU"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz dans les années 1970."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRESENTATION"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il se présente généralement sous la forme d'un plateau perforé de 10 rangées de quatre trous pouvant accueillir des pions de couleurs."+CHR$(10) texte$=texte$+" Le nombre de pions de couleurs différentes est de 8 et les 8 couleurs sont généralement : rouge, jaune, vert, bleu, orange, blanc, violet, fuchsia."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il y a également des pions blancs et rouges (ou noirs) utilisés pour donner des indications à chaque étape du jeu."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il existe de nombreuses variantes suivant le nombre de couleurs, de rangées ou de trous."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRINCIPE"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Un joueur commence par placer son choix de pions sans qu'ils soient vus de l'autre joueur"+CHR$(10) texte$=texte$+" à l'arrière d'un cache qui les masquera à la vue de celui-ci jusqu'à la fin de la manche."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur qui n'a pas sélectionné les pions doit trouver quels sont les quatre pions, c'est-à-dire leurs couleurs et positions."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Pour cela, à chaque tour, le joueur doit se servir de pions pour remplir une rangée selon l'idée qu'il se fait des pions dissimulés."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Une fois les pions placés, l'autre joueur indique :"+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur bien placés en utilisant le même nombre de pions rouges ; "+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur, mais mal placés, avec les pions blancs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+"Il arrive donc surtout en début de partie qu'il ne fasse rien concrètement et qu'il n'ait à dire qu'aucun pion ne correspond, en couleur ou en couleur et position."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" La tactique du joueur actif consiste à sélectionner en fonction des coups précédents, couleurs et positions,"+CHR$(10) texte$=texte$+" de manière à obtenir le maximum d'informations de la réponse du partenaire puisque le nombre de propositions est limité par le nombre de rangées de trous du jeu."+CHR$(10) texte$=texte$+" Dans la plupart des cas, il s'efforce de se rapprocher le plus possible de la solution, compte-tenu des réponses précédentes,"+CHR$(10) texte$=texte$+" mais il peut aussi former une combinaison dans le seul but de vérifier une partie des conclusions des coups précédents"+CHR$(10) texte$=texte$+" et de faire en conséquence la proposition la plus propice à la déduction d'une nouvelle information."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur gagne cette manche s'il donne la bonne combinaison de pions sur la dernière rangée ou avant."+CHR$(10) texte$=texte$+" Dans tous les cas, c'est à son tour de choisir les pions à découvrir."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" VARIANTES"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Selon le niveau des joueurs, un même jeu peut être rendu plus difficile en autorisant plusieurs pions"+CHR$(10) texte$=texte$+" de la même couleur, voire en autorisant l'absence d'un pion ou de plusieurs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Sources WIKIPEDIA - http://fr.wikipedia.org/wiki/Mastermind"+CHR$(10) caption 21,texte$ return
boutton: hide 20 : hide 30 : active 3 : active 4 : active 5 return
erreur: if error_number=67 arret%=1 end_if return
quitter: terminate
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Ven 3 Aoû 2012 - 16:10 | |
| @Minibug J’ai apporté les modifications suivantes à ton programme. Il s’agit simplement d’un point de vue personnel. Libre à toi d’approuver ou non. Ligne 12 : j’ai changé ‘left 0,400’ par ‘left 0,10’ Ligne 13 : j’ai changé ‘font_size 9,60’ par font_size 9,30’ Ligne 14 : j’ai changé ‘left 20,200’ par ‘left 20,10’ et ‘top 20,50’ par ‘top 20,5’ Ligne 15 : j’ai changé ‘width 21,,567’ par ‘width 21, 667’ et ‘top 21,8’ par ‘top 21,0’ et j’ai ajouté ‘font_bold 21’ Cette dernière instruction fait que la lecture des règles devient plus aisée. Mais il reste à revoir la longueur des lignes qui sont trop longues. Comme écrit ci-dessus, ce n’est qu’une question de gout ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de reflexion : MASTERMIND Sam 4 Aoû 2012 - 23:57 | |
| Minibug, je te mets ma version. Elle n'est en rien une amélioration de la tienne, c'est juste une adaptation à mon écran qui est en 16/9 (large mais pas haut) J'ai juste modifié la formule d'affichage pour appliquer le même principe pour la création et le remplissage en cours de partie (j'ai fais ça pour gagner du temps pour mon adaptation en hauteur) Si quelqu'un d'autre à un portable, je pense que ça pourra lui être utile aussi - Code:
-
' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MASTERMIND >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MiniBug - JUILLET 2012 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' --------------------------------------------------- INITIALISATION VARIABLES ET LABELS --------------------------------------------------- dim x%,y%,r%,n%,coul%,coulr%,coulv%,coulb%,couleur%(8,3),selection%,proposition$,tour%,choix$,tirage$,arret%,texte$,existe%,position% label Nouvelle_partie,Options,Regles,quitter,choix,boutton,initialisation,selection_couleur,erreur tour%=1 : arret%=0 data 187,11,11,255,255,0,0,210,0,0,0,200,237,127,16,255,255,255,161,6,132,253,63,146
' --------------------------------------------------- INITIALISATION GRAPHIQUE FENETRES --------------------------------------------------- caption 0,"REFLEXION" : border_small 0 : left 0,400 : color 0,0,0,0 : width 0,640 : height 0,730 alpha 9 : font_color 9,255,255,255 : left 9,105 : top 9,5 : width 9,400 : height 9,50 : FONT_NAME 9,"@FangSong" : FONT_SIZE 9,60 : caption 9,"MASTERMIND" form 20 : border_small 20 : color 20,100,100,100 : left 20,200 : top 20,50 : width 20,1005 : height 20,640 alpha 21 :parent 21,20 : color 21,0,0,0 : font_color 21,255,255,255 : left 21,8 : top 21,8 : width 21,567 : height 21,313 : FONT_SIZE 21,10 button 22 : caption 22,"Ok" : parent 22,20 : top 22,685 : left 22,870 : width 22,100 : height 22,50 : hide 20 : on_click 22,boutton form 30 : border_small 30 : color 30,100,100,100 : left 30,550 : top 30,300 : width 30,295 : height 30,400 button 31 : caption 31,"Ok" : parent 31,30 : top 31,335 : left 31,200 : hide 30 : on_click 31,boutton container_option 50 : parent 50,30 : left 50,5 : top 50,5 : width 50,270 : height 50,100 : color 50,0,0,0 : font_color 50,255,255,255 : caption 50,"CHOIX DE LA COMBINAISON" option 52 : parent 52,50 : top 52,30 : left 52,10 : width 52,250 : caption 52,"Choisir la combinaison" : inactive 52 option 53 : parent 53,50 : top 53,60 : left 53,10 : width 53,250 : caption 53,"Deviner la combinaison" : mark_on 53 container 60 : parent 60,30 : left 60,5 : top 60,115 : width 60,270 : height 60,100 : color 60,0,0,0 : font_color 60,255,255,255 : caption 60,"COULEURS DES PIONS" option 62 : parent 62,60 : top 62,30 : left 62,10 : width 62,250 : caption 62,"Plusieurs pions de la même couleur" : inactive 62 option 63 : parent 63,60 : top 63,60 : left 63,10 : width 63,250 : caption 63,"Un seul pion de la même couleur" : mark_on 63 container 70 : parent 70,30 : left 70,5 : top 70,225 : width 70,270 : height 70,100 : color 70,0,0,0 : font_color 70,255,255,255 : caption 70,"ABSENCE DES PIONS" option 72 : parent 72,70 : top 72,30 : left 72,10 : width 72,250 : caption 72,"Absence d'un ou de plusieurs pions" : inactive 72 option 73 : parent 73,70 : top 73,60 : left 73,10 : width 73,250 : caption 73,"Présence de tous les pions" : mark_on 73
' --------------------------------------------------- INITIALISATION MENU --------------------------------------------------- main_menu 1 sub_menu 2 : caption 2,"Nouvelle partie" : parent 2, 1 : on_click 2, nouvelle_partie sub_menu 3 : caption 3,"Options" : parent 3, 1 : on_click 3, Options sub_menu 4 : caption 4,"Régles du jeu" : parent 4, 1 : on_click 4, Regles sub_menu 5 : caption 5,"Quitter" : parent 5, 1 : on_click 5,quitter
on_error_goto erreur
end
' --------------------------------------------------- LANCEMENT PARTIE --------------------------------------------------- Nouvelle_partie: for n%=2 to 4 : inactive n% : next n% : hide 20 : hide 30 :arret%=0 gosub initialisation
' Nombre de tours a effectuer
for tour%=1 to 10 proposition$="" : existe%=0 : position%=0 for selection%=1 to 6 if object_exists(40)=1 2D_TARGET_IS 0 delete 40 end_if picture 40 : top 40,595-(tour%*50) : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 restore
' Affichage de la barre de choix des 8 couleurs
for x%=1 to 8 read couleur%(x%,1): read couleur%(x%,2) : read couleur%(x%,3) 2D_FILL_COLOR couleur%(x%,1),couleur%(x%,2),couleur%(x%,3) : 2D_PEN_WIDTH 3 : 2d_circle x%*50-20,25,20 next x% r%=0 repeat coulb%=COLOR_PIXEL_BLUE(40,MOUSE_X_LEFT_DOWN(40),25) coulv%=COLOR_PIXEL_GREEN(40,MOUSE_X_LEFT_DOWN(40),25) coulr%=COLOR_PIXEL_RED(40,MOUSE_X_LEFT_DOWN(40),25) coul%=coulr%+coulv%+coulb% if coul%<>360 and coul%<>0
' la selection du joueur se trouve dans proposition$ ' on code de 1 a 8 selon la couleur (Somme des RVB)
select coul% case 200 : proposition$=proposition$+"4" case 209 : proposition$=proposition$+"1" case 210 : proposition$=proposition$+"3" case 299 : proposition$=proposition$+"7" case 380 : proposition$=proposition$+"5" case 462 : proposition$=proposition$+"8" case 510 : proposition$=proposition$+"2" case 765 : proposition$=proposition$+"6" end_select
' On verifie si la couleur n'est pas deja prise (r%)
if instr(left$(proposition$,len(proposition$)-1),right$(proposition$,1))=0 r%=1 else proposition$=left$(proposition$,len(proposition$)-1) r%=0 end_if else r%=0 end_if until r%=1 or arret%=1 if instr(tirage$,right$(proposition$,1))<>0 existe%=existe%+1 end_if gosub selection_couleur if arret%=1 then exit_for next selection%
' on verifie la position et les couleurs par rapport au tirage
for n%=1 to 6 if mid$(proposition$,n%,1)=mid$(tirage$,n%,1) position%=position%+1 existe%=existe%-1 end_if next n% ' on affiche les pions rouges et noirs pour savoir si la combinaison est bonne for n%=1 to existe%+position% if n%<position%+1 2D_FILL_COLOR 187,11,11 else 2D_FILL_COLOR 255,255,255 end_if 2D_PEN_WIDTH 3 : 2d_circle n%*30+400,580-(tour%*50),10 next n%
' pour le debogage on affiche cette ligne - elle donne le resultats des pions noirs et rouges et le tirage
rem message "Il y a "+str$(position%)+" bien placé(s) "+str$(existe%)+" pions qui existent dans "+tirage$
' si on a gagné on sort...
if position%=6 or arret%=1 then exit_for next tour%
' on affichage le resultat si gagné ou perdu
picture 40 : top 40,90 : left 40,100 : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 for x%=1 to 6 2D_FILL_COLOR couleur%(val(mid$(tirage$,x%,1)),1),couleur%(val(mid$(tirage$,x%,1)),2),couleur%(val(mid$(tirage$,x%,1)),3) 2D_PEN_WIDTH 3 : 2d_circle x%*70-40,25,20 next x% if position%=6 message "BRAVO ! vous avez gagné en "+str$(tour%)+" tours." hide 40 : 2D_TARGET_IS 0 : delete 40 else message "DOMMAGE ! vous y étiez presque..." end_if
' Et ca repart !
for n%=2 to 4 : active n% : next n% gosub initialisation if arret%=1 then terminate return
' --------------------------------------------------- INITIALISATION DU JEU --------------------------------------------------- initialisation: if object_exists(10)=1 2D_TARGET_IS 0 delete 10 end_if
' on affiche les cases vides des 10 tours + cases des pions noirs et rouges picture 10 : left 10,0 : top 10,90 : width 10,600 : height 10,580 : color 10,0,0,0 2D_TARGET_IS 10 for y%=1 to 10 for x%=1 to 6 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 55,55,55 : 2D_PEN_WIDTH 3 : 2d_circle x%*50 + 30,580 - y%* 50,20 : 2d_circle x%*30+400,580 - y%* 50,10 next x% next y% tirage$=""
' calcul du tirage aléatoire de la combinaison a trouver (tirage$) couleur=chiffre de 1 a 8 / exemple : tirage$="123456" repeat choix: choix$=str$(int(RND(9))) for n%=1 to len(tirage$) if mid$(tirage$,n%,1)=choix$ choix$="0" end_if next n% if choix$="0" goto choix end_if tirage$=tirage$+choix$ until len(tirage$)=6 return
' --------------------------------------------------- CHOIX DES COULEURS --------------------------------------------------- selection_couleur: 2D_TARGET_IS 10 : delete 40 2D_FILL_COLOR coulr%,coulv%,coulb% : 2D_PEN_WIDTH 3 : 2d_circle selection%*50+30,580-(tour%*50),20 return
' --------------------------------------------------- OPTIONS --------------------------------------------------- Options: show 30 : inactive 3 : inactive 4 return
' --------------------------------------------------- REGLES --------------------------------------------------- Regles: show 20 : caption 20,"Régles" : inactive 3 : inactive 4 texte$=""+CHR$(10) texte$=texte$+" REGLES DU JEU"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz dans les années 1970."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRESENTATION"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il se présente généralement sous la forme d'un plateau perforé de 10 rangées de quatre trous pouvant accueillir des pions de couleurs."+CHR$(10) texte$=texte$+" Le nombre de pions de couleurs différentes est de 8 et les 8 couleurs sont généralement : rouge, jaune, vert, bleu, orange, blanc, violet, fuchsia."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il y a également des pions blancs et rouges (ou noirs) utilisés pour donner des indications à chaque étape du jeu."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il existe de nombreuses variantes suivant le nombre de couleurs, de rangées ou de trous."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRINCIPE"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Un joueur commence par placer son choix de pions sans qu'ils soient vus de l'autre joueur"+CHR$(10) texte$=texte$+" à l'arrière d'un cache qui les masquera à la vue de celui-ci jusqu'à la fin de la manche."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur qui n'a pas sélectionné les pions doit trouver quels sont les quatre pions, c'est-à-dire leurs couleurs et positions."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Pour cela, à chaque tour, le joueur doit se servir de pions pour remplir une rangée selon l'idée qu'il se fait des pions dissimulés."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Une fois les pions placés, l'autre joueur indique :"+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur bien placés en utilisant le même nombre de pions rouges ; "+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur, mais mal placés, avec les pions blancs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+"Il arrive donc surtout en début de partie qu'il ne fasse rien concrètement et qu'il n'ait à dire qu'aucun pion ne correspond, en couleur ou en couleur et position."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" La tactique du joueur actif consiste à sélectionner en fonction des coups précédents, couleurs et positions,"+CHR$(10) texte$=texte$+" de manière à obtenir le maximum d'informations de la réponse du partenaire puisque le nombre de propositions est limité par le nombre de rangées de trous du jeu."+CHR$(10) texte$=texte$+" Dans la plupart des cas, il s'efforce de se rapprocher le plus possible de la solution, compte-tenu des réponses précédentes,"+CHR$(10) texte$=texte$+" mais il peut aussi former une combinaison dans le seul but de vérifier une partie des conclusions des coups précédents"+CHR$(10) texte$=texte$+" et de faire en conséquence la proposition la plus propice à la déduction d'une nouvelle information."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur gagne cette manche s'il donne la bonne combinaison de pions sur la dernière rangée ou avant."+CHR$(10) texte$=texte$+" Dans tous les cas, c'est à son tour de choisir les pions à découvrir."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" VARIANTES"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Selon le niveau des joueurs, un même jeu peut être rendu plus difficile en autorisant plusieurs pions"+CHR$(10) texte$=texte$+" de la même couleur, voire en autorisant l'absence d'un pion ou de plusieurs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Sources WIKIPEDIA - http://fr.wikipedia.org/wiki/Mastermind"+CHR$(10) caption 21,texte$ return
boutton: hide 20 : hide 30 : active 3 : active 4 : active 5 return
erreur: if error_number=67 arret%=1 end_if return
quitter: terminate | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 10:08 | |
| merci pour ton intervention Jicehel : il est vrai que je n'y avait pas pensé.
Je travaille sur un portable 17" et donc effectivement pas prévu les affichages sur notebook ou 16/9. Je tacherai de m'en souvenir. et d'ailleur je crois qu'il y a dans panoramic des fonctions concernant la taille de l'écran. Il faut que je regarde tout cela.
merci à tous pour vos remontées et vos corrections. Je vais codé les 3 options et dès que c'est okje met en ligne... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 10:11 | |
| Merci à toi Minibug et continu de faire de la concurence à Lodjo et ygeronimi Ton Mastermind est excellent (même s'il m'énerve un peu des fois comme tout casse tête qui se respecte...) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 10:20 | |
| @Minibug tu as SCREEN_X et SCREEN_Y qui te donnent la résolution de l'écran en pixels, ça permet d'ajuster les fenêtres en conséquence. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 11:01 | |
| merci JL. il me semblait avoir vu quelque chose comme ca.
A tester lors d'un prochain programme... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 14:26 | |
| Bravo ! sur celui là je sèche, il faut que je trouve une technique.
A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 17:39 | |
| Specialement pour toi jean claude : j'ai rajoute les options 2 et 3 afin de rendre le jeu encore plus interressant... - possibilité d'utiliser plusieurs fois la meme couleur - possibilité de laisser des cases vides (ou cases noires) il ne me reste plus qu'a code la 1ere option choisir la combinaison ou la deviner vous pouvez aussi utiliser la ligne de debogage (ligne 140) si elle peut vous aider mais là c'est de la triche... - Code:
-
' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MASTERMIND >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MiniBug - JUILLET 2012 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' --------------------------------------------------- INITIALISATION VARIABLES ET LABELS --------------------------------------------------- dim x%,y%,r%,n%,coul%,coulr%,coulv%,coulb%,couleur%(9,3),selection%,proposition$,tour%,choix$,tirage$,arret%,retour%,texte$,existe%,position%,option%(3),existe_pion% label Nouvelle_partie,Options,Regles,quitter,recommence,choix,boutton,initialisation,selection_couleur,erreur label select_option_10,select_option_11,select_option_20,select_option_21,select_option_30,select_option_31 data 187,11,11,255,255,0,0,210,0,0,0,200,237,127,16,255,255,255,161,6,132,253,63,146,1,1,1
tour%=1 : arret%=0 : for n%=1 to 3 : option%(n%)=1 : next n%
' --------------------------------------------------- INITIALISATION GRAPHIQUE FENETRES --------------------------------------------------- caption 0,"REFLEXION" : border_small 0 : left 0,400 : color 0,0,0,0 : width 0,640 : height 0,730 alpha 9 : font_color 9,255,255,255 : left 9,105 : top 9,5 : width 9,400 : height 9,50 : FONT_NAME 9,"@FangSong" : FONT_SIZE 9,60 : caption 9,"MASTERMIND" form 20 : border_small 20 : color 20,100,100,100 : left 20,200 : top 20,50 : width 20,1005 : height 20,640 alpha 21 :parent 21,20 : color 21,0,0,0 : font_color 21,255,255,255 : left 21,8 : top 21,8 : width 21,567 : height 21,313 : FONT_SIZE 21,10 button 22 : caption 22,"Ok" : parent 22,20 : top 22,685 : left 22,870 : width 22,100 : height 22,50 : hide 20 : on_click 22,boutton form 30 : border_small 30 : color 30,100,100,100 : left 30,550 : top 30,300 : width 30,295 : height 30,400 button 31 : caption 31,"Ok" : parent 31,30 : top 31,335 : left 31,200 : hide 30 : on_click 31,boutton container_option 50 : parent 50,30 : left 50,5 : top 50,5 : width 50,270 : height 50,100 : color 50,0,0,0 : font_color 50,255,255,255 : caption 50,"CHOIX DE LA COMBINAISON" option 52 : parent 52,50 : top 52,30 : left 52,10 : width 52,250 : caption 52,"Choisir la combinaison" : on_click 52,select_option_10 : inactive 52 option 53 : parent 53,50 : top 53,60 : left 53,10 : width 53,250 : caption 53,"Deviner la combinaison" : mark_on 53 : on_click 53,select_option_11 container 60 : parent 60,30 : left 60,5 : top 60,115 : width 60,270 : height 60,100 : color 60,0,0,0 : font_color 60,255,255,255 : caption 60,"COULEURS DES PIONS" option 62 : parent 62,60 : top 62,30 : left 62,10 : width 62,250 : caption 62,"Plusieurs pions de la même couleur" : on_click 62,select_option_20 option 63 : parent 63,60 : top 63,60 : left 63,10 : width 63,250 : caption 63,"Un seul pion de la même couleur" : mark_on 63 : on_click 63,select_option_21 container 70 : parent 70,30 : left 70,5 : top 70,225 : width 70,270 : height 70,100 : color 70,0,0,0 : font_color 70,255,255,255 : caption 70,"ABSENCE DES PIONS" option 72 : parent 72,70 : top 72,30 : left 72,10 : width 72,250 : caption 72,"Absence d'un ou de plusieurs pions" : on_click 72,select_option_30 option 73 : parent 73,70 : top 73,60 : left 73,10 : width 73,250 : caption 73,"Présence de tous les pions" : mark_on 73 : on_click 73,select_option_31
' --------------------------------------------------- INITIALISATION MENU --------------------------------------------------- main_menu 1 sub_menu 2 : caption 2,"Nouvelle partie" : parent 2, 1 : on_click 2, nouvelle_partie sub_menu 3 : caption 3,"Options" : parent 3, 1 : on_click 3, Options sub_menu 4 : caption 4,"Régles du jeu" : parent 4, 1 : on_click 4, Regles sub_menu 5 : caption 5,"Quitter" : parent 5, 1 : on_click 5,quitter
on_error_goto erreur
end
' --------------------------------------------------- LANCEMENT PARTIE --------------------------------------------------- Nouvelle_partie: caption 2,"Arreter" for n%=3 to 4 : inactive n% : next n% : hide 20 : hide 30 :arret%=0 :retour%=0 gosub initialisation
' Nombre de tours a effectuer
for tour%=1 to 10 proposition$="" for selection%=1 to 6 if object_exists(40)=1 2D_TARGET_IS 0 delete 40 end_if picture 40 : top 40,595-(tour%*50) : width 40,460-(option%(3)*50) : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 restore
' Affichage de la barre de choix des 8 ou 9 couleurs (9eme etant la case vide)
for x%=1 to 9-option%(3) read couleur%(x%,1): read couleur%(x%,2) : read couleur%(x%,3) 2D_FILL_COLOR couleur%(x%,1),couleur%(x%,2),couleur%(x%,3) : 2D_PEN_WIDTH 3 : 2d_circle x%*50-20,25,20 next x%
r%=0 repeat coulb%=COLOR_PIXEL_BLUE(40,MOUSE_X_LEFT_DOWN(40),25) coulv%=COLOR_PIXEL_GREEN(40,MOUSE_X_LEFT_DOWN(40),25) coulr%=COLOR_PIXEL_RED(40,MOUSE_X_LEFT_DOWN(40),25) coul%=coulr%+coulv%+coulb% if coul%<>360 and coul%<>0
' la selection du joueur se trouve dans proposition$ ' code de 1 a 9 selon la couleur (Somme des RVB) le 9eme correspond au pion absent "0" select coul% case 3 : proposition$=proposition$+"0" case 200 : proposition$=proposition$+"4" case 209 : proposition$=proposition$+"1" case 210 : proposition$=proposition$+"3" case 299 : proposition$=proposition$+"7" case 380 : proposition$=proposition$+"5" case 462 : proposition$=proposition$+"8" case 510 : proposition$=proposition$+"2" case 765 : proposition$=proposition$+"6" end_select
' verifier si la couleur n'est pas deja prise (r%) if instr(left$(proposition$,len(proposition$)-1),right$(proposition$,1))=0 and option%(2)=1 r%=1 else if option%(2)=1 proposition$=left$(proposition$,len(proposition$)-1) r%=0 else r%=1 end_if end_if else r%=0 end_if until r%=1 or arret%=1 or retour%=1 gosub selection_couleur if arret%=1 or retour%=1 then exit_for next selection%
' verifier la position et les couleurs par rapport au tirage existe%=0 : position%=0 for n%=1 to 6 if mid$(proposition$,n%,1)=mid$(tirage$,n%,1) position%=position%+1 end_if existe_pion%=0 for x%=1 to 6 if mid$(tirage$,n%,1)=mid$(proposition$,x%,1) existe_pion%=1
end_if next x% if existe_pion%=1 then existe%=existe%+1 next n% existe%=existe%-position% ' afficher les pions rouges et noirs pour savoir si la combinaison est bonne if position%<>0 for n%=1 to position% 2D_FILL_COLOR 187,11,11 : 2D_PEN_WIDTH 3 : 2d_circle n%*30+400,580-(tour%*50),10 next n% end_if if existe%<>0 for n%=position%+1 to position%+existe% 2D_FILL_COLOR 255,255,255 : 2D_PEN_WIDTH 3 : 2d_circle n%*30+400,580-(tour%*50),10 next n% end_if ' pour le debogage on affiche cette ligne - elle donne le resultats des pions noirs et rouges et le tirage rem message "pion(s) de bien place(s) : "+str$(position%)+chr$(10)+"pion(s) de mal plac(e)s : "+str$(existe%)+chr$(10)+"Proposition : "+proposition$+chr$(10)+"Tirage : "+tirage$
' si on a gagné on sort... if position%=6 or arret%=1 or retour%=1 then exit_for next tour%
' on affichage le resultat si gagné ou perdu picture 40 : top 40,90 : left 40,100 : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 for x%=1 to 6 2D_FILL_COLOR couleur%(val(mid$(tirage$,x%,1)),1),couleur%(val(mid$(tirage$,x%,1)),2),couleur%(val(mid$(tirage$,x%,1)),3) 2D_PEN_WIDTH 3 : 2d_circle x%*70-40,25,20 next x% if position%=6 message "BRAVO ! vous avez gagné en "+str$(tour%)+" tours." hide 40 : 2D_TARGET_IS 0 : delete 40 else message "DOMMAGE ! vous y étiez presque..." end_if
' Et ca repart !
for n%=2 to 4 : active n% : next n% gosub initialisation
if arret%=1 then terminate caption 2,"Nouvelle partie" : on_click 2, nouvelle_partie return
' --------------------------------------------------- INITIALISATION DU JEU --------------------------------------------------- initialisation: if object_exists(10)=1 2D_TARGET_IS 0 delete 10 end_if
' on affiche les cases vides des 10 tours + cases des pions noirs et rouges picture 10 : left 10,0 : top 10,90 : width 10,600 : height 10,580 : color 10,0,0,0 2D_TARGET_IS 10 for y%=1 to 10 for x%=1 to 6 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 55,55,55 : 2D_PEN_WIDTH 3 : 2d_circle x%*50 + 30,580 - y%* 50,20 : 2d_circle x%*30+400,580 - y%*50,10 next x% next y% tirage$=""
' calcul du tirage aléatoire de la combinaison a trouver (tirage$) couleur=chiffre de 1 a 8 ou 0 si pas de pions / exemple : tirage$="123456" repeat choix: choix$=str$(int(RND(9))) for n%=1 to len(tirage$) if mid$(tirage$,n%,1)=choix$ if option%(2)=1 choix$="-" end_if end_if next n% if choix$="-" or (choix$="0" and option%(3)=1) goto choix end_if tirage$=tirage$+choix$ until len(tirage$)=6 return
' --------------------------------------------------- CHOIX DES COULEURS --------------------------------------------------- selection_couleur: 2D_TARGET_IS 10 : delete 40 2D_FILL_COLOR coulr%,coulv%,coulb% : 2D_PEN_WIDTH 3 : 2d_circle selection%*50+30,580-(tour%*50),20 return
' --------------------------------------------------- OPTIONS --------------------------------------------------- Options: show 30 : inactive 3 : inactive 4 return
' --------------------------------------------------- SELECTION DES OPTIONS --------------------------------------------------- select_option_10: option%(1)=0 return
select_option_11: option%(1)=1 return
select_option_20: option%(2)=0 return
select_option_21: option%(2)=1 return
select_option_30: option%(3)=0 return
select_option_31: option%(3)=1 return
' --------------------------------------------------- REGLES --------------------------------------------------- Regles: show 20 : caption 20,"Régles" : inactive 3 : inactive 4 texte$=""+CHR$(10) texte$=texte$+" REGLES DU JEU"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz dans les années 1970."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRESENTATION"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il se présente généralement sous la forme d'un plateau perforé de 10 rangées de quatre trous pouvant accueillir des pions de couleurs."+CHR$(10) texte$=texte$+" Le nombre de pions de couleurs différentes est de 8 et les 8 couleurs sont généralement : rouge, jaune, vert, bleu, orange, blanc, violet, fuchsia."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il y a également des pions blancs et rouges (ou noirs) utilisés pour donner des indications à chaque étape du jeu."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il existe de nombreuses variantes suivant le nombre de couleurs, de rangées ou de trous."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRINCIPE"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Un joueur commence par placer son choix de pions sans qu'ils soient vus de l'autre joueur"+CHR$(10) texte$=texte$+" à l'arrière d'un cache qui les masquera à la vue de celui-ci jusqu'à la fin de la manche."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur qui n'a pas sélectionné les pions doit trouver quels sont les quatre pions, c'est-à-dire leurs couleurs et positions."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Pour cela, à chaque tour, le joueur doit se servir de pions pour remplir une rangée selon l'idée qu'il se fait des pions dissimulés."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Une fois les pions placés, l'autre joueur indique :"+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur bien placés en utilisant le même nombre de pions rouges ; "+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur, mais mal placés, avec les pions blancs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+"Il arrive donc surtout en début de partie qu'il ne fasse rien concrètement et qu'il n'ait à dire qu'aucun pion ne correspond, en couleur ou en couleur et position."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" La tactique du joueur actif consiste à sélectionner en fonction des coups précédents, couleurs et positions,"+CHR$(10) texte$=texte$+" de manière à obtenir le maximum d'informations de la réponse du partenaire puisque le nombre de propositions est limité par le nombre de rangées de trous du jeu."+CHR$(10) texte$=texte$+" Dans la plupart des cas, il s'efforce de se rapprocher le plus possible de la solution, compte-tenu des réponses précédentes,"+CHR$(10) texte$=texte$+" mais il peut aussi former une combinaison dans le seul but de vérifier une partie des conclusions des coups précédents"+CHR$(10) texte$=texte$+" et de faire en conséquence la proposition la plus propice à la déduction d'une nouvelle information."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur gagne cette manche s'il donne la bonne combinaison de pions sur la dernière rangée ou avant."+CHR$(10) texte$=texte$+" Dans tous les cas, c'est à son tour de choisir les pions à découvrir."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" VARIANTES"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Selon le niveau des joueurs, un même jeu peut être rendu plus difficile en autorisant plusieurs pions"+CHR$(10) texte$=texte$+" de la même couleur, voire en autorisant l'absence d'un pion ou de plusieurs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Sources WIKIPEDIA - http://fr.wikipedia.org/wiki/Mastermind"+CHR$(10) caption 21,texte$ return
recommence: arret%=0 retour%=1 return
boutton: hide 20 : hide 30 : active 3 : active 4 : active 5 return
erreur: if error_number=67 if clicked(2)=1 caption 2,"Nouvelle partie" on_click 2, nouvelle_partie arret%=0 : retour%=1 end_if if clicked(5)=1 arret%=1 : retour%=0 end_if end_if return
quitter: terminate
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 18:33 | |
| Il y a un minibug... (je sais on te la fait souvent ...) Quand la partie est finie => Il faut rechanger l'étiquette du menu "Arreter" => "Jouer" Un autre minibug est l'affichage des positions erronées quand il y a plusieurs fois les même couleurs Si j'ai la bonne combinaison qui est Vert-Violet-Rouge-Vert-Vert-Rose Si je rentre Vert-Violet-Rouge-Rose-Rose-Rose, j'ai 4 pions bien placés et il me manque 2 verts, je devrais donc avoir 4 points rouges, mais en fait, il m'affiche 4 rouges et 2 blancs ... Il y a donc bien minibug .... et c'est normal car ton test était adapté à la couleur unique mais ne tient pas compte actuellement du nombre de couleur déjà joué (je sais ce n'est pas clair) On regarde juste dans la chaine 'proposition$' si le pion traité est dans la chaine 'tirage$' hors ça ne suffit pas, il faut regarder combien de fois elle y est ... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 19:01 | |
| pour la ligne 140 çà donne une idée de faire des niveaux en donnant la couleur du pion qui est en bonne position.... On peut aussi tricher moins: - Code:
-
message "pion(s) de bien place(s) : "+str$(position%)+chr$(10)+"pion(s) de mal plac(e)s : "+str$(existe%)+chr$(10)+"Proposition : "+proposition$+chr$(10)+"Tirage : "+left$(tirage$,2)
A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 19:05 | |
| salut Jicehel
Je n'ai pas bien compris ton probleme... mais as tu pris la derniere version que j'ai posté car j'ai modifié la maniere de calculer les pions rouges et blancs. quant au menu je l'ai aussi corrigé.
En tout cas merci a tous pour l'interet que vous portez a mon programme.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 5 Aoû 2012 - 19:31 | |
| | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 19:34 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 5 Aoû 2012 - 19:37 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 19:38 | |
| Oui, mais voici une démo du bug La bonne combinaison est: Jaune-Rose-Rose-Rouge-Rose-Rose Je joue: Jaune-Orange-Orange-Rouge-Rose-Rose Je devrais avoir 4 points rouges Le jeu affiche: 4 points rouges et 2 blancs =>Il y a donc bien un minibug... Il voit dans la combinaison qu'il y a un rose quand il test la position 2, il met un pion blanc Il voit quand il test la position 3 qu'il y a un rose ailleurs => pion blanc Quand il teste la position 5, il voit qu'il y en a un en position 5 => pion rouge Il teste la position 6, il y a un pion bien placé => pion rouge | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Dim 5 Aoû 2012 - 20:48 | |
| c'est vrai Jicehel, tu as raison ! voici le correctif : - Code:
-
' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MASTERMIND >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MiniBug - JUILLET 2012 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' --------------------------------------------------- INITIALISATION VARIABLES ET LABELS --------------------------------------------------- dim x%,y%,r%,n%,coul%,coulr%,coulv%,coulb%,couleur%(9,3),selection%,proposition$,tour%,choix$,tirage$,arret%,retour%,texte$,existe%,position%,option%(3),existe_pion%,sel_pro$,sel_tir$ label Nouvelle_partie,Options,Regles,quitter,recommence,choix,boutton,initialisation,selection_couleur,erreur label select_option_10,select_option_11,select_option_20,select_option_21,select_option_30,select_option_31 data 187,11,11,255,255,0,0,210,0,0,0,200,237,127,16,255,255,255,161,6,132,253,63,146,1,1,1
tour%=1 : arret%=0 : for n%=1 to 3 : option%(n%)=1 : next n%
' --------------------------------------------------- INITIALISATION GRAPHIQUE FENETRES --------------------------------------------------- caption 0,"REFLEXION" : border_small 0 : left 0,400 : color 0,0,0,0 : width 0,640 : height 0,730 alpha 9 : font_color 9,255,255,255 : left 9,105 : top 9,5 : width 9,400 : height 9,50 : FONT_NAME 9,"@FangSong" : FONT_SIZE 9,60 : caption 9,"MASTERMIND" form 20 : border_small 20 : color 20,100,100,100 : left 20,200 : top 20,50 : width 20,1005 : height 20,640 alpha 21 :parent 21,20 : color 21,0,0,0 : font_color 21,255,255,255 : left 21,8 : top 21,8 : width 21,567 : height 21,313 : FONT_SIZE 21,10 button 22 : caption 22,"Ok" : parent 22,20 : top 22,685 : left 22,870 : width 22,100 : height 22,50 : hide 20 : on_click 22,boutton form 30 : border_small 30 : color 30,100,100,100 : left 30,550 : top 30,300 : width 30,295 : height 30,400 button 31 : caption 31,"Ok" : parent 31,30 : top 31,335 : left 31,200 : hide 30 : on_click 31,boutton container_option 50 : parent 50,30 : left 50,5 : top 50,5 : width 50,270 : height 50,100 : color 50,0,0,0 : font_color 50,255,255,255 : caption 50,"CHOIX DE LA COMBINAISON" option 52 : parent 52,50 : top 52,30 : left 52,10 : width 52,250 : caption 52,"Choisir la combinaison" : on_click 52,select_option_10 : inactive 52 option 53 : parent 53,50 : top 53,60 : left 53,10 : width 53,250 : caption 53,"Deviner la combinaison" : mark_on 53 : on_click 53,select_option_11 container 60 : parent 60,30 : left 60,5 : top 60,115 : width 60,270 : height 60,100 : color 60,0,0,0 : font_color 60,255,255,255 : caption 60,"COULEURS DES PIONS" option 62 : parent 62,60 : top 62,30 : left 62,10 : width 62,250 : caption 62,"Plusieurs pions de la même couleur" : on_click 62,select_option_20 option 63 : parent 63,60 : top 63,60 : left 63,10 : width 63,250 : caption 63,"Un seul pion de la même couleur" : mark_on 63 : on_click 63,select_option_21 container 70 : parent 70,30 : left 70,5 : top 70,225 : width 70,270 : height 70,100 : color 70,0,0,0 : font_color 70,255,255,255 : caption 70,"ABSENCE DES PIONS" option 72 : parent 72,70 : top 72,30 : left 72,10 : width 72,250 : caption 72,"Absence d'un ou de plusieurs pions" : on_click 72,select_option_30 option 73 : parent 73,70 : top 73,60 : left 73,10 : width 73,250 : caption 73,"Présence de tous les pions" : mark_on 73 : on_click 73,select_option_31
' --------------------------------------------------- INITIALISATION MENU --------------------------------------------------- main_menu 1 sub_menu 2 : caption 2,"Nouvelle partie" : parent 2, 1 : on_click 2, nouvelle_partie sub_menu 3 : caption 3,"Options" : parent 3, 1 : on_click 3, Options sub_menu 4 : caption 4,"Régles du jeu" : parent 4, 1 : on_click 4, Regles sub_menu 5 : caption 5,"Quitter" : parent 5, 1 : on_click 5,quitter
on_error_goto erreur
end
' --------------------------------------------------- LANCEMENT PARTIE --------------------------------------------------- Nouvelle_partie: caption 2,"Arreter" for n%=3 to 4 : inactive n% : next n% : hide 20 : hide 30 :arret%=0 :retour%=0 gosub initialisation
' Nombre de tours a effectuer
for tour%=1 to 10 proposition$="" for selection%=1 to 6 if object_exists(40)=1 2D_TARGET_IS 0 delete 40 end_if picture 40 : top 40,595-(tour%*50) : width 40,460-(option%(3)*50) : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 restore
' Affichage de la barre de choix des 8 ou 9 couleurs (9eme etant la case vide)
for x%=1 to 9-option%(3) read couleur%(x%,1): read couleur%(x%,2) : read couleur%(x%,3) 2D_FILL_COLOR couleur%(x%,1),couleur%(x%,2),couleur%(x%,3) : 2D_PEN_WIDTH 3 : 2d_circle x%*50-20,25,20 next x%
r%=0 repeat coulb%=COLOR_PIXEL_BLUE(40,MOUSE_X_LEFT_DOWN(40),25) coulv%=COLOR_PIXEL_GREEN(40,MOUSE_X_LEFT_DOWN(40),25) coulr%=COLOR_PIXEL_RED(40,MOUSE_X_LEFT_DOWN(40),25) coul%=coulr%+coulv%+coulb% if coul%<>360 and coul%<>0
' la selection du joueur se trouve dans proposition$ ' code de 1 a 9 selon la couleur (Somme des RVB) le 9eme correspond au pion absent "0" select coul% case 3 : proposition$=proposition$+"0" case 200 : proposition$=proposition$+"4" case 209 : proposition$=proposition$+"1" case 210 : proposition$=proposition$+"3" case 299 : proposition$=proposition$+"7" case 380 : proposition$=proposition$+"5" case 462 : proposition$=proposition$+"8" case 510 : proposition$=proposition$+"2" case 765 : proposition$=proposition$+"6" end_select
' verifier si la couleur n'est pas deja prise (r%) if instr(left$(proposition$,len(proposition$)-1),right$(proposition$,1))=0 and option%(2)=1 r%=1 else if option%(2)=1 proposition$=left$(proposition$,len(proposition$)-1) r%=0 else r%=1 end_if end_if else r%=0 end_if until r%=1 or arret%=1 or retour%=1 gosub selection_couleur if arret%=1 or retour%=1 then exit_for next selection%
' verifier la position et les couleurs par rapport au tirage existe%=0 : position%=0 : sel_pro$=proposition$ : sel_tir$=tirage$ for n%=1 to 6 if mid$(sel_pro$,n%,1)=mid$(sel_tir$,n%,1) position%=position%+1 sel_tir$=left$(sel_tir$,n%-1)+"m"+right$(sel_tir$,len(sel_tir$)-n%) sel_pro$=left$(sel_pro$,n%-1)+"M"+right$(sel_pro$,len(sel_pro$)-n%) end_if for x%=1 to 6 if mid$(sel_tir$,n%,1)=mid$(sel_pro$,x%,1) existe%=existe%+1 sel_tir$=left$(sel_tir$,n%-1)+"d"+right$(sel_tir$,len(sel_tir$)-n%) sel_pro$=left$(sel_pro$,x%-1)+"D"+right$(sel_pro$,len(sel_pro$)-x%) end_if next x% next n%
' afficher les pions rouges et noirs pour savoir si la combinaison est bonne if position%<>0 for n%=1 to position% 2D_FILL_COLOR 187,11,11 : 2D_PEN_WIDTH 3 : 2d_circle n%*30+400,580-(tour%*50),10 next n% end_if if existe%<>0 for n%=position%+1 to position%+existe% 2D_FILL_COLOR 255,255,255 : 2D_PEN_WIDTH 3 : 2d_circle n%*30+400,580-(tour%*50),10 next n% end_if ' pour le debogage on affiche cette ligne - elle donne le resultats des pions noirs et rouges et le tirage rem message "pion(s) de bien place(s) : "+str$(position%)+chr$(10)+"pion(s) de mal plac(e)s : "+str$(existe%)+chr$(10)+"Proposition : "+sel_pro$+chr$(10)+"Tirage : "+sel_tir$+chr$(10)+"Proposition : "+proposition$+chr$(10)+"Tirage : "+tirage$
' si on a gagné on sort... if position%=6 or arret%=1 or retour%=1 then exit_for next tour%
' on affichage le resultat si gagné ou perdu picture 40 : top 40,90 : left 40,100 : width 40,410 : height 40,50 : color 40,120,120,120 2D_TARGET_IS 40 for x%=1 to 6 2D_FILL_COLOR couleur%(val(mid$(tirage$,x%,1)),1),couleur%(val(mid$(tirage$,x%,1)),2),couleur%(val(mid$(tirage$,x%,1)),3) 2D_PEN_WIDTH 3 : 2d_circle x%*70-40,25,20 next x% if position%=6 message "BRAVO ! vous avez gagné en "+str$(tour%)+" tours." hide 40 : 2D_TARGET_IS 0 : delete 40 else message "DOMMAGE ! vous y étiez presque..." end_if
' Et ca repart !
for n%=2 to 4 : active n% : next n% gosub initialisation
if arret%=1 then terminate caption 2,"Nouvelle partie" : on_click 2, nouvelle_partie return
' --------------------------------------------------- INITIALISATION DU JEU --------------------------------------------------- initialisation: if object_exists(10)=1 2D_TARGET_IS 0 delete 10 end_if
' on affiche les cases vides des 10 tours + cases des pions noirs et rouges picture 10 : left 10,0 : top 10,90 : width 10,600 : height 10,580 : color 10,0,0,0 2D_TARGET_IS 10 for y%=1 to 10 for x%=1 to 6 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 55,55,55 : 2D_PEN_WIDTH 3 : 2d_circle x%*50 + 30,580 - y%* 50,20 : 2d_circle x%*30+400,580 - y%*50,10 next x% next y% tirage$=""
' calcul du tirage aléatoire de la combinaison a trouver (tirage$) couleur=chiffre de 1 a 8 ou 0 si pas de pions / exemple : tirage$="123456" repeat choix: choix$=str$(int(RND(9))) for n%=1 to len(tirage$) if mid$(tirage$,n%,1)=choix$ if option%(2)=1 choix$="-" end_if end_if next n% if choix$="-" or (choix$="0" and option%(3)=1) goto choix end_if tirage$=tirage$+choix$ until len(tirage$)=6 return
' --------------------------------------------------- CHOIX DES COULEURS --------------------------------------------------- selection_couleur: 2D_TARGET_IS 10 : delete 40 2D_FILL_COLOR coulr%,coulv%,coulb% : 2D_PEN_WIDTH 3 : 2d_circle selection%*50+30,580-(tour%*50),20 return
' --------------------------------------------------- OPTIONS --------------------------------------------------- Options: show 30 : inactive 3 : inactive 4 return
' --------------------------------------------------- SELECTION DES OPTIONS --------------------------------------------------- select_option_10: option%(1)=0 return
select_option_11: option%(1)=1 return
select_option_20: option%(2)=0 return
select_option_21: option%(2)=1 return
select_option_30: option%(3)=0 return
select_option_31: option%(3)=1 return
' --------------------------------------------------- REGLES --------------------------------------------------- Regles: show 20 : caption 20,"Régles" : inactive 3 : inactive 4 texte$=""+CHR$(10) texte$=texte$+" REGLES DU JEU"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz dans les années 1970."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRESENTATION"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il se présente généralement sous la forme d'un plateau perforé de 10 rangées de quatre trous pouvant accueillir des pions de couleurs."+CHR$(10) texte$=texte$+" Le nombre de pions de couleurs différentes est de 8 et les 8 couleurs sont généralement : rouge, jaune, vert, bleu, orange, blanc, violet, fuchsia."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il y a également des pions blancs et rouges (ou noirs) utilisés pour donner des indications à chaque étape du jeu."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Il existe de nombreuses variantes suivant le nombre de couleurs, de rangées ou de trous."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" PRINCIPE"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Un joueur commence par placer son choix de pions sans qu'ils soient vus de l'autre joueur"+CHR$(10) texte$=texte$+" à l'arrière d'un cache qui les masquera à la vue de celui-ci jusqu'à la fin de la manche."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur qui n'a pas sélectionné les pions doit trouver quels sont les quatre pions, c'est-à-dire leurs couleurs et positions."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Pour cela, à chaque tour, le joueur doit se servir de pions pour remplir une rangée selon l'idée qu'il se fait des pions dissimulés."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Une fois les pions placés, l'autre joueur indique :"+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur bien placés en utilisant le même nombre de pions rouges ; "+CHR$(10) texte$=texte$+" le nombre de pions de la bonne couleur, mais mal placés, avec les pions blancs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+"Il arrive donc surtout en début de partie qu'il ne fasse rien concrètement et qu'il n'ait à dire qu'aucun pion ne correspond, en couleur ou en couleur et position."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" La tactique du joueur actif consiste à sélectionner en fonction des coups précédents, couleurs et positions,"+CHR$(10) texte$=texte$+" de manière à obtenir le maximum d'informations de la réponse du partenaire puisque le nombre de propositions est limité par le nombre de rangées de trous du jeu."+CHR$(10) texte$=texte$+" Dans la plupart des cas, il s'efforce de se rapprocher le plus possible de la solution, compte-tenu des réponses précédentes,"+CHR$(10) texte$=texte$+" mais il peut aussi former une combinaison dans le seul but de vérifier une partie des conclusions des coups précédents"+CHR$(10) texte$=texte$+" et de faire en conséquence la proposition la plus propice à la déduction d'une nouvelle information."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Le joueur gagne cette manche s'il donne la bonne combinaison de pions sur la dernière rangée ou avant."+CHR$(10) texte$=texte$+" Dans tous les cas, c'est à son tour de choisir les pions à découvrir."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" VARIANTES"+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Selon le niveau des joueurs, un même jeu peut être rendu plus difficile en autorisant plusieurs pions"+CHR$(10) texte$=texte$+" de la même couleur, voire en autorisant l'absence d'un pion ou de plusieurs."+CHR$(10) texte$=texte$+""+CHR$(10) texte$=texte$+" Sources WIKIPEDIA - http://fr.wikipedia.org/wiki/Mastermind"+CHR$(10) caption 21,texte$ return
recommence: arret%=0 retour%=1 return
boutton: hide 20 : hide 30 : active 3 : active 4 : active 5 return
erreur: if error_number=67 if clicked(2)=1 caption 2,"Nouvelle partie" on_click 2, nouvelle_partie arret%=0 : retour%=1 end_if if clicked(5)=1 arret%=1 : retour%=0 end_if end_if return
quitter: terminate
| |
| | | Contenu sponsorisé
| Sujet: Re: Jeu de reflexion : MASTERMIND | |
| |
| | | | Jeu de reflexion : MASTERMIND | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |