Ajuda-Urgente-----Jogo da Memoria

Olá Pessoal, eu sou novo em Java e queria uma ajuda;
Criar uma classe em JAva chamada Carta que represente uma carta do jogo da memoria. Esta carta pode virar para cima e para baixo e guardará consigo um numero identificador, o caminho da imagem a ser exibida, bem como o seu estado atual: virada ou desvirada;
Criar também uma classe chamada GAmeEngine a qual terá uma matriz do tipo Carta de tamanho 4x4. Essa classe precisará preencher a matriz com 16 objetos fixos do tipo Carta sendo que divididos aos pares por imagem (ou seja, os 16 objetos terão 8 imagens diferentes). A GameEngine terá ainda um metodo virarCarta que receberá as coordenadas (linha e coluna) da carta a ser viradfa, a partir dessas coordenadas ela deverá pedir para o objeto carta correspondente da matriz se virar;
Por fim, criar uma JFrame (SWING) que instanciará um objeto do tipo GameEngine, e terá 2 JComboBoxes com 4 itens cada (valores: 1,2,3,4) e 1 botão. Tal botão chamará o metodo virarCarta do objeto GameEngine passando os valores selecionados dos JComboBoxes como coordenadas da matriz para simular jogadas do jogo da memoria.

Por FAvor, quem puder me ajudar desde já agradeço

e quais são as suas duvidas??

Como fazer

hm… trabalho de faculdade detectééééééd! hahahhaha

da 0 pra ele professor x)

heheheheheh
É uma atividade do curso

Você faz assim:

  1. Crie uma classe em Java chamada Carta que represente uma carta do jogo da memoria;
  2. Coloque nessa classe: um numero identificador, o caminho da imagem a ser exibida, bem como o seu estado atual: virada ou desvirada;
  3. Crie também uma classe chamada GAmeEngine a qual terá uma matriz do tipo Carta de tamanho 4x4
  4. Essa classe precisará preencher a matriz com 16 objetos fixos do tipo Carta sendo que divididos aos pares por imagem (ou seja, os 16 objetos terão 8 imagens diferentes);
  5. A GameEngine terá ainda um metodo virarCarta que receberá as coordenadas (linha e coluna) da carta a ser viradfa, a partir dessas coordenadas ela deverá pedir para o objeto carta correspondente da matriz se virar;
  6. Por fim, crie um JFrame (SWING) que instanciará um objeto do tipo GameEngine, e terá 2 JComboBoxes com 4 itens cada (valores: 1,2,3,4) e 1 botão;
  7. Tal botão chamará o metodo virarCarta do objeto GameEngine passando os valores selecionados dos JComboBoxes como coordenadas da matriz para simular jogadas do jogo da memoria;

Tá aí, dependendo de qual seja a matéria (ou seja, do que está sendo avaliado), não faria mal o professor passar um roteiro como este.

obrigado
vou tentar fazer
vlw mesmo

Tá aí, dependendo de qual seja a matéria (ou seja, do que está sendo avaliado), não faria mal o professor passar um roteiro como este.[/quote]

Eu copiei do enunciado… só separei os tópicos.

Agora, Jo… vai fazendo e postando aqui cada etapa do processo. Se empacar, diga sua dúvida e a gente te ajuda.

package jogoDaMemoria;

[code]
public class Carta {
String estado=“Desvirada”;
String numeroIdentificação=“1”;
String caminho=“C:/Meus Documentos/Minhas Imagens”;

public String getNipe() {
    return numeroIdentificação;
}

public void setNipe(String nipe) {
    this.numeroIdentificação = nipe;
}


public String getEstado() {
    return estado;
}

public void setEstado(String estado) {
    this.estado = estado;
}

public String getCaminho() {
    return caminho;
}

public void setCaminho(String caminho) {
    this.caminho = caminho;
} 

}[/code]

package jogoDaMemoria;

public class GameEngine extends Carta {

Carta[][] Carta = new Carta[4][4];
Carta carta1 = new Carta();

Carta carta2 = new Carta();
Carta carta3 = new Carta();
Carta carta4 = new Carta();
Carta carta5 = new Carta();
Carta carta6 = new Carta();
Carta carta7 = new Carta();
Carta carta8 = new Carta();
Carta carta9 = new Carta();
Carta carta10 = new Carta();
Carta carta11 = new Carta();
Carta carta12 = new Carta();
Carta carta13 = new Carta();
Carta carta14 = new Carta();
Carta carta15 = new Carta();
Carta carta16 = new Carta();

public void Matriz() {
    Carta[0][0] = carta1;
    Carta[0][1] = carta1;
    Carta[0][2] = carta2;
    Carta[0][3] = carta2;
    Carta[1][0] = carta3;
    Carta[1][1] = carta3;
    Carta[1][2] = carta4;
    Carta[1][3] = carta4;
    Carta[2][0] = carta5;
    Carta[2][1] = carta5;
    Carta[2][2] = carta6;
    Carta[2][3] = carta6;
    Carta[3][0] = carta7;
    Carta[3][1] = carta7;
    Carta[3][2] = carta8;
    Carta[3][3] = carta8;




}

public String VirarCarta(int linha, int coluna) {
    if(estado.equals("Virada")){
        estado="Desvirada";

    }else{
        if(estado.equals("Desvirada")){
            estado="Virada";
        }
        
    }

  System.out.println ("Estado: " + estado);
    return estado;


}

}

Suspeitei desde o princípio.
Como ficou óbvio, não havia lido todo enunciado, mas foi até bom porque ao mostrar que havia lido o seu post mais simplificado, o meu destacou a importância da organização das idéias. Estruturado do jeito que você colocou parece outro problema. Vários exercícios básicos que de vez em quando aparecem por aqui podem ser resolvidos (ou ao menos entendidos) com o uso dessas técnicas simples, como o bom e velho teste de mesa.

package jogoDaMemoria;

public class Principal extends javax.swing.JFrame {

public Principal() {
    initComponents();
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jComboBoxLinha = new javax.swing.JComboBox();
    jComboBoxColuna = new javax.swing.JComboBox();
    botaoVirar = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jComboBoxLinha.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3" }));
    jComboBoxLinha.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jComboBoxLinhaActionPerformed(evt);
        }
    });

    jComboBoxColuna.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3" }));
    jComboBoxColuna.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jComboBoxColunaActionPerformed(evt);
        }
    });

    botaoVirar.setText("Virar");
    botaoVirar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botaoVirarActionPerformed(evt);
        }
    });

    jLabel1.setText("Linha");

    jLabel2.setText("Coluna");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(38, 38, 38)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(botaoVirar)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(jComboBoxColuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jComboBoxLinha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(34, 34, 34)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel2)
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))))
            .addContainerGap(230, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(57, 57, 57)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jComboBoxLinha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel1))
            .addGap(30, 30, 30)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jComboBoxColuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel2))
            .addGap(52, 52, 52)
            .addComponent(botaoVirar)
            .addContainerGap(98, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>

private void jComboBoxLinhaActionPerformed(java.awt.event.ActionEvent evt) {                                               
jComboBoxLinha.getSelectedIndex();
    
}                                              

private void jComboBoxColunaActionPerformed(java.awt.event.ActionEvent evt) {                                                

jComboBoxColuna.getSelectedIndex();

}                                               

private void botaoVirarActionPerformed(java.awt.event.ActionEvent evt) {

GameEngine game = new GameEngine();
game.Matriz();
game.VirarCarta(jComboBoxLinha.getSelectedIndex(),jComboBoxColuna.getSelectedIndex());

}

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Principal().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JButton botaoVirar;
private javax.swing.JComboBox jComboBoxColuna;
private javax.swing.JComboBox jComboBoxLinha;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
// End of variables declaration

GameEngine game= null;

}

fiz isso
agora nao sei se tah certo

Suspeitei desde o princípio.
Como ficou óbvio, não havia lido todo enunciado, mas foi até bom porque ao mostrar que havia lido o seu post mais simplificado, o meu destacou a importância da organização das idéias. Estruturado do jeito que você colocou parece outro problema. Vários exercícios básicos que de vez em quando aparecem por aqui podem ser resolvidos (ou ao menos entendidos) com o uso dessas técnicas simples, como o bom e velho teste de mesa.[/quote]

É por isso que pedem naqueles concursos públicos o velho e bom “teste de interpretação de textos”. Muita gente não consegue nem dividir em tópicos um problema.

Como dizia o Jack o Estripador, “vamos em partes”. :stuck_out_tongue:

Eu antes tinha um pouco mais de paciência com isso e fazia o que o Vini fez, ou seja, simplesmente listar os pontos a serem feitos no problema.

Mas nao sei se tah certo

Não está totalmente certo, mas você está no caminho.
Vamos começar analisando sua classe carta. Você aprendeu em sua aula mais de um tipo de dado.

int - para números
boolean - para valores do tipo “sim/não”
double - para números fracionários
String - para texto.

O estado indica se a carta está ou não desvirada. Imagine isso na forma de uma pergunta:
“A carta está virada?”

Que tipo de resposta você obtém? Então, ao invés de String estado, não seria melhor o atributo:
boolean estaVirada = false; //Está virada?

O outro campo é o “número” de indentificação. Isso te diz alguma coisa?
Claro, seu dado é numérico. Portanto, o tipo de dado ou será int (caso não tenha parte fracionária), ou double. Corrija isso também.

Como estamos falando em jogo da memória, não creio que o número de identificação se refina a naipes. Provavelmente, as cartas terão desenhos como frutinhas, bichinhos, ou outra coisa cuti-cuti que esses jogos de memória tem. De qualquer forma, mesmo que seja o desenho de um baralho, o naipe teria pouca relevância nesse caso. Por isso, procure deixar os seus setters e getters com um nome mais significativo.

Finalmente, creio que o caminho aqui refira-se ao caminho completo da imagem. Algo como
“C:/Meus Documentos/Minhas Imagens/UrsinhoPooh.jpg”
“C:/Meus Documentos/Minhas Imagens/Tigrao.jpg”
“C:/Meus Documentos/Minhas Imagens/Leitao.jpg”

Corrige aí e posta a nova classe aqui. Ah, antes de colar o código, dá uma lida nesse tópico aqui:
http://www.guj.com.br/posts/list/50115.java

Ensina a deixar o código formatado, colorido e alinhado aqui no GUJ.

Na sua classe GameEngine. O problema pede uma matriz 8 por 8, não 4 por 4.

Entretanto, pense em como preencher a matriz usando um for.
Dica: não será necessário criar aquele monte de variáveis previamente. E você terá que usar um for dentro de outro for.

tou tentando
eu tava pensando nisso
mas nao conseguiu fazer

Ok. Comece arrumando sua classe de carta e coloque-a aqui.