Comparando chars
hola, estoy haciendo un breve ejemplo utilizando la clase String y algunas propiedades de la clase Arrays.
Este es el codigo,
import java.util.*;
class Ahorcado{
//JavaGuide xacadesigners www.inginfo.8k.com
//Atributos
String frasesjoin[] = {"miguelstrogoff","bastianbaltasarbux","sherlockholmes","fujur","atreyu"};
String frasesprint[] = {"Miguel Strogoff","Bastian Baltasar Bux","Sherlock Holmes","Fujur","Atreyu"};
String temp;
char letras[];
int errores, numer, indexletras;
boolean enable;
//Metodos
void setFrase(){
temp = frasesjoin[(int)Math.ceil(Math.random()*frasesjoin.length-1)];
System.out.println(temp+" "+temp.length());
letras = new char[temp.length()];
System.out.println(letras.length);
setIntVal();
numer = (int)(temp.length()-1)/2;
}
void setIntVal(){
for(int i=0;i<letras.length;i++)
letras[i]='@';
}
void GameStatus(){
if(full()){
System.out.println("Ganaste !!!");
enable = true;
}
if(errores < numer)
System.out.println("Llevas ="+errores+" errores");
else{
System.out.println("Ahorcado");
enable = true;
}
}
void Checkchar(char ch){
int cont = 0;
for(int i=0;i<temp.length();i++)
if(temp.charAt(i)==ch)cont++;
//System.out.println("Entro info ="+temp.charAt(i)+" "+cont);
if(cont != 0){
Arrays.sort(letras);
//letras debe estar ordenado para usar binarysearch
if(Arrays.binarySearch(letras,ch) >= 0)
System.out.println("La letra "+ch+" ya la dijiste");
else{
GameStatus();
while(cont != 0 && indexletras<letras.length){
System.out.print(indexletras);
letras[indexletras]=ch;
indexletras++;
cont--;
}
}
}
else{
errores++;
GameStatus();
}
}
void giveMeLetters(){
System.out.print("Ingresa una letra =");
char ch = ConsoleInput.getChar();
if(Character.isLetter(ch))Checkchar(ch);
}
boolean GameOver(){
return enable;
}
boolean full(){
boolean state = true;
for(int i=0;i<letras.length;i++){
//if(!(Character.isLetter(letras[i]))) state = false;
if(letras[i]=='@')
state = false; //no esta lleno
}
return state;
}
public static void main(String[] args){
Ahorcado horca= new Ahorcado();//invocamos el constructor por defecto
horca.setFrase();
while(!horca.GameOver())
horca.giveMeLetters();
}//fin main
}//Fin de la clase
El problema es que cuando hago binary search a veces no me funciona, si alguien ve el error me dicen.
Este es el codigo,
import java.util.*;
class Ahorcado{
//JavaGuide xacadesigners www.inginfo.8k.com
//Atributos
String frasesjoin[] = {"miguelstrogoff","bastianbaltasarbux","sherlockholmes","fujur","atreyu"};
String frasesprint[] = {"Miguel Strogoff","Bastian Baltasar Bux","Sherlock Holmes","Fujur","Atreyu"};
String temp;
char letras[];
int errores, numer, indexletras;
boolean enable;
//Metodos
void setFrase(){
temp = frasesjoin[(int)Math.ceil(Math.random()*frasesjoin.length-1)];
System.out.println(temp+" "+temp.length());
letras = new char[temp.length()];
System.out.println(letras.length);
setIntVal();
numer = (int)(temp.length()-1)/2;
}
void setIntVal(){
for(int i=0;i<letras.length;i++)
letras[i]='@';
}
void GameStatus(){
if(full()){
System.out.println("Ganaste !!!");
enable = true;
}
if(errores < numer)
System.out.println("Llevas ="+errores+" errores");
else{
System.out.println("Ahorcado");
enable = true;
}
}
void Checkchar(char ch){
int cont = 0;
for(int i=0;i<temp.length();i++)
if(temp.charAt(i)==ch)cont++;
//System.out.println("Entro info ="+temp.charAt(i)+" "+cont);
if(cont != 0){
Arrays.sort(letras);
//letras debe estar ordenado para usar binarysearch
if(Arrays.binarySearch(letras,ch) >= 0)
System.out.println("La letra "+ch+" ya la dijiste");
else{
GameStatus();
while(cont != 0 && indexletras<letras.length){
System.out.print(indexletras);
letras[indexletras]=ch;
indexletras++;
cont--;
}
}
}
else{
errores++;
GameStatus();
}
}
void giveMeLetters(){
System.out.print("Ingresa una letra =");
char ch = ConsoleInput.getChar();
if(Character.isLetter(ch))Checkchar(ch);
}
boolean GameOver(){
return enable;
}
boolean full(){
boolean state = true;
for(int i=0;i<letras.length;i++){
//if(!(Character.isLetter(letras[i]))) state = false;
if(letras[i]=='@')
state = false; //no esta lleno
}
return state;
}
public static void main(String[] args){
Ahorcado horca= new Ahorcado();//invocamos el constructor por defecto
horca.setFrase();
while(!horca.GameOver())
horca.giveMeLetters();
}//fin main
}//Fin de la clase
El problema es que cuando hago binary search a veces no me funciona, si alguien ve el error me dicen.
