//
// Carpet 2001/09/01 by ONOZATO Takehisa
//
//
//
// 参考図書:Javaではじめるプログラミング
// 箕原辰夫著 SHUWA SYSTEM CO.,LTD. 発行2001/1/1
//
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Carpet extends Applet implements ActionListener{
Button btn1, btn2;
int stage; //描画の段階(0〜5)
int ptX[][]=new int[5][4097]; //頂点の座標(ピクセル)
int ptY[][]=new int[5][4097]; //(使用しない要素あり)
int pX0=30; int pY0=40; //正方形の左上の頂点(初期値)
int a0=243; //正方形の辺の長さ(初期値)
public void init(){
btn1=new Button("Back");
btn1.addActionListener(this); add(btn1);
btn2=new Button("Next");
btn2.addActionListener(this); add(btn2);
setBackground(new Color(255,240,224)); //背景色
stage=0;
ptX[0][1]=pX0; ptY[0][1]=pY0; //正方形の左上の頂点
int a=a0; //正方形の辺の長さ
int n=1; //正方形の頂点の個数
//周囲の正方形の頂点座標の計算
for(int i=1; i<=4; i++){
a=a/3;
for(int j=1; j<=n; j++){
int jj=8*(j-1);
ptX[i][jj+1]=ptX[i-1][j]; ptY[i][jj+1]=ptY[i-1][j];
ptX[i][jj+2]=ptX[i-1][j]+a; ptY[i][jj+2]=ptY[i-1][j];
ptX[i][jj+3]=ptX[i-1][j]+2*a; ptY[i][jj+3]=ptY[i-1][j];
ptX[i][jj+4]=ptX[i-1][j]; ptY[i][jj+4]=ptY[i-1][j]+a;
ptX[i][jj+5]=ptX[i-1][j]+2*a; ptY[i][jj+5]=ptY[i-1][j]+a;
ptX[i][jj+6]=ptX[i-1][j]; ptY[i][jj+6]=ptY[i-1][j]+2*a;
ptX[i][jj+7]=ptX[i-1][j]+a; ptY[i][jj+7]=ptY[i-1][j]+2*a;
ptX[i][jj+8]=ptX[i-1][j]+2*a; ptY[i][jj+8]=ptY[i-1][j]+2*a;
}
n=n*8;
}
}
public void paint(Graphics gr){
gr.setColor(new Color(0,160,160)); //正方形の描画色
gr.fillRect(ptX[0][1],ptY[0][1],a0,a0);
gr.setColor(new Color(255,240,224)); //穴の色(背景色)
//穴を背景色で塗る
if(stage>0){
int a=a0; //穴の辺の長さ
int n=1; //穴の数
for(int i=0; i0){stage=stage-1;}
}
repaint();
}
}