import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class M_square extends Applet implements Runnable{
Image no[] = new Image[17];
Image mp;
int td[][] = {{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
{-1, 0, 0, 0, 0,-1,-1,-1,-1,-1},
{-1, 0, 0, 0, 0,-1,-1,-1,-1,-1},
{-1, 0, 0, 0, 0,-1,-1,-1,-1,-1},
{-1, 0, 0, 0, 0,-1,-1,-1,-1,-1},
{-1, 1, 2, 3, 4, 5, 6, 7, 8,-1},
{-1, 9,10,11,12,13,14,15,16,-1},
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}};
int px[] = {1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};
int py[] = {5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6};
int mx,my;
int dx,dy;
int ux,uy;
int cx,cy;
int cn;
int fg;
int pdx[][] = {{342,372,342,372},
{342,352,342,352},
{362,372,362,372},
{352,372,362,342},
{472,482,472,482},
{482,492,482,492},
{462,472,462,472},
{482,492,472,462}};
int pdy[][] = {{72,72,102,102},
{132,132,142,142},
{212,212,222,222},
{252,262,282,272},
{82,82,92,92},
{132,132,142,142},
{212,212,222,222},
{252,272,282,262}};
Thread th = null;
Image os;
Graphics og;
public void init(){
setBackground(Color.white);
os = createImage(600,430);
og = os.getGraphics();
for(int i = 0;i < 17;i ++){
no[i] = getImage(getDocumentBase(),"Picture/no"+i+".gif");
}
addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e){
dx = e.getX() / 60;
dy = e.getY() / 60;
if(td[dy][dx] > 0){
cn = td[dy][dx];
td[dy][dx] = 0;
mp = no[cn];
mx = e.getX() - 30;
my = e.getY() - 30;
cx = px[cn - 1];
cy = py[cn - 1];
px[cn -1] = -1;
py[cn -1] = -1;
fg = 1;
}else{
fg = 0;
}
repaint();
}
public void mouseReleased(MouseEvent e){
ux = e.getX() / 60;
uy = e.getY() / 60;
if(fg == 1){
if(td[uy][ux] == 0){
td[uy][ux] = cn;
px[cn - 1] = ux;
py[cn - 1] = uy;
mx = ux * 60;
my = uy * 60;
mp = getImage(getDocumentBase(),"");
fg = 0;
}else{
td[cy][cx] = cn;
px[cn - 1] = cx;
py[cn - 1] = cy;
mx = cx * 60;
my = cy * 60;
mp = getImage(getDocumentBase(),"");
fg = 0;
}
}else{
}
repaint();
}
}
);
addMouseMotionListener(
new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
mx = e.getX() - 30;
my = e.getY() - 30;
repaint();
}
}
);
}
public void paint(Graphics g){
og.setColor(Color.white);
og.fillRect(0,0,600,430);
og.setColor(Color.black);
for(int k = 0;k < 5;k ++){
og.drawLine(60,60 * k + 60,300,60 * k + 60);
og.drawLine(60 * k + 60,60,60 * k + 60,300);
}
for(int j1 = 0;j1 < 4;j1 ++){
for(int j2 = 0;j2 < 5;j2 ++){
og.drawLine(340,j1 * 60 + j2 * 10 + 70,380,j1 * 60 + j2 * 10 + 70);
og.drawLine(j2 * 10 + 340,j1 * 60 + 70,j2 * 10 + 340,j1 * 60 + 110);
og.drawLine(460,j1 * 60 + j2 * 10 + 70,500,j1 * 60 + j2 * 10 + 70);
og.drawLine(j2 * 10 + 460,j1 * 60 + 70,j2 * 10 + 460,j1 * 60 + 110);
}
}
og.setColor(Color.blue);
for(int r1 = 0;r1 < 8;r1 ++){
for(int r2 = 0;r2 < 4;r2 ++){
og.fillRect(pdx[r1][r2],pdy[r1][r2],7,7);
}
}
og.setColor(Color.black);
for(int k = 0;k < 5;k ++){
og.fillRect(75 + 60 * k,15,30,30);
og.fillRect(15,60 * k + 15,30,30);
}
for(int k = 0;k < 4;k ++){
og.fillRect(405,75 + 60 * k,30,30);
og.fillRect(525,75 + 60 * k,30,30);
}
og.setColor(Color.blue);
for(int k = 0;k < 4;k ++){
og.drawLine(60 * k + 90,45,60 * k + 90,60);
og.drawLine(45,60 * k + 90,60,60 * k + 90);
og.drawLine(380,90 + 60 * k,405,90 + 60 * k);
og.drawLine(500,90 + 60 * k,525,90 + 60 * k);
}
og.drawLine(45,45,60,60);
og.drawLine(315,45,300,60);
og.setColor(Color.white);
og.setFont(new Font("Century",Font.PLAIN,20));
og.drawString(""+(td[1][1] + td[2][2] + td[3][3] + td[4][4]),20,35);
og.drawString(""+(td[1][1] + td[1][2] + td[1][3] + td[1][4]),20,95);
og.drawString(""+(td[2][1] + td[2][2] + td[2][3] + td[2][4]),20,155);
og.drawString(""+(td[3][1] + td[3][2] + td[3][3] + td[3][4]),20,215);
og.drawString(""+(td[4][1] + td[4][2] + td[4][3] + td[4][4]),20,275);
og.drawString(""+(td[1][1] + td[2][1] + td[3][1] + td[4][1]),80,35);
og.drawString(""+(td[1][2] + td[2][2] + td[3][2] + td[4][2]),140,35);
og.drawString(""+(td[1][3] + td[2][3] + td[3][3] + td[4][3]),200,35);
og.drawString(""+(td[1][4] + td[2][4] + td[3][4] + td[4][4]),260,35);
og.drawString(""+(td[1][4] + td[2][3] + td[3][2] + td[4][1]),320,35);
og.drawString(""+(td[1][1] + td[1][4] + td[4][4] + td[4][1]),410,95);
og.drawString(""+(td[1][1] + td[1][2] + td[2][1] + td[2][2]),410,155);
og.drawString(""+(td[3][3] + td[3][4] + td[4][3] + td[4][4]),410,215);
og.drawString(""+(td[1][2] + td[2][4] + td[3][1] + td[4][3]),410,275);
og.drawString(""+(td[2][2] + td[2][3] + td[3][2] + td[3][3]),530,95);
og.drawString(""+(td[1][3] + td[1][4] + td[2][3] + td[2][4]),530,155);
og.drawString(""+(td[3][1] + td[3][2] + td[4][1] + td[4][2]),530,215);
og.drawString(""+(td[1][3] + td[2][1] + td[3][4] + td[4][2]),530,275);
for(int i = 0;i < 16;i ++){
og.drawImage(no[i + 1],px[i] * 60,py[i] * 60,this);
}
og.drawImage(mp,mx,my,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 ) ;
}
}
