Jogo da Memória em Java

Neste post irei publicar os fontes de um jogo que fiz há um tempo atrás, quando ainda estava na faculdade.

Este jogo foi um pequeno desafio pessoal que me propus quando comecei a aprender Java e que depois acabou virando um trabalho de sala.

Na faculdade havíamos feito um jogo da memória em C, para console.Nesta época eu estava começando a aprender Java, e estava encantado com a possibilidade de criar interfaces gráficas sem a necessidade de uma IDE. Por esta razão, nenhuma IDE será necessária para criar este jogo.

Na ocasião eu utilizei o JCreator como editor de código, mas você poderá digitar as classes no bloco de notas e compilar no console se preferir, funciona também😉

Basicamente é um jogo que utiliza pacotes do core de Java, e não é necessária a utilização de nenhuma biblioteca adicional às já encontradas na JRE para seu funcionamento.

São quatro classes e algumas imagens, que você deverá dispor da seguinte forma:

– Jogador.java
– MyButton.java
– TelaUm.java
– TelaJogo.java
– – imagens (diretório)
– – – duke (diretório)
– – – tux (diretório)
– – – jogo (diretório)

As imagens usadas, mais especificamente dos diretórios tux e duke, foram encontradas na internet. As demais, do diretório jogo, foram encontradas também na internet, e algumas são montagens que fiz.

Cada diretório de imagem, com exceção do diretório “jogo”, representam os possíveis jogos presentes para se escolher. Quando eu fiz esse jogo pela primeira vez, ele tinha 20 diretórios, ou seja, era possível escolher vários desenhos diferentes para os jogos.

Bom, depois de tanto falar, vamos aos fontes. Uma vez criados os arquivos .java citados acima, copie os conteúdos das classes abaixo para seus devidos arquivos:

Jogador.java


public class Jogador{

    private String nome;
    private int pontos;

    public Jogador(String nomeJogador){

        nome = (nomeJogador.equals("")? "Jogador sem nome...coitado! ": nomeJogador );
        pontos = 0;
    }

    public String obterNome(){

        return nome;
    }

    public int obterPontos(){

        return pontos;
    }

    public void incrementarPontos(){

        pontos += 5;
    }

    public void decrementarPontos(){

        pontos--;
    }

} // fim da classe pessoa

MyButton.java


import javax.swing.*;

public class MyButton extends JButton{

    private Icon imagemPadrao;
    private Icon imagemBotao;

    public MyButton(Icon imagemPadrao, Icon imagemBotao){

        super();

        this.imagemBotao = imagemBotao;
        this.imagemPadrao = imagemPadrao;

        setImagemPadrao();
    }

    public void setImagemPadrao(){

        this.setIcon(imagemPadrao);
    }

    public void setImagemBotao(){

        this.setIcon(imagemBotao);
    }    

    public Icon getImagemBotao(){

        return this.imagemBotao;
    }
}

