// // 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(); } }