import java.applet.*; import java.awt.*; import java.awt.event.*; public class enclosure extends Applet implements Runnable{ Thread th = null; Image os; Graphics og; int td[][] = new int[6][6] , tt[][] = new int[6][6] ; int ex[] = new int[3] , ey[] = new int[3] ; int mx,my,px,py,pd,cx,cy; int fg,ef; Button re; public void init(){ os = createImage(300,310); og = os.getGraphics(); setBackground(Color.white); d_set(); setLayout(new BorderLayout()); Panel pan = new Panel(); pan.setLayout(new FlowLayout()); pan.add(re = new Button(" reset ")); add("South",pan); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ if((td[py][px] == 1) && (ef == 0)){ switch(pd){ case 1 : if(td[py][px + 1] == 0){ td[py][px + 1] = 1 ; td[py][px] = 0 ; fg = 0; } break; case 2 : if(td[py - 1][px] == 0){ td[py - 1][px] = 1 ; td[py][px] = 0 ; fg = 0; } break; case 3 : if(td[py][px - 1] == 0){ td[py][px - 1] = 1 ; td[py][px] = 0 ; fg = 0; } break; case 4 : if(td[py + 1][px] == 0){ td[py + 1][px] = 1 ; td[py][px] = 0 ; fg = 0; } break; } repaint(); if(fg == 0){ for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 2) && (td[2][2] == 0)){ td[2][1] = 0 ; td[2][2] = 2 ; ex[c1] = 2 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 3) && (td[3][2] == 0)){ td[3][1] = 0 ; td[3][2] = 2 ; ex[c1] = 2 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 2) && (ey[c1] == 2) && (td[2][3] == 0)){ td[2][2] = 0 ; td[2][3] = 2 ; ex[c1] = 3 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 2) && (ey[c1] == 2) && (td[3][2] == 0)){ td[2][2] = 0 ; td[3][2] = 2 ; ey[c1] = 3 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 2) && (td[3][1] == 0)){ td[2][1] = 0 ; td[3][1] = 2 ; ey[c1] = 3 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 3) && (td[2][1] == 0)){ td[3][1] = 0 ; td[2][1] = 2 ; ey[c1] = 2 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 1) && (td[2][1] == 0)){ td[1][1] = 0 ; td[2][1] = 2 ; ey[c1] = 2 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 1) && (td[1][2] == 0)){ td[1][1] = 0 ; td[1][2] = 2 ; ex[c1] = 2 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 2) && (td[1][1] == 0)){ td[2][1] = 0 ; td[1][1] = 2 ; ey[c1] = 1 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 1) && (ey[c1] == 3) && (td[4][1] == 0)){ td[3][1] = 0 ; td[4][1] = 2 ; ey[c1] = 4 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 2) && (ey[c1] == 2) && (td[2][1] == 0)){ td[2][2] = 0 ; td[2][1] = 2 ; ex[c1] = 1 ; fg = 1 ; } } t_turn(); } } for(int c1 = 0;c1 < 2;c1 ++){ for(int r1 = 0;r1 < 4;r1 ++){ if(fg == 0){ if((ex[c1] == 2) && (ey[c1] == 2) && (td[1][2] == 0)){ td[2][2] = 0 ; td[1][2] = 2 ; ey[c1] = 1 ; fg = 1 ; } } t_turn(); } } } if(fg == 0)ef = 1; repaint(); } } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ mx = e.getX() ; my = e.getY() ; px = (mx + 30) / 60 ; py = (my + 30) / 60 ; cx = px * 60 ; cy = py * 60 ; if(((mx - cx) > (my - cy)) && ((mx - cx) > (cy - my))){ pd = 1; }else if(((mx - cx) > (my - cy)) && ((mx - cx) < (cy - my))){ pd = 2; }else if(((mx - cx) < (my - cy)) && ((mx - cx) < (cy - my))){ pd = 3; }else if(((mx - cx) < (my - cy)) && ((mx - cx) > (cy - my))){ pd = 4; } repaint(); } } ); re.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ d_set(); repaint(); } }); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,300,310); for(int d1 = 0;d1 < 6;d1 ++){ for(int d2 = 0;d2 < 6;d2 ++){ if(td[d2][d1] >= 0){ for(int bc = 0;bc < 60;bc ++){ og.setColor(new Color(bc/2+190,bc/2+190,120)); og.drawLine(d1*60-30+bc,d2*60-30,d1*60-30,d2*60-30+bc); og.setColor(new Color(bc/2+210,bc/2+210,120)); og.drawLine(d1*60+30,d2*60-30+bc,d1*60-30+bc,d2*60+30); } } if(td[d2][d1] == 1){ for(int bc = 0;bc < 21;bc ++){ og.setColor(new Color(0,0,bc*6+130)); og.fillOval(d1*60-20+bc,d2*60-20+bc,40-2*bc,40-2*bc); } }else if(td[d2][d1] == 2){ for(int bc = 0;bc < 21;bc ++){ og.setColor(new Color(bc*6+130,0,0)); og.fillOval(d1*60-20+bc,d2*60-20+bc,40-2*bc,40-2*bc); } } } } if(td[py][px] == 1){ og.setColor(Color.black); switch(pd){ case 1 : if(td[py][px + 1] == 0){ og.drawLine(cx+40,cy,cx+20,cy-20); og.drawLine(cx+40,cy,cx+20,cy+20); og.drawLine(cx+45,cy,cx+25,cy-20); og.drawLine(cx+45,cy,cx+25,cy+20); } break; case 2 : if(td[py - 1][px] == 0){ og.drawLine(cx,cy-40,cx-20,cy-20); og.drawLine(cx,cy-40,cx+20,cy-20); og.drawLine(cx,cy-45,cx-20,cy-25); og.drawLine(cx,cy-45,cx+20,cy-25); } break; case 3 : if(td[py][px - 1] == 0){ og.drawLine(cx-40,cy,cx-20,cy-20); og.drawLine(cx-40,cy,cx-20,cy+20); og.drawLine(cx-45,cy,cx-25,cy-20); og.drawLine(cx-45,cy,cx-25,cy+20); } break; case 4 : if(td[py + 1][px] == 0){ og.drawLine(cx,cy+40,cx-20,cy+20); og.drawLine(cx,cy+40,cx+20,cy+20); og.drawLine(cx,cy+45,cx-20,cy+25); og.drawLine(cx,cy+45,cx+20,cy+25); } break; } } if(ef == 1){ og.setFont(new Font("",Font.BOLD,54)); og.setColor(Color.black); og.drawString("GET !!",72,172); og.setColor(Color.red); og.drawString("GET !!",70,170); } g.drawImage(os,0,0,this); } public void t_turn(){ for(int t1 = 1;t1 < 5;t1 ++){ for(int t2 = 1;t2 < 5;t2 ++){ tt[t1][5-t2] = td[t2][t1]; } } for(int t1 = 1;t1 < 5;t1 ++){ for(int t2 = 1;t2 < 5;t2 ++){ td[t2][t1] = tt[t2][t1]; } } ex[2] = 5 - ey[0] ; ey[2] = ex[0] ; ex[0] = ex[2] ; ey[0] = ey[2] ; ex[2] = 5 - ey[1] ; ey[2] = ex[1] ; ex[1] = ex[2] ; ey[1] = ey[2] ; } public void d_set(){ fg = 1 ; ef = 0 ; for(int i1 = 0;i1 < 6;i1 ++){ for(int i2 = 0;i2 < 6;i2 ++){ td[i2][i1] = 0; } } for(int i1 = 0;i1 < 6;i1 ++){ td[0][i1] = -1 ; td[5][i1] = -1 ; td[i1][0] = -1 ; td[i1][5] = -1 ; } td[1][1] = 1 ; td[1][4] = 1 ; td[4][1] = 1 ; td[4][4] = 1 ; td[2][2] = 2 ; td[3][3] = 2 ; ex[0] = 2 ; ey[0] = 2 ; ex[1] = 3 ; ey[1] = 3 ; } 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(50); } catch (InterruptedException e){ } } } public void update( Graphics g ){ paint( g ) ; } }