TelaUm.java


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TelaUm extends JFrame implements ActionListener, ItemListener{    

    private Container container;
    private JButton botaoSair, botaoIniciarJogo;
    private JPanel painelBotoes, painelDados, painelCabecalho;
    private JPanel painelCentro, painelRodape, painelImagem;
    private Icon imagemPainel, imagemRodape, imagemJogar, titulo;
    private Icon imagemJogarRoll, imagemSair, imagemSairRoll;
    private JLabel labelImagemPainel, nomeJogador, temaJogada;
    private JLabel texto1, desenvolvimento, autor;
    private GridLayout gridBotoes, gridDados, gridCabecalho, gridRodape;
    private JComboBox temasJogada;
    private int indiceTema = 1;
    private Jogador objJogador;
    private TelaJogo objTelaJogo;
    private JTextField fieldNomeJogador;
    private Font fonte18, fonte10;
    private JTextArea telaSaida = new JTextArea();
    private boolean jogoFacil = false;
    private ButtonGroup dificuldadeGroup;
    private JMenu menuDificuldade;
    private JMenuBar barraMenu;
    private JRadioButtonMenuItem facil, dificil;
    private JLabel nivelDificuldade;

    String nomeObjJogador;

    // os temas para os jogos
    private String nomesTemas[] =
    { "Duke", "Tux"};    

    // índices dos temas para os jogos
    private int indiceTemas[] =
    { 1, 2 };    

    public TelaUm(){                   

        super( "Bem-vindo ao Jogo da Memória!" );                

        // adiciona um listener à janela
        addWindowListener(            

            // classe interna anônima
            new WindowAdapter(){

                // trata o evento de quando o usuário fecha a janela
                public void windowClosing( WindowEvent windowEvent ){

                    saidaPrograma();
                }
            }// fim da classe interna anônima    

        );

        nivelDificuldade = new JLabel("Nível de dificuldade: DIFÍCIL");
        nivelDificuldade.setForeground(Color.red);

        // gerenciadores de layout
        gridBotoes = new GridLayout( 1, 2, 5, 5 );
        gridDados = new GridLayout( 6, 1, 10, 10 );
        gridCabecalho = new GridLayout( 1, 1, 10, 10 );
        gridRodape = new GridLayout( 1, 1, 10, 10 );

        // painel da imagem (esquerda)
        imagemPainel = new ImageIcon(getClass().getResource("/imagens/jogo/painel.gif"));
        labelImagemPainel = new JLabel( imagemPainel );
        painelImagem = new JPanel();
        painelImagem.add( labelImagemPainel );
        painelImagem.setBackground( Color.white );

        fonte10 = new Font( "Verdana", Font.ITALIC, 10 );

        // imagens dos botões
        imagemJogar = new ImageIcon(getClass().getResource("/imagens/jogo/jogar.gif"));
        imagemJogarRoll = new ImageIcon(getClass().getResource("/imagens/jogo/jogarRoll.gif")); // imagem Rollover
        imagemSair = new ImageIcon(getClass().getResource("/imagens/jogo/sair.gif"));
        imagemSairRoll = new ImageIcon(getClass().getResource("/imagens/jogo/sairRoll.gif")); // imagem Rollover        

        // botão Iniciar Jogo
        botaoIniciarJogo = new JButton( "Iniciar Jogo", imagemJogar );
        botaoIniciarJogo.setRolloverIcon( imagemJogarRoll );
        botaoIniciarJogo.addActionListener( this );
        botaoIniciarJogo.setSize( 250, 15 );
        botaoIniciarJogo.setHorizontalAlignment( SwingConstants.LEFT );

        // botão Sair
        botaoSair = new JButton( "Abandonar o Jogo", imagemSair );
        botaoSair.setRolloverIcon( imagemSairRoll );
        botaoSair.addActionListener( this );
        botaoSair.setSize( 250, 15 );
        botaoSair.setHorizontalAlignment( SwingConstants.RIGHT );
        botaoSair.setHorizontalTextPosition( SwingConstants.LEFT );

        // painel de botões (inferior)
        painelBotoes = new JPanel();
        painelBotoes.setBackground( Color.lightGray );
        painelBotoes.setLayout( gridBotoes );
        painelBotoes.add( botaoSair );
        painelBotoes.add( botaoIniciarJogo );        

        //cabeçalho
        titulo = new ImageIcon(getClass().getResource("/imagens/jogo/titulo.gif"));
        texto1 = new JLabel( titulo );
        texto1.setHorizontalAlignment( SwingConstants.CENTER );        

        // painel de cabeçalho
        painelCabecalho = new JPanel();
        painelCabecalho.setLayout( gridCabecalho );
        painelCabecalho.setBackground( Color.lightGray );
        painelCabecalho.add( texto1 );

        // label do nome do jogador
        nomeJogador = new JLabel("Informe seu nome:");
        nomeJogador.setHorizontalAlignment( SwingConstants.LEFT );

        // campo do nome do jogador
        fieldNomeJogador = new JTextField( 15 );
        fieldNomeJogador.setHorizontalAlignment( SwingConstants.LEFT );

        // label do tema da jogada
        temaJogada = new JLabel( "Escolha o tema:" );
        temaJogada.setHorizontalAlignment( SwingConstants.LEFT );

        // ComboBox do tema da jogada
        temasJogada = new JComboBox( nomesTemas );
        temasJogada.addItemListener( this );
        temasJogada.setMaximumRowCount( 4 );

        // configuração do painel central
        painelCentro = new JPanel();
        painelCentro.setLayout( gridDados );
        painelCentro.setBackground( Color.lightGray );
        painelCentro.add( temaJogada );
        painelCentro.add( temasJogada );
        painelCentro.add( nomeJogador );
        painelCentro.add( fieldNomeJogador );
        //painelCentro.add( som );
        painelCentro.add(nivelDificuldade);

        menuDificuldade = new JMenu("Nível de Dificuldade");
        menuDificuldade.setBackground( Color.lightGray );

        dificuldadeGroup = new ButtonGroup();

        dificil = new JRadioButtonMenuItem("Difícil (6X6)");
        dificil.setSelected(true);

        dificil.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent evt){
                jogoFacil = false;
                nivelDificuldade.setText("Nível de dificuldade: DIFÍCIL");
                nivelDificuldade.setForeground(Color.red);
            }
        });

        facil = new JRadioButtonMenuItem("Fácil (4X4)");

        facil.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent evt){
                jogoFacil = true;
                nivelDificuldade.setText("Nível de dificuldade: FÁCIL");
                nivelDificuldade.setForeground(Color.blue);
            }
        });

        dificuldadeGroup.add(dificil);
        dificuldadeGroup.add(facil);

        menuDificuldade.add(dificil);
        menuDificuldade.add(facil);

        barraMenu = new JMenuBar();
        setJMenuBar(barraMenu);
        barraMenu.setBackground( Color.lightGray );

        barraMenu.add(menuDificuldade);        

        // imagem do rodapé
        imagemRodape = new ImageIcon(getClass().getResource("/imagens/jogo/java.gif"));

        // texto do rodapé
        desenvolvimento = new JLabel(
        "Desenvolvido em Java",
        imagemRodape, SwingConstants.CENTER );
        desenvolvimento.setFont( fonte10 );        

        // configuração do painel de rodapé
        painelRodape = new JPanel();
        painelRodape.setLayout( gridRodape );
        painelRodape.setBackground( Color.white );
        painelRodape.add( desenvolvimento );        

        // configuração do painel de dados (que possui o painel de cabeçalho,
        // o painel central e o painel de botões
        painelDados = new JPanel();
        painelDados.setLayout( new BorderLayout( 10, 10 ));
        painelDados.setBackground( Color.lightGray );
        painelDados.add( painelCabecalho, BorderLayout.NORTH);
        painelDados.add( painelCentro );
        painelDados.add( painelBotoes, BorderLayout.SOUTH );        

        // configuração do container (que tem toda essa bagunça aí!!! =)
        container = getContentPane();
        container.setLayout( new BorderLayout( 5, 5 ) );
        container.setBackground( Color.lightGray );
        container.add( painelRodape, BorderLayout.SOUTH );
        container.add( painelImagem, BorderLayout.WEST );
        container.add( painelDados );        

        setSize( 550, 380 );
        setVisible( true );
        setResizable( false );

    }

    private void saidaPrograma(){

        telaSaida.setText(

            "tJogo da Memória - 2005nn"+
            "tDesenvolvido por: Luiz Gustavo Stábile de Souzan"+
            "tGraduando em Análise de Sistemas pela "+
            "Faculdade de Ciências e Tecnologia de Birigui  n"+
            "tContato: luizgustavoss@gmail.comnn"+
            "tLinguagem de Desenvolvimento: Java (TM) 2 Standard Edition nn"+
            "tRequisitos: J2RE - Java(TM) 2 Runtime Environmentnn"+
            "tEste jogo foi desenvolvido com fins educacionais, portanto sem nenhum tipo de garantia.nn"

        );

        JOptionPane.showMessageDialog(null, telaSaida,
        "Informações sobre o Jogo", JOptionPane.PLAIN_MESSAGE);
        System.exit( 0 );
    }

    public void actionPerformed( ActionEvent event ){

            // se o evento for do botão sair
            if ( event.getSource() == botaoSair ){

                saidaPrograma();

            }

            // senão é do botão iniciar jogo
            else if ( event.getSource() == botaoIniciarJogo ){                

                nomeObjJogador = fieldNomeJogador.getText();
                objJogador = new Jogador( nomeObjJogador );

                if(jogoFacil)
                    objTelaJogo = new TelaJogo( objJogador, indiceTema, 4 );
                else
                    objTelaJogo = new TelaJogo( objJogador, indiceTema, 6 );
            }
    }

    public void itemStateChanged( ItemEvent event ){

        if ( event.getSource() == temasJogada ){

            if ( event.getStateChange() == ItemEvent.SELECTED )

                indiceTema = indiceTemas[ temasJogada.getSelectedIndex() ];
        }
    }

    public static void main( String args[] ){

        TelaUm application = new TelaUm();

        application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        application.setLocationRelativeTo( null );
    }

} // fim da classe TelaUm

