import java.applet.*; import java.awt.*; public class Osidori extends Applet implements Runnable{ Image pic,mp; int px[]={20,50,80,110,140,170,200,230,260,290,320,350,380,410,440,470,500}; int Count = 0; int py=20; int mx,my; int sx1,sx2,sw; int cx,cx0,rx; int md[]={1,-1,1,-1,1,-1,0,0,0,0,0,0,0,0,0,0}; int nop = 3; Choice sel = new Choice(); Button pla = new Button(" (re)PLAY "); Thread th = null; Image os; Graphics og; public void init(){ setBackground(Color.white); os = createImage(520,100); og = os.getGraphics(); mp = getImage(getDocumentBase(),"Picture/siro.gif"); mx = 20; my = 20; setLayout(new BorderLayout()); Panel pan = new Panel(); pan.setLayout(new FlowLayout()); sel.addItem(" 3 "); sel.addItem(" 4 "); sel.addItem(" 5 "); pan.add(sel); pan.add(pla); add("South",pan); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,520,100); og.setColor(Color.black); og.drawLine(20,20,500,20); og.drawLine(20,50,500,50); for(int i = 0;i < 17;i++){ og.drawLine(20+30*i,20,20+30*i,50); } og.setFont(new Font("Century",Font.PLAIN,16)); og.drawString("Count = "+Count,400,70); for(int j = 0;j < 16;j++){ if(md[j] == -1){ pic = getImage(getDocumentBase(),"Picture/kuro.gif"); }else if(md[j] == 1){ pic = getImage(getDocumentBase(),"Picture/siro.gif"); }else if(md[j] == 0){ pic = getImage(getDocumentBase(),""); } og.drawImage(pic,px[j],py,this); og.drawImage(mp,mx,my,this); } g.drawImage(os,0,0,this); } public boolean mouseDown(Event e,int x,int y){ cx = (x-35)/30; cx0 = cx; if(md[cx] == 1 && md[cx+1] == -1){ sx1 = md[cx]; sx2 = md[cx+1]; md[cx]=0; md[cx+1]=0; mp = getImage(getDocumentBase(),"Picture/s-k.gif"); mx = cx*30+30; my = y-15; sw = 1; }else if(md[cx] == -1 && md[cx+1] == 1){ sx1 = md[cx]; sx2 = md[cx+1]; md[cx]=0; md[cx+1]=0; mp = getImage(getDocumentBase(),"Picture/k-s.gif"); mx = cx*30+30; my = y-15; sw = 1; }else if(md[cx] == 1 && md[cx+1] == 1){ sx1 = md[cx]; sx2 = md[cx+1]; md[cx]=0; md[cx+1]=0; mp = getImage(getDocumentBase(),"Picture/s-s.gif"); mx = cx*30+30; my = y-15; sw = 1; }else if(md[cx] == -1 && md[cx+1] == -1){ sx1 = md[cx]; sx2 = md[cx+1]; md[cx]=0; md[cx+1]=0; mp = getImage(getDocumentBase(),"Picture/k-k.gif"); mx = cx*30+30; my = y-15; sw = 1; }else { sx1 = md[cx]; sx2 = md[cx+1]; sw = 0; mp = getImage(getDocumentBase(),""); } repaint(); return true; } public boolean mouseUp(Event e,int x2,int y){ rx = (x2-35)/30; if(rx > 14)rx=14; if(md[rx] == 0 && md[rx+1] == 0 && sw == 1){ md[rx]=sx1; md[rx+1]=sx2; Count = Count + 1; mx = cx*30+35; my = 20; }else { md[cx0]=sx1; md[cx0+1]=sx2; mx = cx0*30+35; my = 20; } mp = getImage(getDocumentBase(),""); repaint(); return true; } public boolean mouseDrag(Event e,int x,int y){ mx = x-30; my = y-15; repaint(); return true; } public boolean action(Event e,Object o){ if(e.target == sel){ if(o == " 5 ")nop =5; else if(o == " 4 ")nop =4; else nop =3; for(int k = 0;k <= nop;k++){ md[k*2]=1; md[k*2+1]=-1; } for(int k=nop*2;k<16;k++)md[k]=0; Count = 0; repaint(); return true; } if(e.target == pla){ for(int k = 0;k <= nop;k++){ md[k*2]=1; md[k*2+1]=-1; } for(int k=nop*2;k<16;k++)md[k]=0; Count = 0; repaint(); return true; } return false; } 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 ) ; } }