14 octubre 2013

master mind

/**
 *
 * Fundamentos de Programacion 2: CuatroEsferas.java
 *
 */



class CuatroEsferas {
static  int MENOS =0;
   // Datos miembro
   private Esfera esfera1;
   private Esfera esfera2;
   private Esfera esfera3;
   private Esfera esfera4;

   // Constructores
 
   public CuatroEsferas() {
     esfera1 = new Esfera('R');
esfera2 = new Esfera('R');
esfera3 = new Esfera('R');
esfera4 = new Esfera('R');
   }

   public CuatroEsferas(CuatroEsferas cuatroEsferas) {
      esfera1 =  new Esfera(cuatroEsferas.esfera1);
      esfera2 =  new Esfera(cuatroEsferas.esfera2);
      esfera3 =  new Esfera(cuatroEsferas.esfera3);
      esfera4 =  new Esfera(cuatroEsferas.esfera4);
   }

   public void CuatroPegs(Esfera e1, Esfera e2, Esfera e3, Esfera e4){
      esfera1 = e1;
      esfera2 = e2;
      esfera3 = e3;
      esfera4 = e4;
   }

//-------------------------------------------------
//      Metodos publicos
//          void setColor ( int, char );
//          char getColor ( int );
//          String toString ( );
//          int contandotPseudoHits ( CuastroEsferas );
//          int contandotHits ( CuatroEsferas );
//------------------------------------------------
 
   // Cambia el color del peg seleccionado
   public void setColor (int queColor, char elColor) {
 
       switch (queColor) {
         case 1: esfera1.setColor(elColor);
          break;
         case 2: esfera2.setColor(elColor);
        break;
         case 3: esfera3.setColor(elColor);
        break;
         case 4: esfera4.setColor(elColor);
        break;
         default: System.err.println("No hay tal color!");
                  System.exit(1);
       }
   }




   // Retorna el color de la esfera seleccionada
   public char getColor (int queColor) {
       char color = ' ';
       switch (queColor) {
         case 1: color = esfera1.getColor();
break;
         case 2: color = esfera2.getColor();
break;
         case 3: color = esfera3.getColor();
break;
         case 4: color = esfera4.getColor();
break;
         default: System.err.println("No hay tal color!g");
                  System.exit(2);
       }
       return color;
   }

   // Retorna la representacion  string del objeto CuatroEsferas

   public String toString (){
       // este es un stub (recuerde que un stub es un metodo incompleto)
       return esfera1.getColor()+" "+esfera2.getColor()+" "+esfera3.getColor()+" "+esfera4.getColor();
   }



   // Retorna el numero de pseudoHits entre el objeto y la suposición

   public int contandoPseudoHits (CuatroEsferas esferaAdivina) {
       // este es un stub (recuerde que un stub es un metodo incompleto)
 
 
  int phit=0,i=0,j=0,C=4;
 // int i=0,j=0;
  //int C=4;
  char f[]={getColor(1),getColor(2),getColor(3),getColor(4)};
 
  for(i=0;i   {
  if(f[i]==esferaAdivina.getColor(i+1))
  {
  f[i]='*';
  esferaAdivina.setColor(i+1, '*');
  }
  }
 
  for(i=1;i   {
  for(j=1;j   {
  if(f[i-1]==esferaAdivina.getColor(j)&&f[i-1]!='*')
  {
  phit++;
  esferaAdivina.setColor(j, '*');
 break;
  }
  }
  }


       return phit;
     
     
   }


   // Retorna el numero de hits entre el objeto y la suposicion

   public int contandoHits (CuatroEsferas esferaAdivina) {
       // este es un stub (recuerde que un stub es un metodo incompleto)
 
  int hit=0,i=0,C=4;
 
  for(i=1; i   {
  if(esferaAdivina.getColor(i)==getColor(i))
  {
  hit++;
      }
  }
 
       return hit;
   }

}



     
       //////////////////////////////////////////////////////////////////7

/**
 * Definicion de los colores
 * Esta clase esta completa y NO DEBE SER MODIFICADA
 */

class Esfera {
 
   // Dato miembro
   private char color;

   // Constructores
   public Esfera() {
      color = 'R';
   }

   public Esfera(Esfera e) {
      color = e.getColor();
   }

   public Esfera(char c) {
      color = c;
   }

//-------------------------------------------------
//      Metodos Publicos:
//          void setColor ( char );
//          char getColor ( );
//          String toString ( );
//------------------------------------------------
 
   // Cambia el color de la esfera
   public void setColor (char c) {
       color = c;
   }

   // Retorna el color de la esfera
   public char getColor () {
       return color;
   }

   // Retorna la representacion  string del ojbeto Esfera
   public String toString () {
       return "" + getColor();
   }

}


////////////////////////////////////////////////////////////////////////

import java.text.DecimalFormat;
import java.util.Scanner;


public class MenteMestra {

public static void main(String[] arg)
{
/** df 01,02...10
* hit guarda hit
* cdx=cadenax=cadena ingresada
* cd=cadena clave
* cdg=cadena guardada (ingresada)
* OkSize para verificar correcto numero de char
* EsferasIni para inicialiar cdx con valores ingresados (cdg)
*/
DecimalFormat df = new DecimalFormat("00");

int i=0,hit;
String cdg="";
CuatroEsferas cdx = new CuatroEsferas();
CuatroEsferas cd = new CuatroEsferas();

cd.setColor(1,'M');
cd.setColor(2,'L');
cd.setColor(3,'A');
cd.setColor(4,'R');


System.out.println("\t\tCodgo secreto: "+cd);
do{

   cdg=OkSize(cdg);
   EsferasIni(cdg,cdx);
   hit=cd.contandoHits(cdx);

   System.out.println("\t\tSuposicion #"+df.format((i+1))+": "+cdx+"   Hits: "+hit+"; PseudoHits = "+cd.contandoPseudoHits(cdx));

        if(hit==4){

       System.out.print("Felicitaciones! \nEspero que hayas disfrutado el juego. Adios!");
       break;
        }

i++;

}while(i<10 p="">
if(hit!=4)
{
System.out.println();
System.out.println("Lo siento, no lo logró. El código secreto es "+cd);
System.out.println("Espero que hayas disfrutado el juego. Adios!");
}


}


public static String OkSize(String s)
{
Scanner sc=new Scanner(System.in);

do{
System.out.print("Ingrese su suposcion: ");
s=sc.nextLine();

}while(s.length()!=4);

return s;
}


public static CuatroEsferas EsferasIni(String s, CuatroEsferas e4)
{
int i=0;
for(i=0;i {
e4.setColor(i+1, s.charAt(i));
}
return e4;
}

}

   

No hay comentarios: