レベル1

1.<パズルの内容>

・3行3列で出来ている。 ・1番から8番のパネルがある。(9番は"空"である。) ・"空"の隣のパネルをクリックするとパネルが移動する。

2.<考え方>

? 5行5列の配列を作る

Pazzle1.java
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Pazzle1 extends Applet implements MouseListener {
    int x[] = new int[4];
    int y[] = new int[4];
    int pnlWidth,pnlHeight;
    int a,b,k;
    int nullx,nully;
    int num[][]= new int[5][5];
    Color clr[] = {Color.red,Color.green,Color.blue,Color.pink,Color.yellow,Color.orange,Color.gray,Color.cyan};
    Image img;			   
    Graphics offGr;
    
    public void init() {
        pnlWidth = getWidth()/3;
        pnlHeight = getHeight()/3;
        for(int i=1;i<4;i++) {
            x[i] = pnlWidth*(i-1);
            y[i] = pnlHeight*(i-1);
        }
        for(int i=1;i<4;i++) {
            for(int j=1;j<4;j++) {
                num[j][i]=k+1;
                k++;
            }
        }
        img = createImage(300,300);
        offGr = img.getGraphics();
        addMouseListener(this);
    }
    public void update(Graphics g) {
        paint(g);
    }
    public void paint(Graphics Gr) {
        offGr.clearRect(0,0,300,300);
        for(int i=1;i<4;i++) {
            for(int j=1;j<4;j++) {
                if(num[i][j]!=9) {
                    offGr.setColor(clr[num[i][j]-1]);
                    offGr.fillRect(x[i],y[j],pnlWidth,pnlHeight);
                    offGr.setColor(Color.black);
                    offGr.setFont(new Font("Serif",Font.ITALIC,50));
                    offGr.drawString(Integer.toString(num[i][j]),x[i]+pnlWidth/3,y[j]+pnlHeight*2/3);
                }
                if(num[i][j]==9) {
                    nullx=x[i];
                    nully=y[j];
                    a=i;b=j;
                }
            }
        }
        Gr.drawImage(img,0,0,this);
    }
    
    public void mouseClicked(MouseEvent e) {
        int xx=0,yy=0;
        xx=e.getX();
        yy=e.getY();
        if(xx<nullx || xx>nullx+pnlWidth || yy<nully || yy>nully+pnlHeight) {
            for(int i=1;i<4;i++) {
                for(int j=1;j<4;j++) {
                    if(xx>x[i] && xx<x[i]+pnlWidth && yy>y[j] && yy<y[j]+pnlHeight) {
                        if(num[i+1][j]==9||num[i-1][j]==9||num[i][j+1]==9||num[i][j-1]==9) {
                            num[a][b]=num[i][j];
                            num[i][j]=9;
                            break;
                        }
                    }
                }
            }
        }
        repaint();
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }
}
				

top

5593