import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class r_square extends Applet implements Runnable{
Thread th = null;
Image os;
Graphics og;
int td[][] = {{0,0,1,1,0,0},{0,0,1,1,0,0},{1,1,1,1,1,1},{1,1,1,1,1,1},{0,0,1,1,0,0},{0,0,1,1,0,0}};
int cd[][] = {{2,8,9,3},{8,14,15,9},{14,20,21,15},{20,26,27,21},{26,32,33,27},{12,18,19,13},{13,19,20,14},
{15,21,22,16},{16,22,23,17},{8,13,20,15},{9,14,21,16},{14,19,26,21},{15,20,27,22},{2,12,26,16},
{3,13,27,17},{8,18,32,22},{9,19,33,23},{8,19,27,16},{9,13,26,22},{2,18,33,17},{3,12,32,23}};
int px,py,ch=0,no=6,sw=0;
public void init(){
os = createImage(240,270);
og = os.getGraphics();
addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e){
if((e.getX()>30)&&(e.getX()<90)&&(e.getY()>230)&&(e.getY()<250)){
if(ch == 0){
ch = 1;
}else{
ch = 0;
}
}else if((e.getX()>150)&&(e.getX()<210)&&(e.getY()>230)&&(e.getY()<250)){
if(ch == 1)ch = 0;
for(int rx = 0;rx < 6;rx ++){
for(int ry = 0;ry < 6;ry ++){
td[ry][rx] = td[ry][rx]*td[ry][rx];
}
}
no = 6;
}else{
if(ch == 1)ch = 0;
px = (e.getX() - 30) / 30;
py = (e.getY() - 30) / 30;
if(td[py][px] == 1){
if(no > 0){
td[py][px] = -1;
no --;
}
}else if(td[py][px] == -1){
td[py][px] = 1;
no ++;
}
}
repaint();
}
}
);
}
public void paint(Graphics g){
og.setColor(Color.white);
og.fillRect(0,0,240,270);
for(int dx = 0;dx < 6;dx ++){
for(int dy = 0; dy < 6;dy ++){
if(td[dy][dx] == 1){
for(int i = 0;i < 16;i++){
og.setColor(new Color(10,10,100+(int)(150*Math.sin(1.57*i/16))));
og.fillOval(dx*30+30+i,dy*30+30+i,32-2*i,32-2*i);
}
}else if(td[dy][dx] == -1){
og.setColor(Color.black);
og.fillOval(dx*30+42,dy*30+42,6,6);
}
}
}
og.setColor(Color.lightGray);
og.fillRoundRect(30,230,60,20,5,5);
og.fillRoundRect(150,230,60,20,5,5);
og.setColor(Color.darkGray);
og.drawRoundRect(30,230,60,20,5,5);
og.drawRoundRect(150,230,60,20,5,5);
og.setFont(new Font("",Font.BOLD,20));
og.setColor(Color.black);
og.drawString("check",34,246);
og.drawString("reset",157,246);
og.setColor(Color.lightGray);
og.setFont(new Font("",Font.BOLD,30));
og.drawString(""+no,115,250);
og.setColor(Color.black);
og.setFont(new Font("",Font.BOLD,30));
og.drawString(""+no,113,249);
if(ch == 1){
og.setColor(Color.red);
sw = 1;
for(int s1 = 0;s1 < 21;s1 ++){
if(td[cd[s1][0]/6][cd[s1][0]%6]+td[cd[s1][1]/6][cd[s1][1]%6]+td[cd[s1][2]/6][cd[s1][2]%6]+td[cd[s1][3]/6][cd[s1][3]%6] == 4){
og.drawLine(cd[s1][0]%6*30+45,cd[s1][0]/6*30+45,cd[s1][1]%6*30+45,cd[s1][1]/6*30+45);
og.drawLine(cd[s1][1]%6*30+45,cd[s1][1]/6*30+45,cd[s1][2]%6*30+45,cd[s1][2]/6*30+45);
og.drawLine(cd[s1][2]%6*30+45,cd[s1][2]/6*30+45,cd[s1][3]%6*30+45,cd[s1][3]/6*30+45);
og.drawLine(cd[s1][3]%6*30+45,cd[s1][3]/6*30+45,cd[s1][0]%6*30+45,cd[s1][0]/6*30+45);
sw = 0;
}
}
}
if((sw == 1)&&(no == 0)&&(ch == 1)){
og.setFont(new Font("",Font.BOLD,60));
og.setColor(Color.black);
og.drawString("clear!!",48,142);
og.setColor(Color.red);
og.drawString("clear!!",45,140);
}
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 ) ;
}
}
