Eu estou fazendo um jogo da memoria para um trabalho da faculdade e estou com alguns problemas que não consigo resolver… Ja pesquisei bastante mas não achei uma solução ainda…
Primeiro eu to tentando colocar imagens nos botoes(nas cartas e em outros botoes) e não to conseguindo. Eu to fazendo assim:
public class TelaPrincipal extends JFrame implements ActionListener, ItemListener {
...
ImageIcon imgnovo = new ImageIcon("new.gif");
JButton bnovo = new JButton(new ImageIcon("imgnovo"));
...
public TelaPrincipal(){
...
bnovo.setBounds(bnovo.getX(), bnovo.getY(), 300,300);
...
o problema é que a imagem não aparece, fica como se o botão estivesse vazio eu jah tentei mudar o local da imagem e fazer mts outras coisas mas naum sei o que estah errado
outro problema é quando se está jogando e clica na segunda peça para mostrar a imagem, ela vira antes de mostra a segunda imagem e sempre que se clica em um par diferente ele zera todas as imagens anteriores… Eu sei que esse problema eh com o metodo que eu criei para zerar as imagens, mas não sei como fazer pra ele esperar um pouco antes de desvirar as cartas erradas e como fazer pra ele reconhecer somente on dois ultimos clikes e desvirar soh eles. Vo postar o meu código inteiro aqui:
[code]import java.awt.;
import java.awt.event.;
import java.util.Random;
import javax.swing.*;
public class TelaPrincipal extends JFrame implements ActionListener, ItemListener {
JPanel panel = new JPanel();
JPanel jogo = new JPanel();
ImageIcon imgnovo = new ImageIcon("new.gif");
//ImageIcon im1 = new ImageIcon(getClass().getResource("imagem1.gif"));
int temp1 = 0;
int temp2 = 0;
int acertos = 0;
JMenuBar mb = new JMenuBar();
JMenu novo = new JMenu("Novo");
JMenu otrs = new JMenu("Outros");
JMenuItem mi1 = new JMenuItem("Ver Ranking");
JMenuItem mi2 = new JMenuItem("Sobre");
JMenuItem mi3 = new JMenuItem("Instruções");
JToolBar tool = new JToolBar(JToolBar.VERTICAL);
JButton bnovo = new JButton(new ImageIcon("imgnovo"));//new ImageIcon(""));
JButton bsair = new JButton("sair");//new ImageIcon(""));
JButton botao3 = new JButton();
//contador de tentativas
int tentativas = 0;
JLabel tent = new JLabel("número de tentativas: " + tentativas);
//botoes para o jogo
JButton [] b = new JButton[16];
int [] posicoes = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//contador de clicks
int contclk = 0;
public TelaPrincipal(){
super("Jogo da Memoria");
for(int i=0 ; i<16 ; i++){
b[i] = new JButton();
b[i].addActionListener(this);
}
add(panel);
panel.setLayout(new BorderLayout());
panel.setBackground(Color.white);
panel.setPreferredSize(new Dimension(670,470));
panel.add(mb, BorderLayout.NORTH);
mb.add(novo);
mb.add(otrs);
otrs.add(mi1);
otrs.add(mi2);
otrs.add(mi3);
panel.add(tent, BorderLayout.AFTER_LAST_LINE);
panel.add(tool, BorderLayout.WEST);
tool.add(bnovo);
tool.add(bsair);
tool.setBounds(tool.getX(), tool.getY(), 500,500);
bnovo.setBounds(bnovo.getX(), bnovo.getY(), 300,300);
panel.add(jogo, BorderLayout.CENTER);
jogo.setLayout(new GridLayout(4,4));
adicionar(posicoes, b);
bsair.addActionListener(this);
bnovo.addActionListener(this);
mi1.addItemListener(this);
mi2.addItemListener(this);
mi3.addItemListener(this);
novo.addItemListener(this);
setLayout(new FlowLayout());
this.setSize(700,520);
this.setVisible(true);
}
public static void main(String[] args){
TelaPrincipal janela = new TelaPrincipal();
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLocationRelativeTo(null);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b[0]){
b[0].setBackground(Color.GREEN);
contclk++;
temp1 = 1;
}
else if(e.getSource()==b[1]){
b[1].setBackground(Color.GREEN);
contclk++;
temp2 = 1;
}
else if(e.getSource()==b[2]){
b[2].setBackground(Color.BLUE);
contclk++;
temp1 = 2;
}
else if(e.getSource()==b[3]){
b[3].setBackground(Color.BLUE);
contclk++;
temp2 = 2;
}
else if(e.getSource()==b[4]){
b[4].setBackground(Color.RED);
contclk++;
temp1 = 3;
}
else if(e.getSource()==b[5]){
b[5].setBackground(Color.RED);
contclk++;
temp2 = 3;
}
else if(e.getSource()==b[6]){
b[6].setBackground(Color.CYAN);
contclk++;
temp1 = 4;
}
else if(e.getSource()==b[7]){
b[7].setBackground(Color.CYAN);
contclk++;
temp2 = 4;
}
else if(e.getSource()==b[8]){
b[8].setBackground(Color.YELLOW);
contclk++;
temp1 = 5;
}
else if(e.getSource()==b[9]){
b[9].setBackground(Color.YELLOW);
contclk++;
temp2 = 5;
}
else if(e.getSource()==b[10]){
b[10].setBackground(Color.MAGENTA);
contclk++;
temp1 = 6;
}
else if(e.getSource()==b[11]){
b[11].setBackground(Color.MAGENTA);
contclk++;
temp2 = 6;
}
else if(e.getSource()==b[12]){
b[12].setBackground(Color.PINK);
contclk++;
temp1 = 7;
}
else if(e.getSource()==b[13]){
b[13].setBackground(Color.PINK);
contclk++;
temp2 = 7;
}
else if(e.getSource()==b[14]){
b[14].setBackground(Color.BLACK);
contclk++;
temp1 = 8;
}
else if(e.getSource()==b[15]){
b[15].setBackground(Color.BLACK);
contclk++;
temp2 = 8;
}
else if(e.getSource()==bsair){
System.exit(0);
}
else if(e.getSource()==bnovo){
zerarImagens();
tentativas=0;
contclk=0;
acertos=0;
embaralhar(posicoes);
adicionar(posicoes, b);
tent.setText("número de tentativas: " + tentativas);
/*for(int i = 0; i<16; i++){
System.out.println(posicoes[i]);
}
*/
}
if(contclk == 2){
//ThreadA a = new ThreadA();
//a.start();
tentativas++;
tent.setText("número de tentativas: " + tentativas);
System.out.println("contador em 2");
System.out.println("tentativas: " + tentativas);
contclk = 0;
comparar(temp1, temp2);
}
}
public void zerarImagens(){
for(int i=0 ; i<16 ; i++){
b[i].setBackground(null);
}
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getSource()==mi1){
//abrir janela de ranking
System.out.println("ranking clicado");
}
else if(e.getSource()==mi2){
System.out.println("dificuldade clicada");
}
else if(e.getSource()==mi3){
//abrir jalena com instruções
System.out.println("instruções clicada");
}
else if(e.getSource()==novo){
zerarImagens();
tentativas = 0;
contclk = 0;
acertos = 0;
embaralhar(posicoes);
tent.setText("número de tentativas: " + tentativas);
adicionar(posicoes, b);
}
}
public void embaralhar(int array[]) {
Random ran = new Random();
for(int i = 0; i < array.length; i++) {
int from = ran.nextInt(array.length);
int to = ran.nextInt(array.length);
int tmp = array[from];
array[from] = array[to];
array[to] = tmp;
}
}
public void adicionar(int arraya[], JButton arrayb[]){
for(int i=0; i<arraya.length; i++){
int x = arraya[i];
jogo.add(arrayb[x]);
}
}
public void comparar(int a,int b){
if(a != b){
zerarImagens();
}else{
acertos++;
if(acertos == 8){
JOptionPane.showMessageDialog(null, "Parabén, Voce Ganhou! \n Aperte 'novo' para começar novamente ou 'sair' para fechar o jogo");
}
}
}
}
class ThreadA extends Thread {
public void run(){
try{
sleep(2000);
}catch(InterruptedException ie){
}
}
}[/code]
Essa Thread no final foi uma tentativa minha de pausar… mas naum consegui fazer funcionar e ele ainda tah com corres nas peças e naum figuras… mas tah ai
agradeço toda e qualquer ajuda!!
Muito Obrigada! ^^