import java.applet.*; import java.awt.*; import java.awt.event.*; public class d_lots extends Applet implements Runnable{ Thread th = null; Image os; Graphics og; int ad0[][][][] = {{{{1,0,0,0},{0,0,0,0}},{{0,1,0,0},{0,0,0,0}},{{0,1,0,1},{0,0,0,0}}}, {{{0,1,0,0},{0,0,0,0}},{{0,1,0,0},{1,0,0,0}},{{0,1,0,1},{0,0,0,0}}}, {{{0,1,0,0},{0,0,0,0}},{{0,1,0,0},{1,0,0,0}},{{0,1,0,1},{1,0,0,0}}}, {{{1,0,0,0},{0,0,0,0}},{{0,1,0,0},{1,0,0,1}},{{0,1,0,1},{0,0,1,0}}}, {{{0,1,0,0},{1,0,0,1}},{{0,1,0,0},{1,0,0,0}},{{0,1,0,1},{0,0,0,0}}}, {{{0,0,1,0},{1,0,0,1}},{{0,1,0,0},{1,0,1,0}},{{0,1,0,1},{0,0,0,0}}}}; int td[][][] = new int[3][2][4] , ad[][][] = new int[3][2][4]; int ch[] = new int[5]; int sa,si,sp,lv; int px,py; String al[][] = {{"A","B","C","D","E"},{"A","B","C","D","E"},{"A","B","C","D","E"}}; String sw; public void init(){ os = createImage(360,400); og = os.getGraphics(); setBackground(Color.white); d_set(); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ px = e.getX() ; py = e.getY() ; if((px > 30) && (px < 150)){ if(e.getClickCount() == 1){ sa = (py - 15) / 120 + 1; }else if(e.getClickCount() == 2){ a_turn(); } }else if((px > 180) && (px < 330)){ if(e.getClickCount() == 1){ si = (py - 60) / 90; if(si < 3){ for(int i1 = 0;i1 < 2;i1 ++){ for(int i2 = 0;i2 < 4;i2 ++){ td[si][i1][i2] = ad[sa-1][i1][i2] ; } } }else if((px > 275) && (px < 325) && (py > 360) && (py < 385)){ d_set(); }else if((px > 215) && (px < 265) && (py > 360) && (py < 385)){ lv = (lv + 1) % 6; d_set(); } }else if(e.getClickCount() == 2){ for(int i1 = 0;i1 < 2;i1 ++){ for(int i2 = 0;i2 < 4;i2 ++){ td[si][i1][i2] = 0 ; } } } } repaint(); } } ); } public void paint(Graphics g){ og.setColor(new Color(220,255,220)); og.fillRect(0,0,360,400); og.setColor(Color.white); og.fillRect(195,60,150,270); og.setColor(Color.lightGray); og.drawLine(195,150,345,150); og.drawLine(195,240,345,240); og.setColor(Color.darkGray); for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ if(ad[d1][d2][d3] == 1)og.fillRect(d3*30+30,d1*120+d2*30+60,30,2); } } } for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 5;d2 ++){ og.fillRect(d2*30+30,d1*120+30,2,90); } } for(int d1 = 0;d1 < 5;d1 ++){ og.fillRect(d1*30+210,60,2,270); } for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ if(td[d1][d2][d3] == 1)og.fillRect(d3*30+210,d1*90+d2*30+90,30,2); } } } og.setColor(Color.red); if(sa != 0){ og.drawRect(20,120*sa-100,140,110); } for(int d1 = 0;d1 < 5;d1 ++){ al[2][d1] = al[0][d1]; } for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ if(td[d1][d2][d3] == 1){ sw = al[2][d3] ; al[2][d3] = al[2][d3+1] ; al[2][d3+1] = sw; } } } } for(int d1 = 0;d1 < 5;d1 ++){ if(al[2][d1] == al[1][d1]){ ch[d1] = 1; }else{ ch[d1] = 0; } } og.setFont(new Font("",Font.BOLD,20)); for(int d1 = 0;d1 < 5;d1 ++){ og.setColor(Color.black); og.drawString(""+al[0][d1],d1*30+205,55); og.setColor(Color.blue); og.drawString(""+al[0][d1],d1*30+204,54); } for(int d1 = 0;d1 < 5;d1 ++){ og.setColor(Color.black); og.drawString(""+al[1][d1],d1*30+205,350); if(ch[d1] == 1){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } og.drawString(""+al[1][d1],d1*30+204,349); } og.setFont(new Font("",Font.BOLD,16)); og.setColor(Color.white); og.fillRoundRect(215,360,50,25,15,15); og.setColor(Color.black); og.drawRoundRect(215,360,50,25,15,15); og.drawString("Lv"+(lv+1),226,378); og.setColor(Color.white); og.fillRoundRect(275,360,50,25,15,15); og.setColor(Color.black); og.drawRoundRect(275,360,50,25,15,15); og.drawString("set",287,378); sp = 1; for(int d1 = 0;d1 < 5;d1 ++){ sp = sp * ch[d1] ; } og.setFont(new Font("",Font.BOLD,60)); if((sp == 1) && (sa != 0)){ og.setColor(Color.black); og.drawString("clear!!",92,232); og.setColor(Color.red); og.drawString("clear!!",90,230); } g.drawImage(os,0,0,this); } public void d_set(){ for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ td[d1][d2][d3] = 0; ad[d1][d2][d3] = ad0[lv][d1][d2][d3]; } } } for(int d1 = 0;d1 < 5;d1 ++){ al[1][d1] = al[0][d1]; } for(int kk = 0;kk < 3;kk ++){ sp = (int)(7 * Math.random()) + 1; if(sp != 1){ sa = sp / 2 ; if(sp % 2 == 1)a_turn(); for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ td[kk][d2][d3] = ad[sa - 1][d2][d3]; } } } } for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ if(td[d1][d2][d3] == 1){ sw = al[1][d3] ; al[1][d3] = al[1][d3+1] ; al[1][d3+1] = sw; } } } } for(int d1 = 0;d1 < 3;d1 ++){ for(int d2 = 0;d2 < 2;d2 ++){ for(int d3 = 0;d3 < 4;d3 ++){ td[d1][d2][d3] = 0; ad[d1][d2][d3] = ad0[lv][d1][d2][d3]; } } } sa = 0 ; } public void a_turn(){ sp = ad[sa-1][0][0] ; ad[sa-1][0][0] = ad[sa-1][1][3] ; ad[sa-1][1][3] = sp ; sp = ad[sa-1][0][1] ; ad[sa-1][0][1] = ad[sa-1][1][2] ; ad[sa-1][1][2] = sp ; sp = ad[sa-1][0][2] ; ad[sa-1][0][2] = ad[sa-1][1][1] ; ad[sa-1][1][1] = sp ; sp = ad[sa-1][0][3] ; ad[sa-1][0][3] = ad[sa-1][1][0] ; ad[sa-1][1][0] = sp ; } 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 ) ; } }