//
//Puzzle - copyright 1998, Ken Perlin; all rights reserved. import java.awt.*; import java.net.*; public class Puzzle extends BufferedApplet //BufferedApplet { int w = 100, i = 3, j = 3, I[][] = new int[4][4], J[][] = new int[4][4]; Image src = null; public void render(Graphics g) { if (src == null) { //First time: fetch the image. try { src = getImage(new URL(getParameter("src"))); } catch (MalformedURLException e) { System.err.println(e); } for (int u = 0 ; u < 4 ; u++) for (int v = 0 ; v < 4 ; v++) { I[u][v] = v; //Squares begin in transposed order. J[u][v] = u; } } for (int u = 0 ; u < 4 ; u++) //To render: paste on each square, for (int v = 0 ; v < 4 ; v++) g.create(u*w,v*w,w,w).drawImage(src, -I[u][v]*w, -J[u][v]*w, this); g.setColor(Color.gray.brighter()); g.fill3DRect(i*w,j*w,w,w, false); //then draw the blank square. } public boolean mouseUp(Event e, int x, int y) { int u = x / w, v = y / w; if (u>=0 && u<4 && v>=0 && v<4 && Math.abs(u-i)+Math.abs(v-j) == 1) { I[i][j] = I[u][v]; J[i][j] = J[u][v]; //User clicked on a square that's i = u; //next to the blank square: j = v; //move the clicked-on square. } return true; } }