[Java]

kof20012

Power Member
oi td bem?

alguem tem o jogo da forca?

ja o comecei a fazer tal como criar as palavras, tirar a sorte a palavra, contar o numero de palavras, divisao das letras das palavras

mas precisava da parte de mostrar as palavras nos tracinhos, corresponder cada traço a cada letra da palvra.

se alguem me ajudar agradecia!

cumprimentos,
 
Deve existir uma maneira de sublinhar as letras em java.
Anyway podes sempre tentar da seguinte forma.

Se tiveres guardada numa String a palavra ou texto.
Guardas num Scanner essa String por exemplo:
PHP:
import java.util.Scanner;
Scanner leitor = new Scanner(String);

Arranjas uma variável auxiliar para contar o numero de palavras existentes:
PHP:
int nWords = 0;

Depois, a classe Scanner dispõe de um metodo para next token, isto é, enquanto há caracteres, neste caso, enquanto à palavras:
PHP:
while (leitor.hasNext()) { // Enquanto houver palavras
leitor.next();
nWords++;
}

Fechas o fluxo, leitor.close();

--------
Arranjas um vector de Strings para em cada posição guardar uma palavra:
PHP:
String[] vecWords = new String[nWords];

E agora preenches cada posicao do vector com as palavras:
PHP:
Scanner leitor = new Scanner(String); // Palavras ou texto
int i = 0; // posicao
while(leitor.hasNext()) {
vecWords[i] = leitor.next();
}

Tens o teu vector com palavras.
Agora para os traços, podes sempre escrever os traços na linha seguinte, por exemplo:
PHP:
int pos = 0; // cada palavra
While(pos < vecWords.length) {
for (int i = 0; i < vecWords[pos].length; i++)
System.out.print(vecWords[pos].charAt(i))

System.out.println();
for (int i = 0; i < vecWords[pos].length; i++)
System.out.print("_" + " ");
pos++;
}

leitor.close();

Em detrimento do Scanner, a classe String dispõe de um metodo Split que cria logo uma array com as palavras, mas eu sou fã do Scanner.
O algoritmo está para lá de eficiente, e nem testei sequer, mas pode ser que ajude a realizar o problema.

Cumps
 
Encontrei algo na net.
Se estiveres a fazer com frames, ja tens a papinha feita :eek:
Código:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class UnderlineInSwing extends JFrame {
 public UnderlineInSwing() {

        super("Underline In Swing");
        setSize(400, 300);

        getContentPane().setLayout(new FlowLayout());

        String htmlText = 
            "<html><p><font color=\"#800080\" "+
            "size=\"4\" face=\"Verdana\">HTML in JLabel</font></p>"+
            "<font size=\"2\"><u>"+
            "underline is possible</u><br><b> and bold too</b></font>"+
            "";
        JLabel lbl = new JLabel(htmlText);
        getContentPane().add(lbl);

        WindowListener wndCloser = new WindowAdapter(){
            public void windowClosing(WindowEvent e) {
                System.exit(0);
                }
            };
        addWindowListener(wndCloser);
        setVisible(true);
    }

    public static void main(String args[]){
     new UnderlineInSwing();
     }
}

Source
Gogla um bocado que encontras facilmente ;)
 
Btw, para o vector de palavras:

split

public String[] split(String regex)

Splits this string around matches of the given regular expression.

This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

The string "boo:and:foo", for example, yields the following results with these expressions:
Regex Result
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }​
Parameters:
regex - the delimiting regular expression

Returns:
the array of strings computed by splitting this string around matches of the given regular expression

Throws:
PatternSyntaxException - if the regular expression's syntax is invalid

Since:

1.4

See Also:
Pattern
Ver aqui: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

Bastante mais simples ;)

O resto não te sei responder.

abraços, HecKel
 
Última edição:
Deve existir uma maneira de sublinhar as letras em java.
Anyway podes sempre tentar da seguinte forma.

Se tiveres guardada numa String a palavra ou texto.
Guardas num Scanner essa String por exemplo:
PHP:
import java.util.Scanner;
Scanner leitor = new Scanner(String);
Arranjas uma variável auxiliar para contar o numero de palavras existentes:
PHP:
int nWords = 0;
Depois, a classe Scanner dispõe de um metodo para next token, isto é, enquanto há caracteres, neste caso, enquanto à palavras:
PHP:
while (leitor.hasNext()) { // Enquanto houver palavras
leitor.next();
nWords++;
}
Fechas o fluxo, leitor.close();

