import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.lang.Math; public class passage extends Applet implements Runnable{ int opdb[][] = {{4,0,3},{0,5,0},{2,0,1}}; int tcdb[][] = {{1,0,2},{0,5,0},{3,0,4}}; int opd[][] = new int[3][3],tcd[][] = new int[3][3]; Color cd[] = new Color[6]; int sw = 0,sc = 0,fg = 0; int mx,my,mcx,mcy; Button rep; Thread th = null; Image os; Graphics og; public void init(){ setBackground(Color.white); os = createImage(220,240); og = os.getGraphics(); cd[0] = new Color(220,220,220); cd[1] = new Color(255, 0, 0); cd[2] = new Color( 0, 0,255); cd[3] = new Color( 0,255, 0); cd[4] = new Color(255,255, 0); cd[5] = new Color( 0,255,255); for(int px = 0;px < 3;px ++){ for(int py = 0;py < 3;py ++){ opd[py][px] = opdb[py][px]; tcd[py][px] = tcdb[py][px]; } } setLayout(new BorderLayout()); Panel pan = new Panel(); pan.setLayout(new FlowLayout()); pan.add(rep = new Button(" replay ")); add("South",pan); rep.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ for(int px = 0;px < 3;px ++){ for(int py = 0;py < 3;py ++){ opd[py][px] = opdb[py][px]; tcd[py][px] = tcdb[py][px]; } } repaint(); } }); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ mx = (e.getX() - 20) / 60; my = (e.getY() - 20) / 60; if(opd[my][mx] != 0){ sw = 1 ; sc = opd[my][mx] ; opd[my][mx] = 0; repaint(); } } public void mouseReleased(MouseEvent e){ sw = 0 ; opd[my][mx] = sc ; sc = 0 ; repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseDragged(MouseEvent e){ mcx = (e.getX() - 20) / 60; mcy = (e.getY() - 20) / 60; if((mx != mcx) || (my != mcy)){ if(opd[mcy][mcx] == 0){ if((Math.abs(mx - mcx) + Math.abs(my - mcy)) < 2){ if((mx == 0) && (my == 0) && (mcy == 1)){fg = 1;} if((mx == 0) && (my == 1) && (mcy == 0)){fg = 1;} if((mx == 0) && (my == 1) && (mcx == 1)){fg = 1;} if((mx == 1) && (my == 1) && (mcx == 0)){fg = 1;} if((mx == 1) && (my == 1) && (mcx == 2)){fg = 1;} if((mx == 2) && (my == 1) && (mcx == 1)){fg = 1;} if((mx == 2) && (my == 1) && (mcy == 2)){fg = 1;} if((mx == 2) && (my == 2) && (mcy == 1)){fg = 1;} if(fg == 0){ mx = mcx ; my =mcy; repaint(); }else{ fg = 0; } } } } } } ); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,220,240); for(int ix = 0;ix < 3;ix ++){ for(int iy = 0;iy < 3;iy ++){ og.setColor(cd[tcd[iy][ix]]); og.fill3DRect(ix * 60 + 20,iy * 60 + 20,59,59,true); og.setColor(cd[opd[iy][ix]]); og.fillOval(ix * 60 + 30,iy * 60 + 30,40,40); if(opd[iy][ix] > 0){ og.setColor(Color.lightGray); og.drawOval(ix * 60 + 30,iy * 60 + 30,40,40); } } } og.setColor(Color.darkGray); og.fill3DRect(0 * 60 + 20,1 * 60 + 17,61,6,true); og.fill3DRect(1 * 60 + 17,1 * 60 + 19,6,61,true); og.fill3DRect(2 * 60 + 17,1 * 60 + 19,6,61,true); og.fill3DRect(2 * 60 + 19,2 * 60 + 17,61,6,true); if(sw == 1){ og.setColor(cd[sc]); og.fillOval(mx * 60 + 30,my * 60 + 30,40,40); og.setColor(Color.lightGray); og.drawOval(mx * 60 + 30,my * 60 + 30,40,40); } g.drawImage(os,0,0,this ); } 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(20); } catch (InterruptedException e){ } } } public void update( Graphics g ) { paint( g ) ; } }