Juego del ahorcado en Java con más de 1 palabra

  • Autor del tema No Registrado
  • Fecha de inicio
N

No Registrado

Guest
Felices fiestas.

He realizado el siguiente programa pero no hay manera de que acepte dos o más palabras con espacios, ¿alguien sabe cómo hacerlo?

Es un juego del ahorcado de películas y por ejemplo "Mulholland Drive" detecta error si la pongo con espacio...

MUCHAS GRACIAS

Aquí tenéis el código 100% funcional pero sólo admite para adivinar 1 palabra sin espacios.

package eac3;

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class EAC3 {

public static void main(String[] args)throws IOException {
Scanner lector=new Scanner(System.in);
String [] paraules={"seven","mulhollanddrive"};

String paraula=" ";

//Variables globals
int i=0;
int opcio;
int oportunitats=5;
int index=0;

//Lletra introduïda
char lletra=' ';

//Variables booleanes
boolean var=false;
boolean comparar = false;
boolean repetit=false;
boolean primer=false;
boolean sortir=false;

//Estructura do-while. Mentres hi hagi 5 oportunitats
do{
oportunitats=5;
var=false;
repetit=false;
primer=false;
index=0;

System.out.println("JOC DE AHORCADO, ");
System.out.println("Heu de endivinar la paraula");
System.out.println("Hi ha 4 oportunitas per endivinar la paraula");
System.out.println("Al 5 error quedeu penjats");
System.out.println("Alerta si repetiu lletra també es considerarà un error");
System.out.println("Si esteu preperat apreteu Enter");


int aleatorio=(int)((Math.random()*10)*10)/10;
paraula=paraules[aleatorio];


char[]paraula2 = paraula.toCharArray();
char[]guions=new char[paraula2.length];
char[]comprova=new char[15];

for(int j=0; j<guions.length; j++){

guions[j]='-';
}

do{
lector.nextLine();
var=false;
repetit=false;

//Quan el jugador premia l'enter per primer cop es mostra el següent en pantalla.
if(primer==false){
System.out.println(guions);
System.out.println(" __________");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" |__________");
System.out.println("Quina lletra hi pot pot ser?");
System.out.println("");
}
primer=true;
lletra =(char)System.in.read();

for(int o=0; o<comprova.length; o++){

if(comprova[o]==lletra){
System.out.println("La lletra "+lletra+ " ja s'ha dit -- També resta");
repetit=true;

}
}
comprova[index]=lletra;
index++;

for(i=0; i<paraula2.length; i++){

//Si la lletra introduïda es troba a la paraula, aleshores var és true.
if(paraula2==lletra){

guions=lletra;

var=true;
}
}

comparar = Arrays.equals(guions,paraula2);

if(comparar==true){
System.out.println("Si la paraula és "+paraula+"!!!");
System.out.println("*****************************");
System.out.println("*****************************");
System.out.println("** FELICITAT HAS TROBAT ***");
System.out.println("** LA PARAULA!!!! ***");
System.out.println("*****************************");
System.out.println("*****************************");

System.out.println("Fi del joc");

break;
}

if((var==false)||(repetit==true)){

oportunitats--;
}
System.out.println(guions);
System.out.println("_______________________________");


if(oportunitats==5){

System.out.println(" __________");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" |__________");


} else if (oportunitats == 4){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" |__________");


} else if(oportunitats==3){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | | ");
System.out.println(" | | ");
System.out.println(" | ");
System.out.println(" |__________");

} else if (oportunitats == 2){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | -|- ");
System.out.println(" | | ");
System.out.println(" | ");
System.out.println(" |__________");

} else if (oportunitats == 1){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | --|-- ");
System.out.println(" | | ");
System.out.println(" | / ");
System.out.println(" |__________");


}

}while (oportunitats > 0);

//Si s'ha avaluat com a falsa, aleshores:
if(comparar==false){
System.out.println("** HAS FALLAT **");
System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | --|-- ");
System.out.println(" | | ");
System.out.println(" | _/ _ ");
System.out.println(" |__________");
System.out.println(" Fi del joc");
}

System.out.println(" ");
System.out.println("Tornar a jugar introduiex 1 i apreta enter");
System.out.println(" ");
System.out.println("Per sorti del joc apreta 2 i enter");

opcio=lector.nextInt();

if(opcio==2){

sortir=true;
}


} while (sortir == false);

System.out.println("final del joc Adeu");

}}
 
Anda que ponerse en Navidad a hacer los deberes de la FP de informática...
 
