import java.applet.Applet;
import java.awt.*;

public class made extends Applet
{

    public void init()
    {
            for(h = 1; h <= 7; h++)
                ce[h] = ce3[h];

        scacchiera();
        setLayout(null);
        setBackground(Color.white);
        add(are);
        are.reshape(260, 40, 200, 120);
        add(ric);
        ric.reshape(270, 180, 70, 25);
            for(h1 = 0; h1 <= 7; h1++)
                for(h = 0; h <= 7; h++)
                    ceno[h1][h] = 0;
ceno[1][1]=2;
ceno[1][2]=4;
ceno[1][3]=5;

ceno[2][1]=1;
ceno[2][2]=3;
ceno[2][3]=4;

ceno[3][1]=2;
ceno[3][2]=4;

ceno[4][1]=1;
ceno[4][2]=2;
ceno[4][3]=3;
ceno[4][4]=5;
ceno[4][5]=6;
ceno[4][6]=7;

ceno[5][1]=1;
ceno[5][2]=4;
ceno[5][3]=6;

ceno[6][1]=5;
ceno[6][2]=4;
ceno[6][3]=7;

ceno[7][1]=4;
ceno[7][2]=6;


    }

    public boolean mouseDown(Event event, int i, int j)
    {
        x1 = i;
        y1 = j;
        riquadro();
        return false;
    }

    public void paint(Graphics g)
    {
        scacchiera();
    }

