Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Jeu de reflexion : MASTERMIND Lun 6 Aoû 2012 - 8:46 | |
| Voila la réponse a ta demande papydall : possibilité d'annuler les couleurs en cours de selection ! - 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%,annule%,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$="" selection%=0 repeat selection%=selection%+1 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)+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% 2D_FILL_COLOR 20,20,20 : 2d_pen_color 250,250,250 : 2D_PEN_WIDTH 3 : 2d_circle x%*50-20,25,20 2D_LINE x%*50-35,15,x%*50-5,35 : 2D_LINE x%*50-5,15,x%*50-35,35 : rem X1,Y1,X2,Y2 r%=0 : annule%=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 750 : annule%=1 case 60 : annule%=1 case 765 : proposition$=proposition$+"6" end_select
if annule%=0 ' 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 if selection%>1 proposition$=left$(proposition$,len(proposition$)-1) selection%=selection%-1 r%=1 coulr%=55 : coulv%=55 : coulb%=55 else annule%=0 end_if end_if else r%=0 end_if until r%=1 or arret%=1 or retour%=1 gosub selection_couleur if annule%=1 selection%=selection%-1 end_if until selection%=6 or arret%=1 or retour%=1
' 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
| |
|