Tienes muchas faltas de ortografia en catalan.

Es lo unico que puedo comentar, de lo otro ni idea.
 
La classe Scanner necesita un nextLine() adicional cuando pulsas espacio. Esto es porque el espacio es delimitador de entrada. Debes implementar la captura deese espacio o usar otra clase como entrada, quizás así:

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Introduzca película:");
str=in.readLine();

Con esto leería la frase completa sin cortarte por el espacio.
 
int aleatorio=(int)((Math.random()*10)*10)/10;
paraula=paraules[aleatorio];


18863342.jpg
 
La classe Scanner necesita un nextLine() adicional cuando pulsas espacio. Esto es porque el espacio es delimitador de entrada. Debes implementar la captura deese espacio o usar otra clase como entrada, quizás así:

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Introduzca película:");
str=in.readLine();

Con esto leería la frase completa sin cortarte por el espacio.

Muchas gracias, voy a probar con esto, pero no hay manera que en:

String [] paraules={"Seven","Mulhollanddrive"};

¿Se pueda poner espacio?

Gracias
Felices fiestas.
 
Anda que ponerse en Navidad a hacer los deberes de la FP de informática...

yo tengo 4 entregas en 8 días (hasta el viernes) y termino el cuatrimestre, me han reventado las navidades :(

Ya solo me quedan dos pero tengo unas ojeras que parezco un zombi
 
La classe Scanner necesita un nextLine() adicional cuando pulsas espacio. Esto es porque el espacio es delimitador de entrada. Debes implementar la captura deese espacio o usar otra clase como entrada, quizás así:

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Introduzca película:");
str=in.readLine();

Con esto leería la frase completa sin cortarte por el espacio.
No, el delimitador es el return, nextLine te permite leer una línea entera tenga o no espacios.

El problema es entre otros, crear un número aleatorio entre 0 y 9 y aplicárselo a un array que tiene tamaño 2.
 
No, el delimitador es el return, nextLine te permite leer una línea entera tenga o no espacios.

El problema es entre otros, crear un número aleatorio entre 0 y 9 y aplicárselo a un array que tiene tamaño 2.

Olvídate del array de tamaño 2 porque tenía 10 títulos (de 1 sola palabra) y he estado intentando modificar y a ver qué hago.

Lo ideal es encontrar una solución con los mínimos cambios en el código, sin tener que crear clases.
 
Mmm clases no sé pero unos cuantos métodos yo si que haria sobretodo para dibujar por pantalla el ahorcado y así limpiar algo el código separando lógica de presentación. Ahora no estoy en casa pero despues me lo miro y te intento decir algo mas. Como comentario freak te digo que mientras no cierres el parentesi del System.out.print no hace falta que lo habrás en cada línea y así evitas consumo de CPU.

Un saludo,
Aprendiz
 
Felices fiestas.

He realizado el siguiente programa pero no hay manera de que acepte dos o más palabras con espacios, ¿alguien sabe cómo hacerlo?

Es un juego del ahorcado de películas y por ejemplo "Mulholland Drive" detecta error si la pongo con espacio...

MUCHAS GRACIAS

Aquí tenéis el código 100% funcional pero sólo admite para adivinar 1 palabra sin espacios.

Para qué usas un lenguaje orientado a objetos para hacer un mazacote de 1 sólo método? Separa el input, el output, pon las películas en un properties... Este código produce cagaleras de verlo.
 
No estoy tan avanzado y tengo que memorizarme cientos de ejercicios así para el examen de enero...

YA LO TENGO 100% FUNCIONAL y todo comentado!

package eac3;

/*
* Jaume Mayol
* Programació (Bloc 1)
* Activitats de Nadal
*/

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class EAC3 {

public static void main(String[] args)throws IOException {
Scanner lector=new Scanner(System.in);
String [] paraules={"Seven","Mulholland drive", "Twin Peaks","La matanza de Texas","La noche de"
+ "Halloween", "Buried", "Walking Dead", "Psicosis", "Jennifer's Body", "Destino final"};

String paraula=" ";

//Variables globals
int i=0;
int opcio;
int oportunitats=5;
int index=0;

//Lletra introduïda
char lletra=' ';

//Variables booleanes
boolean var=false;
boolean comparar = false;
boolean repetit=false;
boolean primer=false;
boolean sortir=false;

//Estructura do-while. Mentres hi hagi 5 oportunitats
do{
oportunitats=5;
var=false;
repetit=false;
primer=false;
index=0;

//Per estalviar recursos del CPU tot el missatge inicial en un sol println
System.out.println("HANGMAN CINEMA\nHeu de endivinar la película"
+ "\nHi ha 4 oportunitas per endivinar el títol. Al 5 error quedeu penjats"
+ "\nAlerta si repetiu lletra també es considerarà un error"
+ "\n\nRecordeu que els espais compten, per tant és recomenable"
+ "que premeu la barra d'espai\ndel vostre teclat per comprovar si hi"
+ "ha espais a la paraula, especialment si té molts de guions.\nTambé"
+ " compten els apòstrofs (') i les majúscules com a Jennifer's Body"
+ "\n\nSi esteu preparats, preméu Enter");

//Funció aleatòria del Java perquè elegeixi un títol per atzar dels 10 que hi ha.
int aleatorio=(int)((Math.random()*10)*10)/10;
paraula=paraules[aleatorio];

//Convertir una cadena en un array de caràcters (veure més info aquí:
//http://lineadecodigo.com/tag/tochararray/
char[]paraula2 = paraula.toCharArray();
char[]guions=new char[paraula2.length];
char[]comprova=new char[15];

//Introdueix els guions a cada lletra de columna. Una altra manera de fer-ho
//es com ho he fet al programa d'endevina el meu nom.
for(int j=0; j<guions.length; j++){

guions[j]='-';
}//tanca bucle guió

do{
lector.nextLine();
var=false;
repetit=false;

//Quan el jugador premia l'enter per primer cop es mostra el següent en pantalla.
if(primer==false){
System.out.println(guions);
System.out.println(" __________");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" |__________");
System.out.println("Quina lletra hi pot pot ser?");
System.out.println("");
}//tanca if quan és el primer intent

//Llegeix lletra inserida per l'usuari amb el teclat
primer=true;
lletra =(char)System.in.read();

//Comprova si s'ha dit la lletra
for(int o=0; o<comprova.length; o++){

if(comprova[o]==lletra){
System.out.println("La lletra "+lletra+ " ja s'ha dit -- També resta");
repetit=true;

}//tanca bucle if
}//tanca bucle for
//es comprova la lletra, si és la mateixa, se suma intent
comprova[index]=lletra;
index++;

for(i=0; i<paraula2.length; i++){

//Si la lletra introduïda es troba a la paraula, aleshores var és true.
if(paraula2==lletra){

guions=lletra;

var=true;
}
}

//Compara espai de guió per cada lletra i la paraula en cadena de text.
comparar = Arrays.equals(guions,paraula2);

if(comparar==true){
System.out.println("Si la paraula és "+paraula+"!!!");
System.out.println("*****************************");
System.out.println("*****************************");
System.out.println("*** FELICITATS! ETS MÉS ***");
System.out.println("*** FRIKI QUE JO!!!! ***");
System.out.println("*****************************");
System.out.println("*****************************");

System.out.println("Fi del joc");

break;
}

if((var==false)||(repetit==true)){

oportunitats--;
}
System.out.println(guions);
System.out.println("_______________________________");


if(oportunitats==5){

System.out.println(" __________");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" |__________");


} else if (oportunitats == 4){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" | ");
System.out.println(" |__________");


} else if(oportunitats==3){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | | ");
System.out.println(" | | ");
System.out.println(" | ");
System.out.println(" |__________");

} else if (oportunitats == 2){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | -|- ");
System.out.println(" | | ");
System.out.println(" | ");
System.out.println(" |__________");

} else if (oportunitats == 1){


System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | --|-- ");
System.out.println(" | | ");
System.out.println(" | / ");
System.out.println(" |__________");


}

}while (oportunitats > 0);

//Si s'ha avaluat com a falsa, aleshores:
if(comparar==false){
System.out.println("** HAS FALLAT **");
System.out.println(" __________");
System.out.println(" | | ");
System.out.println(" | O ");
System.out.println(" | --|-- ");
System.out.println(" | | ");
System.out.println(" | _/ _ ");
System.out.println(" |__________");
System.out.println(" Fi del joc");
}

System.out.println(" ");
System.out.println("Tornar a jugar. Premeu 1 i Enter");
System.out.println(" ");
System.out.println("Per sortir del joc premeu 2 i Enter");

opcio=lector.nextInt();

if(opcio==2){

sortir=true;
}


}//tanca el do de la línea 39
while (sortir == false);

System.out.println("Fi del joc. Bones festes");

}//tanca main
}//tanca el programa
 
Volver