the following is my code... can some1 tell me where my problems lies? the timer can't run properly, there's no sound from the audio clip and the actionListener() method dosen't run well....
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class gameApplet extends JApplet implements ActionListener {
//create all variable
private int points = 0;
private int counts = 0;
//declare all instances and objects
private JLabel topLabel = new JLabel("Picture Matching Game", JLabel.CENTER);
private JLabel bottomLabel = new JLabel("Do you know your ABC?", JLabel.CENTER);
private JPanel strPanel= new JPanel();
private JButton play = new JButton("Play Game");
private JButton exit = new JButton ("Exit Game");
private JLabel score = new JLabel("Score:");
private JTextField scOre= new JTextField(5);
private JPanel right = new JPanel();
private JLabel time = new JLabel("Time ellapsed:");
private JTextField tiMe= new JTextField(5);
private JPanel ctrPanel= new JPanel();
private JPanel picsPanel = new JPanel();
private JPanel imagesPanel = new JPanel();
private final int NUM_OF_PICS = 26;
private final int NUM_OF_IMAGES = 26;
private JButton[] picsBtn = new JButton[NUM_OF_PICS];
private JButton[] imagesBtn = new JButton[NUM_OF_IMAGES];
private JPanel centre = new JPanel();
private JPanel centreTop = new JPanel();
private JPanel centreBottom = new JPanel();
Timer tgame;
public long startTime, endTime, elapseTime;
//declare an ImageIcon arr for pics
ImageIcon[] pictures = new ImageIcon[NUM_OF_PICS];
//declare an array
string for pictures
String[] arrPics = {
"a.gif", "b.gif", "c.gif", "d.gif", "e.gif", "f.gif", "g.gif", "h.gif",
"i.gif", "j.gif", "k.gif", "l.gif", "m.gif",
"n.gif", "o.gif", "p.gif", "q.gif", "r.gif", "s.gif", "t.gif", "u.gif",
"v.gif", "w.gif", "x.gif", "y.gif", "z.gif"};
//method to load pictures to the button
public void loadPics() {
//load the picture onto the button
for (int i = 0; i < pictures.length; i++) {
//img[i] = new ImageIcon(getImage(getCodeBase(), imgFile[i]));
pictures[i] = new ImageIcon (getImage(getCodeBase(), arrPics[i]));
}
}
//declare an ImageIcon arr for images
ImageIcon[] images = new ImageIcon[NUM_OF_IMAGES];
//declare an array string for images
String[] arrImages = {
"imagesA.gif", "imagesB.gif", "imagesC.gif", "imagesD.gif", "imagesE.gif",
"imagesF.gif", "imagesG.gif", "imagesH.gif", "imagesI.gif", "imagesJ.gif", "imagesK.gif",
"imagesL.gif",
"imagesM.gif", "imagesN.gif", "imagesO.gif", "imagesP.gif", "imagesQ.gif", "imagesR.gif",
"imagesS.gif",
"imagesT.gif", "imagesU.gif", "imagesV.gif", "imagesW.gif", "imagesX.gif", "imagesY.gif",
"imagesZ.gif"};
//method to load images to the button
public void loadImages() {
for (int i=0; i<images.length; i++) {
images[i] = new ImageIcon(getImage(getCodeBase(),arrImages[i]));
}
}
//method to randomize the images
public void rand() {
ImageIcon temp;
for(int i =0; i<arrImages.length; i++) {
int x = (int)(Math.random()*26);
int y = (int)(Math.random()*26);
temp = images[x];
images[x] = images[y];
images[y] = temp;
}
}
//init() method to start the
applet public void init(){
String name = JOptionPane.showInputDialog(null,
"Please enter your name",
"Name",
JOptionPane.QUESTION_MESSAGE);
JOptionPane.showMessageDialog(null,
"Hi " + name + "!",
"Greetings",
JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,
"Click the 'Play Game' button to play the game",
"Instruction",
JOptionPane.INFORMATION_MESSAGE);
// cannot run; timer also cannot run properly
AudioClip mySong = getAudioClip(getCodeBase(), "s.mp3");
mySong.play();
tgame = new Timer(100, this);
Container container = getContentPane();
container.setLayout(new BorderLayout(5,10));
topPanel();
container.add(strPanel, BorderLayout.NORTH);
rightPanel();
container.add(right, BorderLayout.EAST);
loadPics();
loadImages();
rand();
centrePanel();
container.add(centre, BorderLayout.CENTER);
}
//method to draw the centre panel
public void centrePanel() {
centre.setLayout(new BorderLayout(5, 10));
//create the array of cells to represent pictures
for(int i =0; i<pictures.length; i++) {
centreTop.setLayout(new GridLayout(3, 6));
picsBtn[i] = new JButton();
picsBtn[i].setIcon(pictures[i]);
centreTop.add(picsBtn[i]);
picsBtn[i].setBackground(Color.BLACK);
picsBtn[i].addActionListener(this);
}
for(int i =0; i<images.length; i++) {
centreBottom.setLayout(new GridLayout(3, 6));
imagesBtn[i] = new JButton();
imagesBtn[i].setIcon(images[i]);
centreBottom.add(imagesBtn[i]);
imagesBtn[i].setBackground(Color.BLACK);
imagesBtn[i].addActionListener(this);
}
centre.add(centreTop, BorderLayout.NORTH);
centre.add(centreBottom, BorderLayout.CENTER);
}
//method to draw string
public void topPanel() {
strPanel.setLayout(new BorderLayout(5, 10));
strPanel.add(topLabel, BorderLayout.NORTH);
strPanel.add(bottomLabel, BorderLayout.CENTER);
}
//method to add play,exit and score to thr right panel
public void rightPanel() {
right.setLayout(new BoxLayout(right, BoxLayout.Y_AXIS));
JPanel jp = new JPanel();
jp.setPreferredSize(new Dimension(100, 600));
scOre.setEditable(false);
tiMe.setEditable(false);
scOre.setBackground(Color.WHITE);
tiMe.setBackground(Color.WHITE);
right.add(play);
right.add(exit);
right.add(score);
right.add(scOre);
right.add(time);
right.add(tiMe);
right.add(jp);
}
//method to count marks
public static int count(int points, int counts) {
switch (counts) {
case 1:
points += 5;
break;
case 2:
points += 4;
break;
case 3:
points += 3;
break;
default:
points += 2;
break;
}
return points;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == exit) {
tgame.stop();
System.exit(1);
}
else if (e.getSource() == play) {
loadPics();
loadImages();
elapseTime = 0;
startTime = System.currentTimeMillis();
tgame.start();
}
endTime = System.currentTimeMillis();
elapseTime = (endTime - startTime) / 1000;
tiMe.setText(elapseTime + " sec");
}
} //applet