    public void riquadro()
    {
        Graphics g = getGraphics();
        for(h = 1; h <= 7; h++)
            if(x1 >= (b[h] / 2 - 1) * 90 + 15 && x1 <= (b[h] / 2 - 1) * 90 + 50 && y1 >= (a[h] / 2 - 1) * 90 + 10 && y1 <= (a[h] / 2 - 1) * 90 + 41)
                cella = h;

        libero = false;

        for(h = 1; h <= 7; h++)
            if(ce[ceno[cella][h]] == 3 )
                libero = true;

        if(ce[cella] == 1 && libero)
            if(!primo && cella2 == cella)
            {
                primo = true;

                g.setColor(Color.white);
                g.fillOval((b[cella] / 2 - 1) * 90 + 20, (a[cella] / 2 - 1) * 90 + 10, 30, 30);

                g.setColor(Color.black);
                g.drawRect((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 20, 23, 6);
                g.setColor(Color.cyan);
                g.fillOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.cyan);
                g.fillRect((b[cella] / 2 - 1) * 90 + 24, (a[cella] / 2 - 1) * 90 + 20, 22, 6);
                g.fillOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 15, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 15, 23, 8);

            } else
            if(primo)
            {
                primo = false;
                g.setColor(Color.blue);
                g.fillOval((b[cella] / 2 - 1) * 90 + 20, (a[cella] / 2 - 1) * 90 + 10, 30, 30);

                g.setColor(Color.black);
                g.drawRect((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 20, 23, 6);
                g.setColor(Color.cyan);
                g.fillOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.cyan);
                g.fillRect((b[cella] / 2 - 1) * 90 + 24, (a[cella] / 2 - 1) * 90 + 20, 22, 6);
                g.fillOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 15, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[cella] / 2 - 1) * 90 + 23, (a[cella] / 2 - 1) * 90 + 15, 23, 8);
                cella2 = cella;
            }
        libero = false;
        for(h = 1; h <= 7; h++)
            if(ce[cella] == 3 && ceno[cella2][h] == cella && ce[cella2] == 1 && !primo)
                libero = true;

        if(libero)
        {
            ce[cella] = 1;
            ce[cella2] = 3;
            scacchiera();
            primo = true;
        mossa=false;

if (ce[2]==2 && ce[3]==1 && ce[4]==1 && ce[5]==2 && ce[1]==3 && ce[6]==1 && ce[7]==2)
{
ce[1]=2;
ce[5]=3;
mossa=true;
}
else if(ce[1]==1 && ce[2]==2 && ce[3]==1 && ce[4]==1 && ce[5]==2 && ce[6]==3 && ce[7]==2)
{
ce[7]=3;
ce[6]=2;
mossa=true;
}


else
{

//arnd3 = (int)(Math.random() * 3D);

for(h = 1; h <= 7; h++)
{
if(ce[h]==3)
{
   for(h1 = 1; h1 <= 6; h1++)
    {
      if(ceno[h][h1]>0)
        if(ce[ceno[h][h1]]==2)
        {
        ce[h]=2;
        ce[ceno[h][h1]]=3;
        mossa=true;
        break;
        }

    if(mossa) break;
    }
  if(mossa) break;
}
 if(mossa) break;
}
}
if(mossa)
{
scacchiera();
mossa=false;
for(h = 1; h <= 7; h++)
{
if(ce[h]==3)
{
   for(h1 = 1; h1 <= 6; h1++)
    {
      if(ceno[h][h1]>0)
        if(ce[ceno[h][h1]]==1)
        {
        mossa=true;
        break;
        }
    if(mossa) break;
    }
  if(mossa) break;
}
 if(mossa) break;
}
if(!mossa)
{
        g.setColor(Color.black);
        g.setFont(new Font("Helvetica", 1, 18));
        g.drawString("Ho vinto", 90, 210);
}

}
else
{
        g.setColor(Color.black);
        g.setFont(new Font("Helvetica", 1, 18));
        g.drawString("Hai vinto", 90, 210);
}
    }
    }

    public boolean action(Event event, Object obj)
    {
        if((event.target instanceof Button) && "Ricomincia".equals(obj))
            init();
        if(event.target instanceof Checkbox)
        {
            init();
        }
        return true;
    }

    public void scacchiera()
    {
        Graphics g = getGraphics();
        g.setColor(Color.black);
        g.setFont(new Font("Helvetica", 1, 18));
        g.drawString("La Madelinette", 290, 30);
        g.setFont(new Font("Helvetica", 2, 11));

        g.setColor(Color.white);
        g.setFont(new Font("Helvetica", 1, 18));
        g.drawString("Hai vinto", 90, 210);

        g.setColor(Color.white);
        g.setFont(new Font("Helvetica", 1, 18));
        g.drawString("Ho vinto", 90, 210);


        g.setColor(Color.blue);
        int ax1=35;
        int ax2=125;
        int ax3=215;
        int xpoints[]={ax1,ax3,ax3,ax1,ax1,ax3,ax3,ax1,ax1};
        int ypoints[]={ax1-10,ax1-10,ax2-10,ax2-10,ax1-10,ax3-10,ax1-10,ax3-10,ax1-10};
        int npoints=9;
        g.drawPolygon(xpoints,ypoints,npoints);
        
        for(h = 1; h <= 7; h++)
        {
            if(ce[h] == 1)
            {

                g.setColor(Color.blue);
                g.drawOval((b[h] / 2 - 1) * 90 + 19, (a[h] / 2 - 1) * 90 + 9, 31, 31);
                g.setColor(Color.white);
                g.fillOval((b[h] / 2 - 1) * 90 + 20, (a[h] / 2 - 1) * 90 + 10, 30, 30);

                g.setColor(Color.black);
                g.drawRect((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 20, 23, 6);
                g.setColor(Color.cyan);
                g.fillOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.cyan);
                g.fillRect((b[h] / 2 - 1) * 90 + 24, (a[h] / 2 - 1) * 90 + 20, 22, 6);
                g.fillOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 15, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 15, 23, 8);
            }
            if(ce[h] == 2)
            {
                g.setColor(Color.blue);
                g.drawOval((b[h] / 2 - 1) * 90 + 19, (a[h] / 2 - 1) * 90 + 9, 31, 31);
                g.setColor(Color.white);
                g.fillOval((b[h] / 2 - 1) * 90 + 20, (a[h] / 2 - 1) * 90 + 10, 30, 30);

                g.setColor(Color.black);
                g.drawRect((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 20, 23, 6);
                g.setColor(Color.red);
                g.fillOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 23, 23, 8);
                g.setColor(Color.red);
                g.fillRect((b[h] / 2 - 1) * 90 + 24, (a[h] / 2 - 1) * 90 + 20, 22, 6);
                g.fillOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 15, 23, 8);
                g.setColor(Color.black);
                g.drawOval((b[h] / 2 - 1) * 90 + 23, (a[h] / 2 - 1) * 90 + 15, 23, 8);
            }
            if(ce[h] == 3)
            {
                g.setColor(Color.blue);
                g.drawOval((b[h] / 2 - 1) * 90 + 19, (a[h] / 2 - 1) * 90 + 9, 31, 31);
                g.setColor(Color.white);
                g.fillOval((b[h] / 2 - 1) * 90 + 20, (a[h] / 2 - 1) * 90 + 10, 30, 30);
            }
        }

    }

    public made()
    {
        primo = true;
        ok = true;
        libero = false;
        mossa = false;
        testo = "Lo scopo del gioco e' molto semplice \nbisogna muovere le proprie pedine per\nbloccare l'avversario rosso (il computer)\n\nBuon divertimento\n\nAntonino Iacono (aiacono@tiscalinet.it)";        gruppo = new CheckboxGroup();
        are = new TextArea(testo, 40, 40);
        ric = new Button("Ricomincia");
        ceno = new int[35][25];
        ce = new int[35];
    }

    boolean primo;
    boolean ok;
    boolean libero;
    boolean mossa;
    String testo;
    CheckboxGroup gruppo;
    TextArea are;
    Button ric;
    int arnd3;
    int x1;
    int y1;
    int h;
    int h1;
    int h2;
    int e;
    int r;
    int cella;
    int cella2;
    int cellav;
    int conta;
    int b[] = { 0, 2, 2, 2, 4, 6, 6, 6  };
    int a[] = { 0, 2, 4, 6, 4, 2, 4, 6  };
    int ce3[] = { 0, 1, 2, 1, 3, 2, 1, 2};
    int ceno[][];
    int ce[];
}
