1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java]

Discussão em 'Programação' iniciada por kof20012, 9 de Janeiro de 2007. (Respostas: 9; Visualizações: 2521)

  1. kof20012

    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,
     
  2. MadOnion

    MadOnion Folding Member

    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 0vecWords[pos].lengthi++)
    System.out.print(vecWords[pos].charAt(i))

    System.out.println();
    for (
    int i 0vecWords[pos].lengthi++)
    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
     
  3. MadOnion

    MadOnion Folding Member

    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 ;)
     
  4. HecKel

    HecKel The WORM

    Btw, para o vector de palavras:

    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: 9 de Janeiro de 2007
  5. MadOnion

    MadOnion Folding Member

    É bastante mais simples como eu disse, mas eu prefiro usar o Scanner.
    Para além do codigo ser mais complexo, o Scanner só é compativel com o JAVA5, enquanto que o slipt vem so JAVA1.4
     
  6. kof20012

    kof20012 Power Member

    desculpem en disse foi uma coisa e k era em java mm em programaçao, uma aplicaçao sem applets,
     
  7. MadOnion

    MadOnion Folding Member

    Tanto a solução que eu dei, como a do heckel, são sem applets nem swings ou frames.
    Acaso já experimentasteo?
     
  8. kof20012

    kof20012 Power Member


    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
     
  9. MadOnion

    MadOnion Folding Member

    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.
     
  10. kof20012

    kof20012 Power Member

    PHP:

    public class JogoDaForca {

        static 
    int PosicaoLetra(char letraString PalavraProcura )

        {
        
    int j =0;
    for (
    j=0jPalavraProcura.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 ig.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=PalavraAdivinhar.length() ; n++)
        
    System.out.print(" "+traço);
    System.out.println();

     

Partilhar esta Página