import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class E_queen extends Applet implements Runnable{
int mx,my;
int px,py;
int rx,ry;
int cx,cy;
int cn[] = {0,0,0,0,0,0,0,0};
int ce[] = {0,0,0,0,0,0,0,0};
int cr[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int cl[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int td[][] = {{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}};
int sd = 8;
int fg = 0;
Image pic,mp;
Thread th = null;
Image os;
Graphics og;
public void init(){
setBackground(Color.white);
os = createImage(460,380);
og = os.getGraphics();
pic = getImage(getDocumentBase(),"Picture/queen.gif");
addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e){
px = (e.getX() - 20) / 40;
py = (e.getY() - 40) / 40;
cx = px;
cy = py;
if((px < 8) && (py < 8)){
if(td[py][px] == 1){
mp = getImage(getDocumentBase(),"Picture/queen.gif");
mx = e.getX() - 20;
my = e.getY() - 60;
td[py][px] = 0;
cn[px] = 0;
ce[py] = 0;
cr[px + py] = 0;
cl[px - py + 7] = 0;
fg = 1;
}
}else if((px > 7) && (sd > 0)){
mp = getImage(getDocumentBase(),"Picture/queen.gif");
mx = e.getX() - 20;
my = e.getY() - 60;
sd = sd - 1;
fg = 1;
}
repaint();
}
public void mouseReleased(MouseEvent e){
rx = (e.getX() - 20) / 40;
ry = (e.getY() - 40) / 40;
if((rx < 8) && (ry < 8)){
if((td[ry][rx] == 0) && (cn[rx] == 0) && (ce[ry] == 0) &&
(cr[rx + ry] == 0) && (cl[rx - ry + 7] == 0) &&(fg == 1)){
td[ry][rx] = 1;
cn[rx] = 1;
ce[ry] = 1;
cr[rx + ry] = 1;
cl[rx - ry + 7] = 1;
mx = rx * 40 + 20;
my = ry * 40;
fg = 0;
}else{
if((cx < 8) && (fg == 1)){
td[cy][cx] = 1;
cn[cx] = 1;
ce[cy] = 1;
cr[cx + cy] = 1;
cl[cx - cy + 7] = 1;
mx = cx * 40 + 20;
my = cy * 40;
fg = 0;
}else if(cx > 7){
mx = cx * 40 + 360;
my = cy * 40 + 20;
mp = getImage(getDocumentBase(),"");
sd = sd + 1;
fg = 0;
}
}
}else if(rx > 7){
mp = getImage(getDocumentBase(),"");
sd = sd + 1;
fg = 0;
}
repaint();
}
}
);
addMouseMotionListener(
new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
if(fg == 1){
mx = e.getX() - 20;
my = e.getY() - 60;
}
repaint();
}
}
);
}
public void paint(Graphics g){
og.setColor(Color.white);
og.fillRect(0,0,460,380);
og.setColor(Color.black);
for(int k = 0;k < 9;k ++){
og.drawLine(20,40 + 40 * k,20 + 40 * 8,40 + 40 * k);
og.drawLine(20 + 40 * k,40,20 + 40 * k,40 + 40 * 8);
}
for(int x = 0;x < 8;x ++){
for(int y = 0;y < 8;y ++){
og.setColor(Color.blue);
if((cn[x] == 1) || (ce[y] == 1) ||
(cr[x + y] == 1) || (cl[x - y + 7] == 1))og.fillRect(x * 40 + 22,y * 40 + 42,37,37);
}
}
for(int x = 0;x < 8;x ++){
for(int y = 0;y < 8;y ++){
if(td[y][x] == 1)og.drawImage(pic,x * 40 + 20,y * 40,40,80,this);
}
}
for(int n = 0;n < sd;n ++){
og.drawImage(pic,(n % 2) * 40 + 360,(n / 2) * 80 + 20,40,80,this);
}
og.drawImage(mp,mx,my,40,80,this);
g.drawImage(os,0,0,this);
}
public void start(){
if(th == null){
th = new Thread(this);
th.start();
}
}
public void stop(){
th = null;
}
public void run(){
while(th != null){
try{
Thread.sleep(100);
}
catch (InterruptedException e){
}
}
}
public void update( Graphics g ){
paint( g ) ;
}
}
