import java.applet.*; import java.awt.*; import java.awt.event.*; public class a_dice extends Applet implements Runnable{ int td[][] = new int[10][10]; int nd[][] = new int[10][10]; int dd[][][] = {{{0,0,0},{0,1,0},{0,0,0}}, {{1,0,0},{0,0,0},{0,0,1}}, {{1,0,0},{0,1,0},{0,0,1}}, {{1,0,1},{0,0,0},{1,0,1}}, {{1,0,1},{0,1,0},{1,0,1}}, {{1,0,1},{1,0,1},{1,0,1}}}; int pt[][] = new int[3][3]; int dpx[] = new int[6]; int dpy[] = new int[6]; int dx[] = {20,20,20,340,340,340}; int dy[] = {20,100,180,20,100,180}; int psw[] = new int[6]; int qd[][][] = {{{-1,0,-1,-1,3,6,4,3,-1,-1},{-1,-1,-1,-1,0,-1,-1,-1,2,2}}, {{1,5,-1,-1,-1,-1,-1,0,5,-1},{2,2,2,2,2,-1,-1,-1,-1,2}}, {{1,2,3,4,5,5,-1,-1,-1,-1},{-1,1,-1,-1,-1,-1,1,3,1,-1}}}; int qn = 0,pn; int cs; int mx,my,px,py,bx,by,cx,cy; Thread th = null; Image os; Graphics og; public void init(){ os = createImage(420,260); og = os.getGraphics(); setBackground(Color.white); for(int i1 = 0;i1 < 10;i1 ++){ for(int i2 = 0;i2 < 10;i2 ++){ td[i2][i1] = -1; nd[i2][i1] = -1; } } for(int i1 = 0;i1 < 6;i1 ++){ dpx[i1] = dx[i1]; dpy[i1] = dy[i1]; } addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ px = e.getX(); py = e.getY(); if(e.getClickCount() == 2){ for(int p1 = 0;p1 < 3;p1 ++){ for(int p2 = 0;p2 < 3;p2 ++){ pt[p1][2-p2] = dd[pn][p2][p1]; } } for(int p1 = 0;p1 < 3;p1 ++){ for(int p2 = 0;p2 < 3;p2 ++){ dd[pn][p2][p1] = pt[p2][p1]; } } }else{ if((px>20)&&(px<80)){ if((py>20)&&(py<80)){ if(psw[0] == 0){ if(psw[pn] != 1)pn = 0 ; psw[pn] = 1; }else if(psw[0] == 1){ psw[0] = 0; } }else if((py>100)&&(py<160)){ if(psw[1] == 0){ if(psw[pn] != 1)pn = 1 ; psw[pn] = 1; }else if(psw[1] == 1){ psw[1] = 0; } }else if((py>180)&&(py<240)){ if(psw[2] == 0){ if(psw[pn] != 1)pn = 2 ; psw[pn] = 1; }else if(psw[2] == 1){ psw[2] = 0; } } }else if((px>340)&&(px<400)){ if((py>20)&&(py<80)){ if(psw[3] == 0){ if(psw[pn] != 1)pn = 3 ; psw[pn] = 1; }else if(psw[3] == 1){ psw[3] = 0; } }else if((py>100)&&(py<160)){ if(psw[4] == 0){ if(psw[pn] != 1)pn = 4 ; psw[pn] = 1; }else if(psw[4] == 1){ psw[4] = 0; } }else if((py>180)&&(py<240)){ if(psw[5] == 0){ if(psw[pn] != 1)pn = 5 ; psw[pn] = 1; }else if(psw[5] == 1){ psw[5] = 0; } } }else if((px>120)&&(px<280)){ if((py>40)&&(py<200)){ bx = (px - 100) / 20; by = (py - 20) / 20; if(psw[pn] == 1){ cs = 0; for(int c1 = 0;c1 < 3;c1 ++){ cs = cs + nd[by-1][bx+c1-1] + nd[by][bx+c1-1] + nd[by+1][bx+c1-1]; } if(cs == -9){ for(int p1 = 0;p1 < 3;p1 ++){ nd[by-1][bx+p1-1] = pn; nd[by][bx+p1-1] = pn; nd[by+1][bx+p1-1] = pn; } for(int p2 = 0;p2 < 3;p2 ++){ td[by-1][bx+p2-1] = dd[pn][0][p2]; td[by][bx+p2-1] = dd[pn][1][p2]; td[by+1][bx+p2-1] = dd[pn][2][p2]; } dpx[pn] = 20 * bx + 80; dpy[pn] = 20 * by; psw[pn] = 2; } }else{ pn = nd[by][bx]; cx = (dpx[pn] - 100) / 20; cy = (dpy[pn] - 20) / 20; for(int i1 = 0;i1 < 3;i1 ++){ for(int i2 = 0;i2 < 3;i2 ++){ td[cy+i2][cx+i1] = -1; nd[cy+i2][cx+i1] = -1; } } dpx[pn] = dx[pn]; dpy[pn] = dy[pn]; psw[pn] = 1; } } }else if((px>280)&&(px<330)&&(py>225)&&(py<250)){ qn = qn +1; if(qn > 2)qn = 0; for(int i1 = 0;i1 < 10;i1 ++){ for(int i2 = 0;i2 < 10;i2 ++){ td[i2][i1] = -1; nd[i2][i1] = -1; } } for(int k1 = 0;k1 < 6;k1 ++){ dpx[k1] = dx[k1] ; dpy[k1] = dy[k1]; psw[k1] = 0; } } } repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ mx = e.getX(); my = e.getY(); repaint(); } } ); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,420,260); og.setColor(new Color(255,255,153)); for(int c1 = 0;c1 < 10;c1 ++){ for(int c2 = 0;c2 < 10;c2 ++){ og.fill3DRect(20*c1+100,20*c2+20,20,20,true); } } og.setColor(Color.black); for(int d1 = 0;d1 < 6;d1 ++){ if(psw[d1] != 1){ for(int m1 = 0;m1 < 3;m1 ++){ for(int m2 = 0;m2 < 3;m2 ++){ if(dd[d1][m2][m1] == 1){ og.fillOval(20*m1+dpx[d1]+2,20*m2+dpy[d1]+2,17,17); } } } og.drawRect(dpx[d1],dpy[d1],60,60); }else{ for(int m1 = 0;m1 < 3;m1 ++){ for(int m2 = 0;m2 < 3;m2 ++){ if(dd[d1][m2][m1] == 1){ og.fillOval(20*m1+mx-28,20*m2+my-28,17,17); } } } og.drawRect(mx-30,my-30,60,60); } } for(int s1 = 0;s1 < 10;s1 ++){ og.setFont(new Font("",Font.PLAIN,20)); if(qd[qn][0][s1] != -1){ cs = 0; for(int s2 = 0;s2 < 10;s2 ++){ if(td[s2][s1] != -1){ cs = cs + td[s2][s1]; } if(cs == qd[qn][0][s1]){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } og.drawString(""+qd[qn][0][s1],20*s1+105,240); } } if(qd[qn][1][s1] != -1){ cs = 0; for(int s2 = 0;s2 < 10;s2 ++){ if(td[s1][s2] != -1){ cs = cs + td[s1][s2]; } if(cs == qd[qn][1][s1]){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } og.drawString(""+qd[qn][1][s1],305,20*s1+38); } } } og.setColor(Color.gray); og.fillRoundRect(281,226,50,25,10,10); og.setColor(Color.lightGray); og.fillRoundRect(280,225,50,25,10,10); og.setFont(new Font("",Font.BOLD,20)); og.setColor(Color.white); og.drawString("No."+(qn+1),286,246); og.setColor(Color.black); og.drawString("No."+(qn+1),285,245); 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 ) ; } }