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 ) ; } }