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