Applet Image Problem (repaint(); location?)
hey guys so I'm trying to set up a checkers applet (working my way up to chess) and i have pretty much everything figured out up to this point, but when I try to draw the pieces on the board, the program glitches and first of all, it only tries to draw the piece in the first square, not the rest of the squares where I have assigned them but flicks between the 3 images that I am trying to put up and actually makes a noise (which i never programmed in) through the headphones. this might be because of my placement of the repaint() method but it might be because of something in one of the object classes I made. (I'm new to java)
anyways here's the code for the SSCCE I made, you can now copy, paste, and run this:
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class SSCCE extends Applet implements MouseListener{
BlackChecker b [] = new BlackChecker [12];
RedChecker r [] = new RedChecker [12];
public int board[][] = new int [][] {{0,1,0,1,0,1,0,1,},{1,0,1,0,1,0,1,0},
{0,1,0,1,0,1,0,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{2,0,2,0,2,0,2,0},{0,2,0,2,0,2,0,2},{2,0,2,0,2,0,2,0}};
int xpos;
int ypos;
boolean rCheckerSelect [] = new boolean [12];
boolean bCheckerSelect [] = new boolean [12];
Color bgColor = Color.black;
URL base;
Image checkerboard;
Image redChecker;
Image blackChecker;
Image select;
MediaTracker mt;
public void init(){
mt = new MediaTracker(this);
checkerboard = getImage(getCodeBase(),"checkerboard.gif");
redChecker = getImage(getCodeBase(),"red checker.gif");
blackChecker = getImage(getCodeBase(),"black checker.gif");
select = getImage(getCodeBase(),"select.gif");
try{
base = getDocumentBase();
}
catch (Exception e) {}
checkerboard = getImage(base,"http://yooklid.files.wordpress.com/2010/01/checkerboard.jpg");
redChecker = getImage(base,"http://www.homeschoolarts.com/k6images/beach_scene/sun-red-circle.gif");
blackChecker = getImage(base,"http://img385.imageshack.us/img385/577/black300x300gq1.jpg");
select = getImage(base,"http://www.mspta.net/BlueSquare.gif");
mt.addImage(checkerboard,1);
mt.addImage(redChecker,2);
mt.addImage(blackChecker,3);
mt.addImage(select,4);
try {
mt.waitForAll();
}
catch (InterruptedException e) {}
addMouseListener(this);
setBackground(bgColor);
BlackChecker b1 = new BlackChecker(1,0);
BlackChecker b2 = new BlackChecker(3,0);
BlackChecker b3 = new BlackChecker(5,0);
BlackChecker b4 = new BlackChecker(7,0);
BlackChecker b5 = new BlackChecker(0,1);
BlackChecker b6 = new BlackChecker(2,1);
BlackChecker b7 = new BlackChecker(4,1);
BlackChecker b8 = new BlackChecker(6,1);
BlackChecker b9 = new BlackChecker(1,2);
BlackChecker b10 = new BlackChecker(3,2);
BlackChecker b11 = new BlackChecker(5,2);
BlackChecker b12 = new BlackChecker(7,2);
b[0] = b1;
b[1] = b2;
b[2] = b3;
b[3] = b4;
b[4] = b5;
b[5] = b6;
b[6] = b7;
b[7] = b8;
b[8] = b9;
b[9] = b10;
b[10] = b11;
b[11] = b12;
RedChecker r1 = new RedChecker(0,5);
RedChecker r2 = new RedChecker(2,5);
RedChecker r3 = new RedChecker(4,5);
RedChecker r4 = new RedChecker(6,5);
RedChecker r5 = new RedChecker(1,6);
RedChecker r6 = new RedChecker(3,6);
RedChecker r7 = new RedChecker(5,6);
RedChecker r8 = new RedChecker(7,6);
RedChecker r9 = new RedChecker(0,7);
RedChecker r10 = new RedChecker(2,7);
RedChecker r11 = new RedChecker(4,7);
RedChecker r12 = new RedChecker(6,7);
r[0] = r1;
r[1] = r2;
r[2] = r3;
r[3] = r4;
r[4] = r5;
r[5] = r6;
r[6] = r7;
r[7] = r8;
r[8] = r9;
r[9] = r10;
r[10] = r11;
r[11] = r12;
}
public void stop(){
}
public void paint(Graphics g){
resize(600,600);
g.drawImage(checkerboard, 0, 0, 600, 600, this);
for(int i = 0; i < 12; i++){
g.drawImage(blackChecker, b[i].blackCheckerBoardX, b[i].blackCheckerBoardY, 75, 75, this);
g.drawImage(redChecker, r[i].redCheckerBoardX, r[i].redCheckerBoardY, 75, 75, this);
if(bCheckerSelect[i]){
g.drawImage(select, b[i].blackCheckerBoardX, b[i].blackCheckerBoardY, 75, 75, this);
}
if(rCheckerSelect[i]){
g.drawImage(select, r[i].redCheckerBoardX, r[i].redCheckerBoardY, 75, 75, this);
}
}
}
public void mouseMoved(MouseEvent me){
xpos = me.getX();
ypos = me.getY();
for(int i = 0; i < 12; i++){
if((xpos >= r[i].redCheckerBoardX && xpos <= (r[i].redCheckerBoardX+75))&&(ypos >= r[i].redCheckerBoardY && ypos <= (r[i].redCheckerBoardY+75))){
rCheckerSelect[i] = true;
repaint();
}
if((xpos >= b[i].blackCheckerBoardX && xpos <= (b[i].blackCheckerBoardX+75))&&(ypos >= b[i].blackCheckerBoardY && ypos <= (b[i].blackCheckerBoardY+75))){
bCheckerSelect[i] = true;
repaint();
}
}
}
public void mouseClicked(MouseEvent me){}
public void mousePressed(MouseEvent me){}
public void mouseReleased(MouseEvent me){}
public void mouseEntered(MouseEvent me){}
public void mouseExited(MouseEvent me){}
}
and the code for my 2 objects:
Code:
public class BlackChecker{
public int blackCheckerX;
public int blackCheckerY;
public int blackCheckerBoardX = 75*blackCheckerX;
public int blackCheckerBoardY = 75*blackCheckerY;
public BlackChecker(int x, int y){
x = blackCheckerX;
y = blackCheckerY;
}
}
Code:
public class RedChecker {
public int redCheckerX;
public int redCheckerY;
public int redCheckerBoardX = 75*redCheckerX;
public int redCheckerBoardY = 75*redCheckerY;
public RedChecker(int x, int y){
x = redCheckerX;
y = redCheckerY;
}
}