import java.applet.*; import java.awt.*; import java.awt.event.*; public class connection extends Applet implements Runnable{ Thread th = null; Image os; Graphics og; int pd[][][] = {{{2,2,2,6},{4,2,4,6},{6,2,6,6},{3,2,5,2},{2,7,6,7}}, {{1,1,7,7},{1,2,6,7},{1,4,1,6},{1,3,1,7},{1,5,3,5}}, {{3,4,6,4},{6,3,6,6},{7,1,1,7},{3,5,6,5},{3,3,3,6}}, {{2,2,6,2},{4,3,4,7},{5,3,7,4},{2,6,6,6},{1,4,3,3}}, {{4,3,6,3},{4,4,4,6},{1,4,6,2},{1,5,7,7},{7,1,5,6}}, {{2,1,5,6},{3,5,7,7},{1,6,6,6},{5,3,1,5},{1,1,6,3}}, {{3,3,3,5},{5,5,5,7},{4,2,6,7},{3,2,2,7},{1,2,7,1}}, {{7,1,4,5},{4,3,1,7},{1,1,3,6},{5,2,7,7},{4,2,4,6}}, {{3,2,1,7},{3,3,6,4},{6,3,3,6},{4,4,5,7},{1,2,7,1}}, {{2,2,2,6},{5,2,6,4},{6,2,6,6},{2,4,6,5},{2,3,3,6}}, {{6,2,5,7},{1,5,4,7},{4,1,5,3},{2,2,7,7},{6,1,7,6}}, {{1,2,6,2},{1,1,5,3},{1,6,7,6},{2,3,5,1},{1,3,6,6}}, {{6,1,2,4},{1,6,3,5},{3,3,5,6},{2,6,6,2},{6,5,7,7}}, {{2,2,6,6},{1,4,7,6},{1,1,2,4},{1,6,4,7},{2,6,5,3}}, {{3,5,2,7},{2,1,6,6},{4,2,3,7},{3,2,7,4},{1,1,2,6}}}; int td[][] = new int[9][9]; int px,py,pc; int pn = 0 ,fg,cf; public void init(){ os = createImage(270,300); og = os.getGraphics(); setBackground(Color.white); d_set(); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ px = e.getX() / 30 ; py = e.getY() / 30 ; if(e.getClickCount() == 2){ if((px > 0)&&(px < 8)&&(py > 0)&&(py < 8)){ if((td[py][px] > 0)&&(td[py][px] < 6)){ td[py][px] = 0; pc = 0; } } } if((px > -1)&&(px < 8)&&(py > 0)&&(py < 8)){ if((td[py][px] > -1)&&(td[py][px] < 6)){ pc = td[py][px]; }else if((td[py][px] > 5)&&(td[py][px] < 11)){ pc = td[py][px] - 5; } }else if((px == 4)&&(py == 8)){ pn --; if(pn < 0)pn = 0; d_set(); }else if((px == 6)&&(py == 8)){ pn ++; if(pn > 14)pn = 14; d_set(); }else if((px == 2)&&(py == 8)){ d_set(); } repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseDragged(MouseEvent e){ px = e.getX() / 30 ; py = e.getY() / 30 ; if((td[py][px] > -1)&&(td[py][px] < 6)){ td[py][px] = pc; }else if((td[py][px] > 5)&&(td[py][px] < 11)){ pc = td[py][px] - 5; } repaint(); } } ); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,270,300); for(int d1 = 1;d1 < 8;d1 ++){ for(int d2 = 1;d2 < 8;d2 ++){ d_rect(td[d2][d1],d1,d2); } } og.setColor(Color.black); og.setFont(new Font("",Font.BOLD,15)); og.drawString("reset",55,270); og.drawRoundRect(47,250,56,30,10,10); og.drawRoundRect(49,252,52,26,8,8); if(pn == 0){ og.setColor(Color.gray); }else{ og.setColor(Color.black); } og.drawLine(140,255,130,265); og.drawLine(140,275,130,265); og.drawLine(135,255,125,265); og.drawLine(135,275,125,265); og.drawLine(134,255,124,265); og.drawLine(134,275,124,265); if(pn == 14){ og.setColor(Color.gray); }else{ og.setColor(Color.black); } og.drawLine(190,255,200,265); og.drawLine(190,275,200,265); og.drawLine(195,255,205,265); og.drawLine(195,275,205,265); og.drawLine(196,255,206,265); og.drawLine(196,275,206,265); og.setColor(Color.black); og.setFont(new Font("",Font.BOLD,15)); if(pn < 9){ og.drawString("No."+(pn+1),150,272); }else{ og.drawString("No."+(pn+1),145,272); } fg = 1; for(int d1 = 1;d1 < 8;d1 ++){ for(int d2 = 1;d2 < 8;d2 ++){ if(td[d2][d1] == 0){ fg = 0; }else if(td[d2][d1] < 6){ cf = 0; if((td[d2][d1] == td[d2][d1+1])||(td[d2][d1] == td[d2][d1+1]-5))cf ++; if((td[d2][d1] == td[d2][d1-1])||(td[d2][d1] == td[d2][d1-1]-5))cf ++; if((td[d2][d1] == td[d2+1][d1])||(td[d2][d1] == td[d2+1][d1]-5))cf ++; if((td[d2][d1] == td[d2-1][d1])||(td[d2][d1] == td[d2-1][d1]-5))cf ++; if(cf != 2)fg = 0; }else if(td[d2][d1] < 11){ cf = 0; if(td[d2][d1] == td[d2][d1+1]+5)cf ++; if(td[d2][d1] == td[d2][d1-1]+5)cf ++; if(td[d2][d1] == td[d2+1][d1]+5)cf ++; if(td[d2][d1] == td[d2-1][d1]+5)cf ++; if(cf != 1)fg = 0; } } } if(fg == 1){ og.setFont(new Font("",Font.BOLD,60)); og.setColor(Color.black); og.drawString("clear!!",52,158); og.setColor(Color.red); og.drawString("clear!!",50,160); } g.drawImage(os,0,0,this); } public void d_rect(int cc,int xx,int yy){ if(cc == 0){ og.setColor(new Color(255,250,205)); og.fillRoundRect(xx*30,yy*30,30,30,7,7); og.setColor(Color.gray); og.drawRoundRect(xx*30,yy*30,30,30,7,7); }else if(cc < 6){ for(int kk = 1;kk < 16;kk ++){ switch(cc){ case 1 : og.setColor(new Color(255 - kk*10, 0, 0)) ; break ; case 2 : og.setColor(new Color( 0,255 - kk*10, 0)) ; break ; case 3 : og.setColor(new Color( 0, 0,255 - kk*10)) ; break ; case 4 : og.setColor(new Color(255 - kk*10,255 - kk*10, 0)) ; break ; case 5 : og.setColor(new Color(255 - kk*10, 0,255 - kk*10)) ; break ; } og.drawRect(xx*30+kk,yy*30+kk,30-kk*2,30-kk*2); } }else if(cc < 11){ for(int kk = 1;kk < 16;kk ++){ switch(cc){ case 6 : og.setColor(new Color(105 + kk*10, 0, 0)) ; break ; case 7 : og.setColor(new Color( 0,105 + kk*10, 0)) ; break ; case 8 : og.setColor(new Color( 0, 0,105 + kk*10)) ; break ; case 9 : og.setColor(new Color(105 + kk*10,105 + kk*10, 0)) ; break ; case 10 : og.setColor(new Color(105 + kk*10, 0,105 + kk*10)) ; break ; } og.drawRect(xx*30+kk,yy*30+kk,30-kk*2,30-kk*2); } } } public void d_set(){ for(int s1 = 0;s1 < 9;s1 ++){ td[0][s1] = -1 ; td[8][s1] = -1 ; td[s1][0] = -1 ; td[s1][8] = -1 ; } for(int s1 = 1;s1 < 8;s1 ++){ for(int s2 = 1;s2 < 8;s2 ++){ td[s2][s1] = 0; } } for(int s1 = 0;s1 < 5;s1 ++){ td[pd[pn][s1][1]][pd[pn][s1][0]] = s1 + 6; td[pd[pn][s1][3]][pd[pn][s1][2]] = s1 + 6; } } 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 ) ; } }