import java.applet.*; import java.awt.*; public class K_tour2 extends Applet implements Runnable{ // 99/03/18 Imaishi Thread m_MainThread = null ; // 99/03/18 Imaishi Image m_OffScreen ; // 99/03/18 Imaishi Graphics m_OffGraphics ; // 99/03/18 Imaishi 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(){ m_OffScreen = createImage( 360, 360 ) ; // 99/03/18 Imaishi m_OffGraphics = m_OffScreen.getGraphics() ; // 99/03/18 Imaishi 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.drawImage( m_OffScreen, 0, 0, this ) ; // 99/03/18 Imaishi m_OffGraphics.setColor(Color.white); // 99/03/18 Imaishi m_OffGraphics.fillRect(0,0,360,360); // 99/03/18 Imaishi m_OffGraphics.setColor(Color.black); // 99/03/18 Imaishi for(int k = 0;k < 9;k ++){ m_OffGraphics.drawLine(20,20+40*k,20+40*8,20+40*k); // 99/03/18 Imaishi m_OffGraphics.drawLine(20+40*k,20,20+40*k,20+40*8); // 99/03/18 Imaishi } 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){ m_OffGraphics.setColor(Color.pink); // 99/03/18 Imaishi m_OffGraphics.fillRect(rx + 21,ry + 21,39,39); // 99/03/18 Imaishi }else if(md[i1][i2] == 1){ m_OffGraphics.setColor(Color.lightGray); // 99/03/18 Imaishi m_OffGraphics.fillRect(rx + 21,ry + 21,39,39); // 99/03/18 Imaishi } } } px = (kx - 2) * 40 - 5; py = (ky - 2) * 40 - 8; m_OffGraphics.drawImage(pic,px,py,this); // 99/03/18 Imaishi g.drawImage( m_OffScreen, 0, 0, this ) ; // 99/03/18 Imaishi } 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; } //////////////////////////////////////////////////////////////////////////////// // 99/03/18 Imaishi //////////////////////////////////////////////////////////// public void start() { if( m_MainThread == null) { m_MainThread = new Thread(this); m_MainThread.start(); } } public void stop() { m_MainThread = null; } public void run() { while (m_MainThread != null) { try { Thread.sleep( 200 ); } catch (InterruptedException e) { } repaint(); } } public void update( Graphics g ) { paint( g ) ; } }