import java.applet.*; import java.awt.*; public class K_tour extends Applet{ Image pic,pic1,pic2,pic4,pic5,pic7,pic8,pic10,pic11; int kx,ky; int px,py; int dx,dy; int mx,my; int rx,ry; int cx,cy; int md[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int mdc[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int md1[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,-1,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int md1x = 2 , md1y = 2; int md2[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,0,0,0,1,1,1,1}, {1,1,1,1,-1,0,0,0,1,1,1,1}, {1,1,1,1,0,0,0,0,1,1,1,1}, {1,1,1,1,1,0,0,0,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int md2x = 5 , md2y = 4; int md3[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,-1,0,0,0,0,0,1,1,1}, {1,1,1,0,1,0,0,1,0,1,1,1}, {1,1,1,0,0,0,0,0,0,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int md3x = 5 , md3y = 3; int md4[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,0,0,1,1,1,1,1}, {1,1,1,1,1,0,0,1,1,1,1,1}, {1,1,1,-1,0,0,0,0,0,1,1,1}, {1,1,1,0,0,0,0,0,0,1,1,1}, {1,1,1,1,1,0,0,1,1,1,1,1}, {1,1,1,1,1,0,0,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int md4x = 5 , md4y = 3; int md5[][]={{1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,1,1,0,1,1,0,1,1,1,1}, {1,1,-1,0,0,0,0,0,0,0,1,1}, {1,1,1,1,0,1,1,0,1,1,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,1,1,0,1,1,0,1,1,1,1}, {1,1,0,0,0,0,0,0,0,0,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1}}; int md5x = 4 , md5y = 2; Choice sel = new Choice(); Button rep = new Button(" replay "); public void init(){ setBackground(Color.white); pic1 = getImage(getDocumentBase(),"Picture/k-1.gif"); pic2 = getImage(getDocumentBase(),"Picture/k-2.gif"); pic4 = getImage(getDocumentBase(),"Picture/k-4.gif"); pic5 = getImage(getDocumentBase(),"Picture/k-5.gif"); pic7 = getImage(getDocumentBase(),"Picture/k-7.gif"); pic8 = getImage(getDocumentBase(),"Picture/k-8.gif"); pic10 = getImage(getDocumentBase(),"Picture/k-10.gif"); pic11 = getImage(getDocumentBase(),"Picture/k-11.gif"); pic = pic1; kx = md1x; ky = md1y; cx = kx; cy = ky; for(int i1= 2;i1 < 10;i1 ++){ for(int i2 = 2;i2 < 10;i2 ++){ mdc[i1][i2] = md1[i1][i2]; md[i1][i2] = mdc[i1][i2]; } } setLayout(new BorderLayout()); Panel pan = new Panel(); pan.setLayout(new FlowLayout()); sel.addItem("Convex"); sel.addItem("Eight"); sel.addItem("Plus"); sel.addItem("Net"); sel.addItem("Chess Board"); pan.add(sel); pan.add(rep); add("South",pan); } public void paint(Graphics g){ g.setColor(Color.black); for(int k = 0;k < 9;k ++){ g.drawLine(20,20+40*k,20+40*8,20+40*k); g.drawLine(20+40*k,20,20+40*k,20+40*8); } for(int i1 = 2;i1 < 10;i1 ++){ for(int i2 = 2;i2 < 10;i2 ++){ rx = (i1 - 2) * 40; ry = (i2 - 2) * 40; if(md[i1][i2] == -1){ g.setColor(Color.pink); g.fillRect(rx + 21,ry + 21,39,39); }else if(md[i1][i2] == 1){ g.setColor(Color.lightGray); g.fillRect(rx + 21,ry + 21,39,39); } } } px = (kx - 2) * 40 - 5; py = (ky - 2) * 40 - 8; g.drawImage(pic,px,py,this); } public boolean mouseMove(Event e,int x,int y){ mx = px + 45; my = py + 36; if((x - mx > 0)&&(y - my < 0)&&(x - mx < my - y))pic = pic1; else if((x - mx > 0)&&(y - my < 0)&&(x - mx > my - y))pic = pic2; else if((x - mx > 0)&&(y - my > 0)&&(x - mx > y - my))pic = pic4; else if((x - mx > 0)&&(y - my > 0)&&(x - mx < y - my))pic = pic5; else if((x - mx < 0)&&(y - my > 0)&&(mx - x < y - my))pic = pic7; else if((x - mx < 0)&&(y - my > 0)&&(mx - x > y - my))pic = pic8; else if((x - mx < 0)&&(y - my < 0)&&(mx - x > my - y))pic = pic10; else if((x - mx < 0)&&(y - my < 0)&&(mx - x < my - y))pic = pic11; repaint(); return true; } public boolean mouseDown(Event e,int x,int y){ dx = (x - 20) / 40 + 2; dy = (y - 20) / 40 + 2; if(((dx == kx + 1) && (dy == ky - 2) && (md[dx][dy] == 0)) || ((dx == kx + 2) && (dy == ky - 1) && (md[dx][dy] == 0)) || ((dx == kx + 2) && (dy == ky + 1) && (md[dx][dy] == 0)) || ((dx == kx + 1) && (dy == ky + 2) && (md[dx][dy] == 0)) || ((dx == kx - 1) && (dy == ky + 2) && (md[dx][dy] == 0)) || ((dx == kx - 2) && (dy == ky + 1) && (md[dx][dy] == 0)) || ((dx == kx - 2) && (dy == ky - 1) && (md[dx][dy] == 0)) || ((dx == kx - 1) && (dy == ky - 2) && (md[dx][dy] == 0))){ kx = dx; ky = dy; md[dx][dy] = -1; } repaint(); return true; } public boolean action(Event e,Object o){ if(e.target == sel){ if(o == "Chess Board"){ for(int i = 2;i < 10;i ++){ for(int j = 2;j < 10;j ++){ md[i][j] = md1[i][j]; mdc[i][j] = md[i][j]; kx = md1x; ky = md1y; cx = kx; cy = ky; } } }else if(o == "Convex"){ for(int i = 2;i < 10;i ++){ for(int j = 2;j < 10;j ++){ md[i][j] = md2[i][j]; mdc[i][j] = md[i][j]; kx = md2x; ky = md2y; cx = kx; cy = ky; } } }else if(o == "Eight"){ for(int i = 2;i < 10;i ++){ for(int j = 2;j < 10;j ++){ md[i][j] = md3[i][j]; mdc[i][j] = md[i][j]; kx = md3x; ky = md3y; cx = kx; cy = ky; } } }else if(o == "Plus"){ for(int i = 2;i < 10;i ++){ for(int j = 2;j < 10;j ++){ md[i][j] = md4[i][j]; mdc[i][j] = md[i][j]; kx = md4x; ky = md4y; cx = kx; cy = ky; } } }else if(o == "Net"){ for(int i = 2;i < 10;i ++){ for(int j = 2;j < 10;j ++){ md[i][j] = md5[i][j]; mdc[i][j] = md[i][j]; kx = md5x; ky = md5y; cx = kx; cy = ky; } } } repaint(); return true; } if(e.target == rep){ for(int i = 2;i < 10;i ++){ for(int j = 2;j < 10;j ++){ md[i][j] = mdc[i][j]; } } kx = cx; ky = cy; repaint(); return true; } return false; } }