Sky_Boy_
16-05-2008, 12:43
Boas pessoal....o prof de java sugeriu que elaborassemos o jogo da memoria como trabalho para a disciplina...mediante o codigo apresentado alguem me pode dar umas dicas pa melhorar isto?
Friso que ainda n esta a funcionar :o
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.Timer;
public class teste extends JFrame implements ActionListener {
JButton restart;
JButton quit;
JLabel score, blank;
JTextField userScore;
MyButton button[] = new MyButton [16] ;
int s = 0;
int index,a,b,current;
int counter = 0;
ImageIcon img;
ImageIcon cardBack = new ImageIcon("cardback.jpg");
Timer t;
public static void main(String[] args) {
teste memoryGame = new teste();
}
public teste() {
super();
button[0] = new MyButton (new ImageIcon("car1.gif"), 0);
button[1] = new MyButton (new ImageIcon("car2.gif"), 1);
button[2] = new MyButton (new ImageIcon("car3.gif"), 2);
button[3] = new MyButton (new ImageIcon("car4.gif"), 3);
button[4] = new MyButton (new ImageIcon("car5.jpg"), 4);
button[5] = new MyButton (new ImageIcon("car6.bmp"), 5);
button[6] = new MyButton (new ImageIcon("car7.bmp"), 6);
button[7] = new MyButton (new ImageIcon("car8.jpg"), 7);
button[8] = new MyButton (new ImageIcon("car1.gif"), 0);
button[9] = new MyButton (new ImageIcon("car2.gif"), 1);
button[10] = new MyButton (new ImageIcon("car3.gif"), 2);
button[11] = new MyButton (new ImageIcon("car4.gif"), 3);
button[12] = new MyButton (new ImageIcon("car5.jpg"), 4);
button[13] = new MyButton (new ImageIcon("car6.bmp"), 5);
button[14] = new MyButton (new ImageIcon("car7.bmp"), 6);
button[15] = new MyButton (new ImageIcon("car8.jpg"), 7);
setTitle("Memory Game");
setSize(600,600);
getContentPane().setLayout(new BorderLayout());
this.setBackground(Color.GRAY);
/*for(int s = 0; s < 25; s++){
button = shuffleResultImages(button);
s++;
}*/
JPanel mainGrid = new JPanel (new GridLayout (4,4));
for(int i =0; i<button.length;i++){
button[i].addActionListener(this);
mainGrid.add(button[i]);
}
add(mainGrid, BorderLayout.CENTER);
JPanel userOptions = new JPanel (new GridLayout (8,2));
userOptions.add(score = new JLabel("Your Score (Matches):"));
userOptions.add(userScore = new JTextField(""));
userScore.addActionListener(this);
userOptions.add(blank = new JLabel(" "));
userOptions.add(blank = new JLabel(" "));
userOptions.add(blank = new JLabel(" "));
userOptions.add(restart = new JButton("Restart Game"));
restart.addActionListener(this);
userOptions.add(quit = new JButton("Quit"));
quit.addActionListener(this);
add(userOptions, BorderLayout.EAST);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
for(int j = 0 ; j<button.length; j++){
if (e.getSource() == button[j] && counter == 0){
a = button[j].getIndex();
current = j;
button[j].setFaceUp(true);
repaint();
counter++;
break;
}
else if (e.getSource() == button[j] && counter == 1){
b = button[j].getIndex();
if (a == b){
button[j].setFaceUp(true);
repaint();
counter = 0;
break;
}
else{
button[j].setFaceUp(true);
repaint();
flipPause(1);
button[current].setFaceUp(false);
button[j].setFaceUp(false);
repaint();
counter = 0;
break;
}
}
}
if (e.getSource()==quit)
System.exit(0);
/* if(e.getSource() == restart){
for(int s = 0; s < 25; s++){
button = shuffleResultImages(button);
s++;
}
for(int i = 0; i<button.length;i++){
button[i].setFaceUp(false);
}
}*/
}
public MyButton[] shuffleResultImages(MyButton[] button){
List list = Arrays.asList(button);
Collections.shuffle(list);
button = (MyButton[]) list.toArray();
return button;
}
public void flipPause(int seconds) {
try {
Thread.sleep(1000*seconds);
} catch (Exception e) {
}
}
}
Botões
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyButton extends JButton{
int index;
ImageIcon img;
ImageIcon cardBack = new ImageIcon("cardback.jpg");
public MyButton (ImageIcon theImg, int theIndex){
img = theImg;
index = theIndex;
setIcon(cardBack);
setPreferredSize(new Dimension(150,150));
}
public int getIndex(){
return index;
}
public ImageIcon getCardImage(){
return img;
}
public void setFaceUp(boolean faceUp) {
if (faceUp) {
setIcon(img);
setPreferredSize(new Dimension(150,150));
}
else {
setIcon(cardBack);
setPreferredSize(new Dimension(150,150));
}
}
}
Cumps
Friso que ainda n esta a funcionar :o
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.Timer;
public class teste extends JFrame implements ActionListener {
JButton restart;
JButton quit;
JLabel score, blank;
JTextField userScore;
MyButton button[] = new MyButton [16] ;
int s = 0;
int index,a,b,current;
int counter = 0;
ImageIcon img;
ImageIcon cardBack = new ImageIcon("cardback.jpg");
Timer t;
public static void main(String[] args) {
teste memoryGame = new teste();
}
public teste() {
super();
button[0] = new MyButton (new ImageIcon("car1.gif"), 0);
button[1] = new MyButton (new ImageIcon("car2.gif"), 1);
button[2] = new MyButton (new ImageIcon("car3.gif"), 2);
button[3] = new MyButton (new ImageIcon("car4.gif"), 3);
button[4] = new MyButton (new ImageIcon("car5.jpg"), 4);
button[5] = new MyButton (new ImageIcon("car6.bmp"), 5);
button[6] = new MyButton (new ImageIcon("car7.bmp"), 6);
button[7] = new MyButton (new ImageIcon("car8.jpg"), 7);
button[8] = new MyButton (new ImageIcon("car1.gif"), 0);
button[9] = new MyButton (new ImageIcon("car2.gif"), 1);
button[10] = new MyButton (new ImageIcon("car3.gif"), 2);
button[11] = new MyButton (new ImageIcon("car4.gif"), 3);
button[12] = new MyButton (new ImageIcon("car5.jpg"), 4);
button[13] = new MyButton (new ImageIcon("car6.bmp"), 5);
button[14] = new MyButton (new ImageIcon("car7.bmp"), 6);
button[15] = new MyButton (new ImageIcon("car8.jpg"), 7);
setTitle("Memory Game");
setSize(600,600);
getContentPane().setLayout(new BorderLayout());
this.setBackground(Color.GRAY);
/*for(int s = 0; s < 25; s++){
button = shuffleResultImages(button);
s++;
}*/
JPanel mainGrid = new JPanel (new GridLayout (4,4));
for(int i =0; i<button.length;i++){
button[i].addActionListener(this);
mainGrid.add(button[i]);
}
add(mainGrid, BorderLayout.CENTER);
JPanel userOptions = new JPanel (new GridLayout (8,2));
userOptions.add(score = new JLabel("Your Score (Matches):"));
userOptions.add(userScore = new JTextField(""));
userScore.addActionListener(this);
userOptions.add(blank = new JLabel(" "));
userOptions.add(blank = new JLabel(" "));
userOptions.add(blank = new JLabel(" "));
userOptions.add(restart = new JButton("Restart Game"));
restart.addActionListener(this);
userOptions.add(quit = new JButton("Quit"));
quit.addActionListener(this);
add(userOptions, BorderLayout.EAST);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
for(int j = 0 ; j<button.length; j++){
if (e.getSource() == button[j] && counter == 0){
a = button[j].getIndex();
current = j;
button[j].setFaceUp(true);
repaint();
counter++;
break;
}
else if (e.getSource() == button[j] && counter == 1){
b = button[j].getIndex();
if (a == b){
button[j].setFaceUp(true);
repaint();
counter = 0;
break;
}
else{
button[j].setFaceUp(true);
repaint();
flipPause(1);
button[current].setFaceUp(false);
button[j].setFaceUp(false);
repaint();
counter = 0;
break;
}
}
}
if (e.getSource()==quit)
System.exit(0);
/* if(e.getSource() == restart){
for(int s = 0; s < 25; s++){
button = shuffleResultImages(button);
s++;
}
for(int i = 0; i<button.length;i++){
button[i].setFaceUp(false);
}
}*/
}
public MyButton[] shuffleResultImages(MyButton[] button){
List list = Arrays.asList(button);
Collections.shuffle(list);
button = (MyButton[]) list.toArray();
return button;
}
public void flipPause(int seconds) {
try {
Thread.sleep(1000*seconds);
} catch (Exception e) {
}
}
}
Botões
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyButton extends JButton{
int index;
ImageIcon img;
ImageIcon cardBack = new ImageIcon("cardback.jpg");
public MyButton (ImageIcon theImg, int theIndex){
img = theImg;
index = theIndex;
setIcon(cardBack);
setPreferredSize(new Dimension(150,150));
}
public int getIndex(){
return index;
}
public ImageIcon getCardImage(){
return img;
}
public void setFaceUp(boolean faceUp) {
if (faceUp) {
setIcon(img);
setPreferredSize(new Dimension(150,150));
}
else {
setIcon(cardBack);
setPreferredSize(new Dimension(150,150));
}
}
}
Cumps