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 ) ;
}
}