TelaJogo.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TelaJogo extends JFrame implements ActionListener{

/**
* Construtor da classe
* @Param jog – Objeto jogador, com os dados do jogador
* @Param codJog – O tema escolhido
* @Param fatorJogo – Inteiro que determina se o jogo é 4X4 ou 6X6
*/

//ClassLoader cl = this.getClass().getClassLoader();
public TelaJogo( Jogador jog, int codJog, int fatorJogo ){

super( “Jogo da Memória” );

setLocation( 200, 10 );

addWindowListener(new WindowAdapter(){

public void windowClosing( WindowEvent windowEvent ){

mostrarResumoJogo();
}
});

fator = fatorJogo;

objJogadorJogada = jog;
temaJogada( codJog );
preparaArrayImagens();
container = getContentPane();

labelPontosJogador = new JLabel( “Jogador: ” + objJogadorJogada.obterNome() + ” >> Pontos: ” );

pontosJogador = new JLabel( “”+objJogadorJogada.obterPontos() );

imagemSair = new ImageIcon(getClass().getResource(“/imagens/jogo/sair.gif”));
imagemSairRoll = new ImageIcon(getClass().getResource(“/imagens/jogo/sairRoll.gif”));

// configura o botão sair
botaoSair = new JButton(” Sair do Jogo “, imagemSair);
botaoSair.setRolloverIcon( imagemSairRoll );
botaoSair.addActionListener( this );

painelImagens = new JPanel();
painelPontos = new JPanel();

// configurando o painel superior
painelPontos.setBackground( Color.white );
painelPontos.add( labelPontosJogador );
painelPontos.add( pontosJogador );

grid = new GridLayout( fator, fator, 5, 5 );

painelImagens.setLayout( grid );

imagemPadrao = new ImageIcon(getClass().getResource(“/imagens/jogo/standard.gif”));

posicoesFiguras = new MyButton[( fator * fator )];

for ( int cont = 0; cont < ( fator * fator ); cont++ ){ posicoesFiguras[ cont ] = new MyButton(imagemPadrao, imagens[cont]); posicoesFiguras[ cont ].addActionListener( this ); painelImagens.add( posicoesFiguras[ cont ] ); } container.add( painelPontos, BorderLayout.NORTH); container.add( botaoSair, BorderLayout.SOUTH ); container.add( painelImagens ); double d_largura = (fator == 4?82.5:80); d_largura *= fator; int i_largura = (int) d_largura; setSize( i_largura, i_largura+70 ); setVisible( true ); setResizable( false ); } /** * Prepara o Array de Imagens * */ private void preparaArrayImagens(){ int posicaoNoArray, x, y; this.imagens8 = new Icon[(fator * fator)/2]; for ( x = 0; x < ((fator*fator)/2); x++ ){ this.imagens8[ x ] = new ImageIcon(getClass().getResource(tema + ( x + 1 ) + ".GIF")); } this.imagens = new Icon[ (fator*fator) ]; for ( x = 0; x < 2; x++ ){ for ( y = 0; y < ((fator*fator)/2); y++ ){ do{ posicaoNoArray = ( int ) ( Math.random() * (fator*fator) ); }while( this.imagens[ posicaoNoArray ] != null ); this.imagens[ posicaoNoArray ] = imagens8[ y ]; } } } /** * Descobre o tema escolhido * @Param codTema - Código do tema escolhido */ private void temaJogada( int codTema ){ switch( codTema ){ case 1: this.tema = "/imagens/duke/"; break; case 2: this.tema = "/imagens/tux/"; break; } } /** * Mostra o resumo do jogo ao sair * */ private void mostrarResumoJogo(){ resumoJogo = "Jogador: " + objJogadorJogada.obterNome() + "nn" + "Pontos: " + objJogadorJogada.obterPontos() + "nn" + "Quantidade de tentativas: " + qtdeTentativas; JOptionPane.showMessageDialog( null, ""+resumoJogo, "Resumo do Jogo", JOptionPane.INFORMATION_MESSAGE ); setVisible( false ); System.gc(); } public void actionPerformed( ActionEvent event ){ // Se o evento for do botão Sair... if ( event.getSource() == botaoSair ){ mostrarResumoJogo(); } // Caso contrário é evento de botões de imagem else{ // testa se é o primeiro clique if( primeiroClique ){ qtdeTentativas++; // testa se o jogador errou na jogada anterior if ( !acertou ){ botaoUm = (MyButton) botaoClicadoUm; botaoDois = (MyButton) botaoClicadoDois; botaoUm.setImagemPadrao(); botaoDois.setImagemPadrao(); } botaoClicadoUm = event.getSource(); botaoUm = (MyButton) botaoClicadoUm; botaoUm.setImagemBotao(); // indica que este foi o primeiro clique primeiroClique = !primeiroClique; } // se não for o primeiro clique else{ botaoClicadoDois = event.getSource(); botaoDois = (MyButton) botaoClicadoDois; // verifica se o jogador clicou no mesmo botão if ( botaoClicadoDois == botaoClicadoUm ){ acertou = false; JOptionPane.showMessageDialog( null, "Ação não permitida!", "Ação Não Permitida", JOptionPane.WARNING_MESSAGE ); } // se não for o mesmo botão... else{ // coloca a imagem no botão botaoDois.setImagemBotao(); // compara com o primeiro botão clicado if ( botaoUm.getImagemBotao().equals( botaoDois.getImagemBotao())){ acertou = true; qtdeAcerto++; // Desabilita os botões botaoUm.setEnabled( false ); botaoDois.setEnabled( false ); // incrementar pontos objJogadorJogada.incrementarPontos(); pontosJogador.setText( ""+objJogadorJogada.obterPontos() ); // se foi o último par encontrado, apresenta resumo do jogo e fecha a janela if ( qtdeAcerto == ((fator*fator)/2) ){ mostrarResumoJogo(); setVisible( false ); System.gc(); } } // se não for o mesmo botão else{ acertou = false; //decrementar pontos objJogadorJogada.decrementarPontos(); pontosJogador.setText( ""+objJogadorJogada.obterPontos() ); } // indica que este foi o segundo clique primeiroClique = !primeiroClique; } } } } private Object botaoClicadoUm = new Object(); private Object botaoClicadoDois = new Object(); private JLabel pontosJogador, labelPontosJogador; private JPanel painelImagens, painelPontos; private JButton botaoSair; private Icon imagemSair, imagemSairRoll, imagens[], imagemPadrao, imagens8[]; private GridLayout grid; private Container container; private String tema, resumoJogo = ""; private Jogador objJogadorJogada; private int fator, qtdeAcerto, qtdeTentativas = 0; private boolean primeiroClique = true; private boolean acertou = true; private MyButton botaoUm, botaoDois, posicoesFiguras[]; } // fim TelaJogo [/sourcecode] Os arquivos de imagem necessários estarão disponíveis para download ao final do post. Não vou explicar o jogo passo-a-passo (ahhhhhhh) mas se você está começando a aprender Java, esse pequeno jogo é uma boa oportunidade para aprender a usar componentes de tela básicos, assim como aprender a usar tratamento de eventos desses componentes. Depois de compiladas as classes (com o comando javac [nome-da-classe.java], pelo console), basta executar a classe TelaUm.java (java TelaUm, pelo console). [caption id="attachment_78" align="alignnone" width="460" caption="Jogo em execução"]Jogo em execução[/caption]

Imagens para o Jogo

Queria colocar todas as imagens compactadas para download, mas não é possível (até onde eu sei). Portanto, colocarei aqui as imagens referentes a cada diretório. No caso das imagens dos diretórios “tux” e “duke”, que eram muitas, eu dei um printscreen na tela e postarei uma imagem só, com todas (separadas, uma única imagem para o diretório “tux” e uma única imagem para o diretório “duke”). Vocês terão o trabalho de recortar cada uma, no tamanho de 70×70 pixels. Aproveitem para renomear cada uma de acordo com o que se vê nas imagens.

No caso das imagens do jogo (imagens de tela, botões…), por apresentarem tamanhos diversos optei por colocar uma a uma. Vamos a elas:

(importante 1: clique sobre as imagens para que elas sejam abertas no tamanho original, para só depois salvarem as mesmas)

Imagens do diretório “duke”

imagens-duke

Imagens do diretório “tux”

imagens-tux

Imagens do diretório “jogo”

titulo standard sairroll sair painel jogarroll jogar java

Se tiverem dúvidas, fique à vontade para postar comentários!

55 comentários sobre “Jogo da Memória em Java

  1. Olá, estou na faculdade de Informática e tenho um projeto de montar um jogo em java, e escolhi o jogo da memória…
    Copiei seu código pro eclipse mas ele não rodou =/
    Preciso da sua ajuda rsrsrs

  2. Caro Luiz,

    Gostaria de estar usando seu jogo de memória. Mas quero colocar minhas imagens (16 imagens – 8 pares) nele.

    Quanto me cobra para fazê-lo.

    Atenciosamente.

    Eros

  3. Luiz, eu achei muito legal o seu jogo, mas não estou conseguindo faze-lo funcionar no meu PC. Tentei no JCreator e no NetBeans, mas apesar de todas as modificações que vc pediu, não consegui fazer ele funcionar. o que eu posso estar fazendo de errado??

  4. Ola Gustavo!
    Estou com uma duvida. Consegui baixar o programa JCreator, montei as classes, salvei as imagens em cada pasta separada como o pedido. Porem, nao estou conseguindo executar o jogo. No fim do topico vc fala sobre um `console`. Eu nao achei. Aguardo sua resposta. Parabens pelas instrucoes. Obrigado.

    • Olá Diego,

      se você está utilizando o JCreator, não há necessidade de rodar a aplicação pelo console (console do windows, por exemplo). Pode fazer a execução diretamente pelo JCreator. O Caso do console é para quem decidir escrever os códigos em um editor simples, como o bloco de notas – coisa rara hoje em dia🙂
      Se tiver problemas volte a entrar em contato.
      Abraço!

    • Olá Hildebrando, tudo bem?
      O trecho responsável por recuperar as imagens é este:

      this.imagens8[ x ] = new ImageIcon(getClass().getResource(tema + ( x + 1 ) + “.GIF”));

      Cada imagem ter como nome um número, então eu concateno o número (x) da iteração com o tema e a extensão. Uso getClass().getResource para localizar esta imagem pra mim, e ela estará dentro do projeto, em um diretorio (e quando for gerado o .jar elas estarão dentro do jar).

      Espero que isso tenha te ajudado.

      Abraço

      • Oi, estou iniciando java, e sei pouco,poderia por favor me esclarecer sobre os diretorios, eu não sei como seguir, eu recortei as figurinhas e coloquei em pastas diferentes, pastas normais, mas como faça p por elas no projeto? para que possa ser executadas no jogo? vc poderia me explicar como crio esses diretorios? é importante espero q responda!

        bjs

  5. Oi eu queria aprender a fazer um joguinho em java.. mas não sei nada ainda.. to estudando e na faculdade não tive ainda a diciplina de java.. eu queria entender sobre os diretorios das figurinhas, eu entendi ali que vc pede para recordar ok. mas como crio o diretorio? e faça o jogo buscar essas figurinhas? se puder agradeço.

  6. Oi,estou fazendo técnico em informatica,e o TCC está vindo por ai .Tenho pouca noção ainda sobre java.Fiz a utilização de seu código, gostaria de uma ajuda para solucionar esse jogo.
    Utilizei novas imagens,está dando erro .Como faço para solucionar esse problema?
    ERRO: imagemPainel = new ImageIcon(getClass().getResource(“/imagens/jogo/painel.jpeg”));
    TelaUm application = new TelaUm();

  7. Olá estou utilizando eclipse e ocorre os seguintes erros de compilação:

    Exception in thread “main” java.lang.NullPointerException
    at javax.swing.ImageIcon.(Unknown Source)
    at TelaUm.(TelaUm.java:72)
    at TelaUm.main(TelaUm.java:288)

    Linha 72 = imagemPainel = new ImageIcon(getClass().getResource(“/imagens/jogo/painel.gif”));
    Linha 288 =TelaUm application = new TelaUm();

  8. Olá gustavo,
    Eu e umas amigas estamos fazendo um trabaho de JAVA e gostamos do seu código -fonte, mas ainda somos iniciantes e estamos usando o IDE NetBeans e qual é classe principal? o sobre console?

  9. Olá… No meu caso o erro é :

    Exception in thread “main” java.lang.NullPointerException
    at javax.swing.ImageIcon.(Unknown Source)
    at TelaUm.(TelaUm.java:69)
    at TelaUm.main(TelaUm.java:276)

    Não consegui resolver, se conseguir me ajudar muito OBRIGADO

  10. fala luiz, beleza, sou eu de novo e vim aqui postar o jogo de memória que voce fez e que serviu de inspiração para meu grupo, vou colocar um link do dropbox para voce ver o jogo seu que nós aprimoramos e que serviu como projeto para nosso trabalho da faculdade, queria dizer muito obrigado por nos propiciar um pouco de entendimento, ja que nós nao tinhamos ideia de como começarmos o jogo. obrigado mesmo.

    https://www.dropbox.com/s/nyj6rj9tuuz8wqe/Instala%C3%A7%C3%A3o%20do%20Jogo%20da%20MEMEm%C3%B3ria.exe

  11. cara você é muito bom mesmo, parabéns….Faço faculdade de Sistemas de Informação e tenho Java, precisei pra tirar algumas duvidas, um dia quero estar assim como você.

  12. Oi Luiz tudo bem,

    Será que vc poderia me ajudar?

    Eu fiz um jogo da memória também, só que no meu caso foi assim, eu queria que os pares fossem 2+2 par com 4 e assim por diante..
    Eu criei duas pastas uma com operações e outra com os resultados e um método ramdom mas ele acaba pegando as vezes as imagens da mesma pasta e mostra 2+2 com 2+2..
    será que vc pode me dar uma ajuda??

    Obrigada..

    • o que voce pode fazer tatiana seria renomear a imagem com 2+2 com o mesmo nome do 4 e fazer com que a funcao de comparar as cartas que tenham o mesmo nome entendeu ?

    • at jogo.TelaUm.(TelaUm.java:68)=>>>>>
      imagemPainel = new ImageIcon(getClass().getResource(“/imagens/jogo/painel.gif”));

      at jogo.TelaUm.main(TelaUm.java:275)=>>>>>>
      TelaUm application = new TelaUm();

  13. Exception in thread “main” java.lang.NullPointerException
    at javax.swing.ImageIcon.(Unknown Source)
    at jogo.TelaUm.(TelaUm.java:68)
    at jogo.TelaUm.main(TelaUm.java:275)

    Esta dando este erro aqui no meu, alguem pode me ajudar??

    • at jogo.TelaUm.(TelaUm.java:68)=>>>>>
      imagemPainel = new ImageIcon(getClass().getResource(“/imagens/jogo/painel.gif”));
      at jogo.TelaUm.main(TelaUm.java:275)=>>>>>>
      TelaUm application = new TelaUm();

      • tem que cortar as imagens da foto e redimensiona-las e salva-las como fig e depois criar pastas e subpastas que irao ficar na pasta do projeto
        só ler o post certinho que da certo

  14. Exception in thread “main” java.lang.NullPointerException
    at javax.swing.ImageIcon.(Unknown Source)
    at TelaUm.(TelaUm.java:69)
    at TelaUm.main(TelaUm.java:271)
    No meu ta dando esse erro, que eu faço? Preciso disso

    • Olá Patrícia, tudo bem?
      Concordo contigo em partes.
      Pense em uma pessoa que está começando a aprender Java (como eu, na época em que fiz este jogo) e que não sabe ainda usar SVN ou Git. É muito mais direto apresentar o fonte na página. Esta prática de apresentar o fonte na publicação, aliás, vem sendo usada há muito tempo e ainda hoje nos principais fóruns.
      Além disso, a intenção na época em que publiquei não era disponibilizar o projeto pronto para executar, mas mostrar como foi feito.

      Obrigado pelo feedback!

  15. O que essa linha de codigo quer dizer?
    double d_largura = (fator == 4?82.5:80);
    Quando tento mudar o fator para 4.0, o Eclipse diz que nao tem como converter de double pra boolean.
    Obrigado por disponibilizar este codigo a todos, vai me ajudar muito.

  16. Ola belo trabalho, mas estou com problema está dando um erro e não consigo resolver
    Exception in thread “main” java.lang.NullPointerException
    at javax.swing.ImageIcon.(ImageIcon.java:217)
    at TelaUm.(TelaUm.java:69)
    at TelaUm.main(TelaUm.java:273)
    Java Result: 1
    Não sei como resolver esse erro se puderes me ajudar fiz tudo como dito acima.
    Meu e-mail: otaviogarciamarzullo@gmail.com

    • opa, tudo bem?
      eu tive o mesmo problema e resolveu com a implemantação do objeto imageIcon de forma mais simples
      Ex: imagemPadrao = new ImageIcon(“C:\\….[caminho a ser seguido]”)

      Quanto ao Jogo do Luis Gustavo, ficou show de bola!!!!, muito agradecido pelo aprendizado!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s