Mastermind

Description

Jeu de mastermind avec ajout de resolution, base sur un code original de Nightman150 publié en 2004: http://www.javafr.com/codes/JEU-MASTERMIND-COMPLET-AVEC-GRAPHIQUES_22777.aspx.

Source / Exemple :


import java.*;
import java.lang.*;
import java.io.FileOutputStream;
import java.io.*;

class SEssai {
   public int nNbNoirs;
   public int nNbBlancs;
   public int[] couleurs=new int[50];
}

class mastermind
{
  public int rd(int nb_couleurs)
  {
  int result=(int)(Math.random()*10);
    if(result<nb_couleurs&&result>=0)
    {
    return result;
    }
  return rd(nb_couleurs);
  }
    
  public int random(int nb_couleurs)
  {
  int i=new mastermind().rd(nb_couleurs);
  return i;
  }
  
  public int evaluation(int []pEssai,int []pCombinaison,int nb_pions,int nb_couleurs)
  {
    int[][] couleur=new int[50][2];
    int c;
    int nResultat;
    for(c=0;c<nb_couleurs;c++)
    {
    couleur[c][0]=couleur[c][1]=0;
    }
    for(c=0;c<nb_pions;c++)
    {
    couleur[pEssai[c]][0]++;
    couleur[pCombinaison[c]][1]++;
    }
    nResultat=0;
    for(c=0;c<nb_couleurs;c++)
    {
     nResultat+=couleur[c][(couleur[c][0]>couleur[c][1] ? 1 : 0)];
    }
    for(c=0;c<nb_pions;c++)
    {
     nResultat+=(pEssai[c]==pCombinaison[c] ? 1 : 0)*100;
    }
    return nResultat-nResultat/100;
  }
  
  public int recherche(int []couleurs,int profondeur,int[][]essais,int nNbEssais,int []pCombinaison,int nb_pions,int nb_couleurs)
  {
    int essai;
    int nNbBlancs,nNbNoirs;
    int c;
	
	if(profondeur==nb_pions)
	{
		for(essai=0;essai<nNbEssais;essai++)
		{
		nNbNoirs=new mastermind().evaluation(couleurs,essais[essai],nb_pions,nb_couleurs);
		nNbBlancs=nNbNoirs%100;
		nNbNoirs/=100;
   
			if(!(nNbBlancs==evaluation(essais[essai],pCombinaison,nb_pions,nb_couleurs)%100 &&  nNbNoirs==evaluation(essais[essai],pCombinaison,nb_pions,nb_couleurs)/100)) 
			{
			break;
			}
		}
	return(essai<nNbEssais ? 0 : 1);
	}
	
	for(c=0;c<nb_couleurs;c++)
	{
	couleurs[profondeur]=c;
		if(new mastermind().recherche(couleurs,profondeur+1,essais,nNbEssais,pCombinaison,nb_pions,nb_couleurs)==1) 
		{
		return 1;	
		}
    }
    return 0;
  }
  
  public String convertn2c(int number)
  {
  String str="";
  switch (number) {
            case 0:  str="Rouge"; break;
            case 1:  str="Vert"; break;
            case 2:  str="Jaune"; break;
            case 3:  str="Orange"; break;
            case 4:  str="Bleu"; break;
            case 5:  str="Violet"; break;
            
            default: System.out.println("Invalid color");break;
        }
return str;
  }
  
  public int[][] solve(int colors,int pieces,int []solution)
  {
  int [][]result=new int[10][4];
    try
    {
      /*if (args.length <3 || args.length >3)
      {
      System.err.println("Usage: java mastermind couleurs pions experiences");
      System.exit(1);
      }

  • /
//k: nombre d'experiences //System.out.print(colors+" couleurs " +pieces+" pions \r\n\r\n"); //for(int k=0;k<pieces;k++) //{ //int[] solution=new int[pieces]; //System.out.print("Combinaison No " + k + ": "); //j: nombre de pions for(int j=0;j<pieces;j++) { //solution[j]= new mastermind().random(colors); //System.out.print(solution[j]+ " "); //System.out.print(new mastermind().convertn2c(solution[j])+ " "); } //System.out.println("\r\n"); int bFini=0; int nNbEssais=0; int i; SEssai pCour=new SEssai(); int [][]pEssais=new int[100][pieces]; for(i=0;i<pieces;i++) { pEssais[0][i]=0; } while(bFini==0) { pCour.couleurs=pEssais[nNbEssais]; nNbEssais++; new mastermind().recherche(pCour.couleurs,0,pEssais,nNbEssais-1,solution,pieces,colors); pCour.nNbNoirs=new mastermind().evaluation(pCour.couleurs,solution,pieces,colors); pCour.nNbBlancs=pCour.nNbNoirs%100; pCour.nNbNoirs/=100; for(int c=0;c<pieces;c++) { //System.out.print(pCour.couleurs[c]); //System.out.print(new mastermind().convertn2c(pCour.couleurs[c])+" "); result[nNbEssais][c]=pCour.couleurs[c]; } //System.out.print(" Noirs: "+pCour.nNbNoirs+" Blancs: "+pCour.nNbBlancs+"\r\n"); //System.out.print("\r\n"); bFini=(pCour.nNbNoirs==pieces ? 1 : 0); } System.out.print("Mastermind resolu en "+ nNbEssais+" coups\n\n"); //System.out.println(new mastermind().convertn2c(1999)); //} } catch(Exception e) { e.printStackTrace(); } return result; } }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (bothan)