Java - Ayuda Codigo Picas y Fijas con STRING!

 
Vista:
sin imagen de perfil

Ayuda Codigo Picas y Fijas con STRING!

Publicado por Edwin Camilo (3 intervenciones) el 31/08/2016 03:49:01
Buenos Dias/Noches a todos, tengo el siguiente problema en mi código hecho en BlueJ, necesito hacer el juego Picas y Fijas pero no con números sino con palabras, osea Strings, la palabra que puse que tienen que adivinar es tigre, ya logre hacer que si ingresa tigre se muestra que adivino la palabra y el numero de fijas, y si ingresa ejemplo "greti" mostrara que hay 5 picas, el problema esta en hacer un ciclo hasta que el usuario adivine la palabra, intente hacerlo en un while(a!=p1) pero queda ciclo infinito ya que si ingreso "tigre" sigue en el ciclo y no se el porque, solo me falta eso hacer que el programa vuelva a preguntar hasta que se adivine la palabra, mostrando picas y fijas.

Si alguien me puede ayudar se lo agradecería.

Saludos

Aquí esta el código en bluej;

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import javax.swing.*;
public class quizs{
 
	public static void main (String [] args){
 
		int F1=0; int F2=0; int F3=0; int F4=0; int F5=0;
		int P1=0; int P2=0; int P3=0; int P4=0; int P5=0;
		int Pi=0;
		int Fi=0;
 
		String p1="tigre";
 
		JOptionPane.showMessageDialog(null,"la palabra que tiene que adivinar tiene 5 digitos");
 
		String a=JOptionPane.showInputDialog("Ingrese una palabra de 5 digitos");
		while(a.length()>5 || a.length()<5) {
			JOptionPane.showMessageDialog(null,"Incorrecto");
			a=JOptionPane.showInputDialog("Ingrese una palabra de 5 digitos");
 
		}
 
		if(a.charAt(0)==p1.charAt(0)){
			F1++;
		}
		if(a.charAt(1)==p1.charAt(1)){
			F2++;
		}
		if(a.charAt(2)==p1.charAt(2)){
			F3++;
		}
		if(a.charAt(3)==p1.charAt(3)){
			F4++;
		}
		if(a.charAt(4)==p1.charAt(4)){
			F5++;
		}
		Fi=F1+F2+F3+F4+F5;
 
		if(Fi==5){
			JOptionPane.showMessageDialog(null,"Usted adivino la palabra");
			JOptionPane.showMessageDialog(null,"Numero de picas: "+  Pi + " Numero de fijas: " + Fi);
			System.exit(0);
 
		}
 
		for ( int x = 0; x < a.length(); x++) {
 
			if(a.charAt(x)=='t'){
				P1++;
				if(F1==1){
					P1=0;
 
				}
			}
			if(a.charAt(x)=='i'){
				P2++;
				if(F2==1){
					P2=0;
 
				}
			}
			if(a.charAt(x)=='g'){
				P3++;
				if(F3==1){
					P3=0;
 
				}
			}
			if(a.charAt(x)=='r'){
				P4++;
				if(F4==1){
					P4=0;
 
				}
			}
			if(a.charAt(x)=='e'){
				P5++;
				if(F5==1){
					P5=0;
 
				}
			}
			Pi=P1+P2+P3+P4+P5;
 
		}
		JOptionPane.showMessageDialog(null,"Numero de picas: "+  Pi + " Numero de fijas: " + Fi);
 
	}
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda Codigo Picas y Fijas con STRING!

Publicado por ctmy (47 intervenciones) el 02/09/2016 08:04:28
No sabia que este juego existia y solo por curiosidad intente hacerlo... a mi manera. Modificalo o mejoralo a tu manera.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.util.Scanner;
public class PicasFijas{
 
  public static void main(String[] args){
    String picas = "";
    String fijas = "";
 
   //La palabra que se desea adivinar
    String word = "tigre";
 
    Scanner sc = new Scanner(System.in);
 
    //controla cuando salimos del loop
    boolean repeat = false;
    do{
      System.out.print("Ingresa la palabra:");
      String input = sc.nextLine();
 
      //verificar si las palabras tiene la misma cantidad de letras
      if(input.length() == word.length()){
 
        //extraer los valores
         picas = getPicas(word, input);
         fijas = getFijas(word, input);
 
         //imprimir resultados por el momento
         System.out.println("Las fijas son " + fijas + "=" + fijas.length() + " las picas son: " + picas + "=" + picas.length());
 
 
         int f = fijas.length();
         int w = word.length();
 
         //para ganar, las fijas tiene que tener las misma cantidad de letras
         //de lo contrario seguir preguntando 
         if(f < w){
           repeat = true;
         //si adivino para el loop e imprimir la palabra.
         }else{
           repeat = false;
           System.out.println("Adivinaste! La palabra es " + input);
         }
      }else{
        repeat = true;
      }
    }while(repeat); //repetir mientras repeat sea true
 
  }
 
  static String getFijas(String s, String input){
    StringBuilder temp = new StringBuilder();
    for(int i = 0; i < s.length(); ++i){
      if(s.charAt(i) == input.charAt(i))
        temp.append(input.charAt(i));
    }
 
    String result = new String(temp);
    return result;
  }
 
  static String getPicas(String s, String input){
    StringBuilder temp = new StringBuilder();
    for(int i = 0; i < s.length(); ++i){
      if(isSimilar(s, input.charAt(i), i)){
         temp.append(input.charAt(i));
      }
    }
    String result = new String(temp);
    return result;
  }
 
  static boolean isSimilar(String s, char c, int index){
    for(int i = 0; i < s.length(); ++i){
      if(c == s.charAt(i) && i != index){
        return true;
      }
     }
    return false;
  }
}

ctmy-dev.appspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar