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