import java.applet.*; import java.awt.*; import java.awt.event.*; import java.lang.Math; public class Spot extends Applet implements Runnable{ int pt[][][] = {{{0,0,0,0},{0,0,0,1},{0,0,0,1}}, {{0,1,0,1},{0,1,0,1},{0,1,1,0}}, {{0,1,1,1},{0,1,1,1},{1,1,1,1}}}; int fg = 0; int px1,py1,px2,py2; Graphics g; int st[] = new int[4]; int cs1,cs2,cs3,cs4; Thread th = null; Image os; Graphics og; public void init(){ os = createImage(330,330); og = os.getGraphics(); setBackground(Color.white); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ px1 = (e.getX() - 25) / 90; py1 = (e.getY() - 25) / 90; if(px1 > 2)px1 = 2; if(py1 > 2)py1 = 2; if(fg == 0){ px2 = px1 ; py2 = py1 ; fg = 1; repaint(); }else if((px1 != px2) || (py1 != py2)){ for(int s = 0;s < 4;s ++){ st[s] = pt[py1][px1][s]; pt[py1][px1][s] = pt[py2][px2][s]; pt[py2][px2][s] = st[s]; fg = 0; repaint(); } }else if((px1 == px2) || (py1 == py2)){ st[0] = pt[py1][px1][0]; pt[py1][px1][0] = pt[py1][px1][1]; pt[py1][px1][1] = pt[py1][px1][3]; pt[py1][px1][3] = pt[py1][px1][2]; pt[py1][px1][2] = st[0]; fg = 0; repaint(); } } } ); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,330,330); og.setColor(Color.red); for(int c1 = 0;c1 < 3;c1 ++){ cs1 = 0 ; cs2 = 0 ; cs3 = 0 ; cs4 = 0; cs1 = pt[c1][0][0] + pt[c1][0][2] + pt[c1][1][0] + pt[c1][1][2] + pt[c1][2][0] + pt[c1][2][2]; cs2 = pt[c1][0][1] + pt[c1][0][3] + pt[c1][1][1] + pt[c1][1][3] + pt[c1][2][1] + pt[c1][2][3]; if(cs1 == 3)og.drawLine(20,c1 * 90 + 50,300,c1 * 90 + 50); if(cs2 == 3)og.drawLine(20,c1 * 90 + 90,300,c1 * 90 + 90); cs3 = pt[0][c1][0] + pt[0][c1][1] + pt[1][c1][0] + pt[1][c1][1] + pt[2][c1][0] + pt[2][c1][1]; cs4 = pt[0][c1][2] + pt[0][c1][3] + pt[1][c1][2] + pt[1][c1][3] + pt[2][c1][2] + pt[2][c1][3]; if(cs3 == 3)og.drawLine(c1 * 90 + 50,20,c1 * 90 + 50,300); if(cs4 == 3)og.drawLine(c1 * 90 + 90,20,c1 * 90 + 90,300); } cs1 = 0; cs1 = pt[0][0][0] + pt[0][0][3] + pt[1][1][0] + pt[1][1][3] + pt[2][2][0] + pt[2][2][3]; if(cs1 == 3)og.drawLine(20,20,300,300); cs2 = 0; cs1 = pt[0][2][2] + pt[0][2][1] + pt[1][1][2] + pt[1][1][1] + pt[2][0][2] + pt[2][0][1]; if(cs1 == 3)og.drawLine(20,300,300,20); for(int iy = 0;iy < 3;iy ++){ for(int ix = 0;ix < 3;ix ++){ og.setColor(Color.yellow); og.fill3DRect(ix * 90 + 30,iy * 90 + 30,80,80,true); og.setColor(Color.blue); for(int k = 0;k < 4;k ++){ if(pt[iy][ix][k] == 1){ og.fillOval(ix * 90 + 35 + (k / 2) * 40,iy * 90 + 35 + (k % 2) * 40,30,30); } } } } if(fg == 1){ og.setColor(Color.blue); og.draw3DRect(px1 * 90 + 30,py1 * 90 + 30,80,80,true); } 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(100); } catch (InterruptedException e){ } } } public void update( Graphics g ){ paint( g ) ; } }