Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con codigo

Estas en el tema de Ayuda con codigo en el foro de Java en Foros del Web. Hola, Estoy haciendo un programa donde en un array debo esconder una frase y darle opcion al jugador de adivinarla sea entrando letras o palabras ...
  #1 (permalink)  
Antiguo 22/03/2008, 01:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 13
Antigüedad: 16 años, 2 meses
Puntos: 0
Ayuda con codigo

Hola,

Estoy haciendo un programa donde en un array debo esconder una frase y darle opcion al jugador de adivinarla sea entrando letras o palabras (algo asi como ahorcado - hangman). Cada vez que el jugador entra una letra, esta se debe colocar en el sitio(s) correcto(s) o decirle al jugador que la letra o palabra no esta en la frase.

Tengo varios problemas con el codigo. Cuando lo ejecuto me aparece la pantalla pidiendo la entrada de datos pero para que aparezca la letra a veces tengo que teclear dos veces y otras no aparece. No se que estoy haciendo mal. por favor me ayudan con esto. Gracias

Código:
import javax.swing.JOptionPane;
import java.util.Arrays;

public class Hangmantry
{

public static void main(String [ ] args)
{

String phrase = "Life is a field of unlimited possibilities", wordtoguess="------------------------------------------", phrasetoguess, guess="";
int x=0, y=0, c=0;

char[ ] dashes = wordtoguess.toCharArray();
char[ ] compare = phrase.toCharArray();


do{

phrasetoguess=JOptionPane.showInputDialog("word or letter?");

if (phrasetoguess.equalsIgnoreCase("phrase"))

{guess=JOptionPane.showInputDialog("Guess the phrase");

if (guess.equalsIgnoreCase(phrase))

System.out.println("Life is a field of unlimited possibilities\nYou got it!");}

else {
c=0;
x=0;
y++;

String player=JOptionPane.showInputDialog("Enter a letter or phrase");

do{
if (player.charAt(0)==phrase.charAt(x))
{
dashes[x]=player.charAt(0);
c++;
}
x++;
}while((player.charAt(0)!=phrase.charAt(x-1))&&(x!=42));

for (int z=0; z<42; z++)
{System.out.print(dashes[z]);}
System.out.println();
}
}while((y<10)&&(!Arrays.equals(dashes, compare))&&(!guess.equalsIgnoreCase(phrase)));

System.exit(0);
}
}
  #2 (permalink)  
Antiguo 22/03/2008, 09:56
 
Fecha de Ingreso: octubre-2006
Mensajes: 51
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Ayuda con codigo

Suponga los siguientes atributos:

String palabra;
String aciertos;
String errados;

Posteriormente debe verificar si la letra que propuso el usuario existe dentro de la palabra, para ello use el método indexOf

if(palabra.indexOf(letra) >= 0)
aciertos+=letra;
else
errados+=letra;

Luego hay que iterar por las letras de la palabra, si ya acerto con alguna se muestra, en caso contrario se pone algún - o _

for(int i = 0; i < palabra.length(); i++)
{
String l = palabra.substring(i,i+1);
if(aciertos.indexOf(letra) >= 0)
{
System.out.println(" " + letra);
}
else
System.out.println(" _ ");

saludos!!
  #3 (permalink)  
Antiguo 23/03/2008, 23:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 13
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ayuda con codigo

Gracias por tu sugerencia Windoctor.

La implemente (creo que correctamente), pero sinceramente estoy bloqueado. llevo ya varios dias intentado una cosa y otro y pues como veras en el codigo no he ido muy lejos; hasta me siento un poco frustrado con este programa.

He intentado hacer la frase parcialmente escondida (como sugiere el ejercicio), pero no he logrado nada.

Disculpen la negatividad pero estoy totalmente bloqueado.

gracias


Código:
/*SecretPhrase.java*/

import javax.swing.JOptionPane;
import java.util.Arrays;

public class SecretPhrase
{

public static void main(String [ ] args)
{

String palabra = "Life is a field of unlimited possibilities", wordtoguess="------------------------------------------", phrasetoguess;
int x=0, y=0;
String aciertos="";
String errados="";
String letra="";
char[ ] dashes = wordtoguess.toCharArray();
char[ ] compare = palabra.toCharArray();

	do
	{

	phrasetoguess=JOptionPane.showInputDialog("word or letter?");

	if (phrasetoguess.equalsIgnoreCase("palabra"))

	{
	phrasetoguess=JOptionPane.showInputDialog("Guess the phrase");

	if (phrasetoguess.equalsIgnoreCase(palabra))

	System.out.println("Life is a field of unlimited possibilities\nYou got 
        it!\nCongratulations!!!");
	}

	else 
	{

	x=0;
	y++;

	String player=JOptionPane.showInputDialog("Enter a letter or phrase");
	}
	}

	while(palabra != wordtoguess);
	{
	if(palabra.indexOf(letra) >= 0)
	aciertos+=letra;
	else
	errados+=letra;

	for(int i = 0; i < palabra.length(); i++)
	{
	String l = palabra.substring(i,i+1);
	if(aciertos.indexOf(letra) >= 0)
	{
	System.out.println(" " + letra);
	}
	else
	System.out.println(" _ ");
	}
	}
System.exit(0);
	}
}
  #4 (permalink)  
Antiguo 24/03/2008, 23:30
 
Fecha de Ingreso: marzo-2008
Mensajes: 13
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ayuda con codigo

Hola de nuevo. hice algunos cambios pero me presenta un error.

SecretPhrase.java:34: illegal start of expression
}
^
1 error



Código:
/*SecretPhrase.java*/

import javax.swing.JOptionPane;
import java.util.Arrays;

public class SecretPhrase
{

	public static void main(String [ ] args)
	{

	String palabra = "Life is a field of unlimited possibilities",  
                                 wordtoguess="--f-------f------f-u---m-t------------t---",
                                 phrasetoguess;
	int x=0, y=0;
	String aciertos="";
	String errados="";
	String letra="";
	char[ ] dashes = wordtoguess.toCharArray();
	char[ ] compare = palabra.toCharArray();

		do
		{

			phrasetoguess=JOptionPane.showInputDialog("Pick a word or 
                         letter?");

			if (phrasetoguess.equalsIgnoreCase("palabra"))

			{
			phrasetoguess=JOptionPane.showInputDialog("Guess the 
                        phrase");

			if (phrasetoguess.equalsIgnoreCase(palabra))

			System.out.println("Life is a field of unlimited possibilities\nYou got 
                         it!\nCongratulations!!!");
			}

		else 
		{

			x=0;
			y++;

			String player=JOptionPane.showInputDialog("Enter a letter or 
                 phrase");
		}
		
		while(palabra != wordtoguess);
		{
			if(palabra.indexOf(letra) >= 0)
			aciertos+=letra;
		else
			errados+=letra;

		for(int i = 0; i < palabra.length(); i++)
		{
			String l = palabra.substring(i,i+1);
			if(aciertos.indexOf(letra) >= 0)
		{
			System.out.println(" " + letra);
		}
		else
			System.out.println(" _ ");
		}
		}
		}
System.exit(0);
	}
}
  #5 (permalink)  
Antiguo 07/04/2008, 22:57
 
Fecha de Ingreso: marzo-2008
Mensajes: 13
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ayuda con codigo

Programa corriendo. Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:10.