import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class c_four extends Applet{
Button rep;
int btd[][] = {{0,0,0,0,0,0},
{0,1,1,1,2,0},
{0,1,1,2,1,0},
{0,1,2,1,1,0},
{0,2,1,1,1,0},
{0,0,0,0,0,0}};
int mtd[][] = new int[6][6];
Image ball[] = new Image[2];
Image arr[] = new Image[4];
int dx,dy;
Color bg = new Color(200,200,255);
public void init(){
setBackground(Color.white);
ball[0] = getImage(getDocumentBase(),"Picture/ball2.gif");
ball[1] = getImage(getDocumentBase(),"Picture/ball1.gif");
arr[0] = getImage(getDocumentBase(),"Picture/are.gif");
arr[1] = getImage(getDocumentBase(),"Picture/arn.gif");
arr[2] = getImage(getDocumentBase(),"Picture/arw.gif");
arr[3] = getImage(getDocumentBase(),"Picture/ars.gif");
for(int px = 0;px < 6;px ++){
for(int py = 0;py < 6;py ++){
mtd[py][px] = btd[py][px];
}
}
setLayout(new BorderLayout());
Panel pan = new Panel();
pan.setLayout(new FlowLayout());
pan.add(rep = new Button(" replay "));
add("South",pan);
rep.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
for(int px = 0;px < 6;px ++){
for(int py = 0;py < 6;py ++){
mtd[py][px] = btd[py][px];
}
}
repaint();
}
});
addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e){
dx = (e.getX() - 20) / 40;
dy = (e.getY() - 20) / 40;
if((dx > 1) && (dx < 6)){
if(dy == 0){
if((mtd[1][dx - 1] != 0) && (mtd[2][dx - 1] != 0)
&& (mtd[3][dx - 1] != 0) && (mtd[4][dx - 1] != 0)){
mtd[0][dx - 1] = mtd[1][dx - 1];
mtd[1][dx - 1] = mtd[2][dx - 1];
mtd[2][dx - 1] = mtd[3][dx - 1];
mtd[3][dx - 1] = mtd[4][dx - 1];
mtd[4][dx - 1] = 0;
repaint(1,40 * dx + 20,60,40,200);
}
if((mtd[2][dx - 1] != 0) && (mtd[3][dx - 1] != 0)
&& (mtd[4][dx - 1] != 0) && (mtd[5][dx - 1] != 0)){
mtd[1][dx - 1] = mtd[2][dx - 1];
mtd[2][dx - 1] = mtd[3][dx - 1];
mtd[3][dx - 1] = mtd[4][dx - 1];
mtd[4][dx - 1] = mtd[5][dx - 1];
mtd[5][dx - 1] = 0;
repaint(1,40 * dx + 20,100,40,200);
}
}
if(dy == 7){
if((mtd[1][dx - 1] != 0) && (mtd[2][dx - 1] != 0)
&& (mtd[3][dx - 1] != 0) && (mtd[4][dx - 1] != 0)){
mtd[5][dx - 1] = mtd[4][dx - 1];
mtd[4][dx - 1] = mtd[3][dx - 1];
mtd[3][dx - 1] = mtd[2][dx - 1];
mtd[2][dx - 1] = mtd[1][dx - 1];
mtd[1][dx - 1] = 0;
repaint(1,40 * dx + 20,100,40,200);
}
if((mtd[0][dx - 1] != 0) && (mtd[1][dx - 1] != 0)
&& (mtd[2][dx - 1] != 0) && (mtd[3][dx - 1] != 0)){
mtd[4][dx - 1] = mtd[3][dx - 1];
mtd[3][dx - 1] = mtd[2][dx - 1];
mtd[2][dx - 1] = mtd[1][dx - 1];
mtd[1][dx - 1] = mtd[0][dx - 1];
mtd[0][dx - 1] = 0;
repaint(1,40 * dx + 20,60,40,200);
}
}
}
if((dy > 1) && (dy < 6)){
if(dx == 0){
if((mtd[dy - 1][1] != 0) && (mtd[dy - 1][2] != 0)
&& (mtd[dy - 1][3] != 0) && (mtd[dy - 1][4] != 0)){
mtd[dy - 1][0] = mtd[dy - 1][1];
mtd[dy - 1][1] = mtd[dy - 1][2];
mtd[dy - 1][2] = mtd[dy - 1][3];
mtd[dy - 1][3] = mtd[dy - 1][4];
mtd[dy - 1][4] = 0;
repaint(1,60,40 * dy + 20,200,40);
}
if((mtd[dy - 1][2] != 0) && (mtd[dy - 1][3] != 0)
&& (mtd[dy - 1][4] != 0) && (mtd[dy - 1][5] != 0)){
mtd[dy - 1][1] = mtd[dy - 1][2];
mtd[dy - 1][2] = mtd[dy - 1][3];
mtd[dy - 1][3] = mtd[dy - 1][4];
mtd[dy - 1][4] = mtd[dy - 1][5];
mtd[dy - 1][5] = 0;
repaint(1,100,40 * dy + 20,200,40);
}
}
if(dx == 7){
if((mtd[dy - 1][1] != 0) && (mtd[dy - 1][2] != 0)
&& (mtd[dy - 1][3] != 0) && (mtd[dy - 1][4] != 0)){
mtd[dy - 1][5] = mtd[dy - 1][4];
mtd[dy - 1][4] = mtd[dy - 1][3];
mtd[dy - 1][3] = mtd[dy - 1][2];
mtd[dy - 1][2] = mtd[dy - 1][1];
mtd[dy - 1][1] = 0;
repaint(1,100,40 * dy + 20,200,40);
}
if((mtd[dy - 1][0] != 0) && (mtd[dy - 1][1] != 0)
&& (mtd[dy - 1][2] != 0) && (mtd[dy - 1][3] != 0)){
mtd[dy - 1][4] = mtd[dy - 1][3];
mtd[dy - 1][3] = mtd[dy - 1][2];
mtd[dy - 1][2] = mtd[dy - 1][1];
mtd[dy - 1][1] = mtd[dy - 1][0];
mtd[dy - 1][0] = 0;
repaint(1,60,40 * dy + 20,200,40);
}
}
}
}
}
);
}
public void paint(Graphics g){
for(int ix = 0;ix < 6;ix ++){
for(int iy = 0;iy < 6;iy ++){
if(mtd[iy][ix] > 0){
g.setColor(bg);
g.fillRect(ix * 40 + 60,iy * 40 + 60,40,40);
g.drawImage(ball[mtd[iy][ix]-1],ix * 40 + 60,iy * 40 + 60,this);
}
}
}
for(int ax = 0;ax < 4;ax ++){
g.setColor(Color.darkGray);
g.draw3DRect(ax * 40 + 100,60,40,240,true);
g.draw3DRect(60,ax * 40 + 100,240,40,true);
g.drawImage(arr[0],300,ax * 40 + 100,this);
g.drawImage(arr[1],ax * 40 + 100,20,this);
g.drawImage(arr[2],20,ax * 40 + 100,this);
g.drawImage(arr[3],ax * 40 + 100,300,this);
}
g.setColor(Color.red);
g.draw3DRect(140,140,80,80,true);
g.draw3DRect(141,141,78,78,true);
}
}