--------
Arranjas um vector de Strings para em cada posição guardar uma palavra:
PHP:
String[] vecWords = new String[nWords];
E agora preenches cada posicao do vector com as palavras:
PHP:
Scanner leitor = new Scanner(String); // Palavras ou texto
int i = 0; // posicao
while(leitor.hasNext()) {
vecWords[i] = leitor.next();
}
Tens o teu vector com palavras.
Agora para os traços, podes sempre escrever os traços na linha seguinte, por exemplo:
PHP:
int pos = 0; // cada palavra
While(pos < vecWords.length) {
for (int i = 0; i < vecWords[pos].length; i++)
System.out.print(vecWords[pos].charAt(i))

System.out.println();
for (int i = 0; i < vecWords[pos].length; i++)
System.out.print("_" + " ");
pos++;
}

leitor.close();
Em detrimento do Scanner, a classe String dispõe de um metodo Split que cria logo uma array com as palavras, mas eu sou fã do Scanner.
O algoritmo está para lá de eficiente, e nem testei sequer, mas pode ser que ajude a realizar o problema.

Cumps


percebi mais ou menos o k disseste mas apacere-me um problema ele nao aceita a minha variavel com o .hasnext as minhas palavras tao dentro de um array, utilizei a variavel do arrays mas nao aceita essa variavel
 
O hasNext() é um metodo da classe Scanner, não é aplicável a Strings ou vectores de Strings.
Se em cada posição do array tem uma palavra, então com o metodo charAt(index) podes ir buscar a letra, e por baixo imprimir um traço. Numa primeira abordagem ao problema pode resultar se estiveres a imprimir as coisas na consola.

Secalhar é melhor disponibilizares um bocado do código.
 
O hasNext() é um metodo da classe Scanner, não é aplicável a Strings ou vectores de Strings.
Se em cada posição do array tem uma palavra, então com o metodo charAt(index) podes ir buscar a letra, e por baixo imprimir um traço. Numa primeira abordagem ao problema pode resultar se estiveres a imprimir as coisas na consola.

Secalhar é melhor disponibilizares um bocado do código.

PHP:
public class JogoDaForca {

    static int PosicaoLetra(char letra, String PalavraProcura )

    {
    
int j =0;
for (j=0; j< PalavraProcura.length(); j++)
    
    if (PalavraProcura.charAt(j)== letra)
            return(j);

    return(-1);
    

    
        }//PosicaoLetra
//------------------------------------------------------------MAIN--------------------------------------------------------------
    
    public static void main(String[] args) {
        
//-----------------------------------------------------INICIALIZAR---------------------------------------------------------------        
String Palavras[] = new String [21];

Palavras[0]="porto"; Palavras[1]="benfica"; Palavras[2]="sporting"; Palavras[3]="portugal"; Palavras[4]="europa"; Palavras[5]="gato"; Palavras[6]="tartaruga"; Palavras[7]="chave";
Palavras[8]="esfera"; Palavras[9]="cadeira"; Palavras[10]="ficha"; Palavras[11]="chefe"; Palavras[12]="empregado"; Palavras[13]="rosa"; Palavras[14]="papoila"; Palavras[15]="saco";
Palavras[16]="porta"; Palavras[17]="natal"; Palavras[18]="indiscutivelmente"; Palavras[19]="universalidades"; Palavras[20]="constitucionalmente";

char traço='_';
char letra;
//---------------------------------------------------TIRAR A SORTE---------------------------------------------------------------*/
Random g = new Random();

int i= g.nextInt(21);



String PalavraAdivinhar=Palavras[i];
String Grande=PalavraAdivinhar.toUpperCase();
System.out.println("Palavra é "+Grande);

//--------------------------------------------CONTAR O NUMERO DE PALAVRAS--------------------------------------------------------

int TamanhoDaPalavra = PalavraAdivinhar.length();


System.out.println("O tamanho de "+PalavraAdivinhar+" é de "+TamanhoDaPalavra+" caracteres");
//System.out.println("A letra ta na posicao" +PalavraProcura);

//-------da o tamamanho palavra em traços-----------------------------------------

System.out.println("Indique a letra que quer?");
letra=Le.umChar();

for (int n=0 ; n < PalavraAdivinhar.length() ; n++)
    
System.out.print(" "+traço);
System.out.println();
 
Back
Topo