Java Project
Java Project
*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
int rows = 4;
int columns = 5;
int cardWidth = 90;
int cardHeight = 128;
int errorCount = 0;
ArrayList<JButton> board;
Timer hideCardTimer;
boolean gameReady = false;
JButton card1Selected;
JButton card2Selected;
MatchCards() {
setupCards();
shuffleCards();
// frame.setVisible(true);
frame.setLayout(new BorderLayout());
frame.setSize(boardWidth, boardHeight);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//error text
textLabel.setFont(new Font("Arial", Font.PLAIN, 20));
textLabel.setHorizontalAlignment(JLabel.CENTER);
textLabel.setText("Errors: " + Integer.toString(errorCount));
if (card1Selected.getIcon() != card2Selected.getIcon()) {
errorCount += 1;
textLabel.setText("Errors: " + Integer.toString(errorCount));
hideCardTimer.start();
}
else {
card1Selected = null;
card2Selected = null;
}
}
}
}
});
board.add(tile);
boardPanel.add(tile);
}
frame.add(boardPanel);
gameReady = false;
restartButton.setEnabled(false);
card1Selected = null;
card2Selected = null;
shuffleCards();
errorCount = 0;
textLabel.setText("Errors: " + Integer.toString(errorCount));
hideCardTimer.start();
}
});
restartGamePanel.add(restartButton);
frame.add(restartGamePanel, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
//start game
hideCardTimer = new Timer(1500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
hideCards();
}
});
hideCardTimer.setRepeats(false);
hideCardTimer.start();
void setupCards() {
cardSet = new ArrayList<Card>();
for (String cardName : cardList) {
//load each card image
Image cardImg = new ImageIcon(getClass().getResource("./img/" + cardName +
".jpg")).getImage();
ImageIcon cardImageIcon = new ImageIcon(cardImg.getScaledInstance(cardWidth,
cardHeight, java.awt.Image.SCALE_SMOOTH));
void shuffleCards() {
System.out.println(cardSet);
//shuffle
for (int i = 0; i < cardSet.size(); i++) {
int j = (int) (Math.random() * cardSet.size()); //get random index
//swap
Card temp = cardSet.get(i);
cardSet.set(i, cardSet.get(j));
cardSet.set(j, temp);
}
System.out.println(cardSet);
}
void hideCards() {
if (gameReady && card1Selected != null && card2Selected != null) { //only flip 2 cards
card1Selected.setIcon(cardBackImageIcon);
card1Selected = null;
card2Selected.setIcon(cardBackImageIcon);
card2Selected = null;
}
else { //flip all cards face down
for (int i = 0; i < board.size(); i++) {
board.get(i).setIcon(cardBackImageIcon);
}
gameReady = true;
restartButton.setEnabled(true);
}
}
}