配列を利用しよう(迷路の作成)








import java.applet.Applet;
import java.awt.*;

public class ren11 extends Applet{
  int a[][]=new int[10][10];             ← @
  public void init(){
      int x,y;
      for(x=0;x<10;x++)
        for(y=0;y<10;y++)
          a[x][y]=0;                 ←A

      a[0][1]=1;                                    ←B
      a[1][1]=1;a[1][2]=1;a[1][3]=1;a[1][4]=1;a[1][5]=1;a[1][6]=1;a[1][7]=1;a[1][8]=1;
      a[2][1]=1;a[2][8]=1;
      a[3][1]=1;a[3][4]=1;a[3][5]=1;a[3][6]=1;a[3][8]=1;
      a[4][1]=1;a[4][4]=1;a[4][6]=1;a[4][8]=1;
      a[5][1]=1;a[5][2]=1;a[5][3]=1;a[5][4]=1;a[5][6]=1;a[5][8]=1;
      a[6][1]=1;a[6][4]=1;a[6][5]=1;a[6][6]=1;a[6][8]=1;
      a[7][1]=1;a[7][3]=1;a[7][4]=1;
      a[8][1]=1;a[8][4]=1;a[8][5]=1;a[8][6]=1;a[8][7]=1;a[8][8]=1;a[8][9]=1;
  }

  public void paint(Graphics g){
  int x,y;
  g.setColor(Color.yellow);
  for(x=0;x<10;x++)
    for(y=0;y<10;y++)
      if(a[x][y]==0)
        g.fillRect(y*20+10,x*20+10,20,20);           ←C
  }
}



@配列の宣言
  int a[][]=new int[10][10]
  int型で、10行10列の2次元配列aを宣言します。


A配列の全ての要素に0を代入する。



B指定した要素に1を代入する。




C2次元配列aの要素のうち0が代入されている要素にしたがって、塗りつぶし四角形を描く。
 
 g.fillRect(y*20+10,x*20+10,20,20)
fillRect()メソッドをはじめ、全ての描画メソッドは左上が0,0という原点になり、描画を開始する位置を左から何ピクセル、上から何ピクセルとふうに指定する。よって、配列の列を表すyを左からの位置指定に、行を表すxを上からの位置指定に用いる。



問題 今実行したプログラムは、迷路のつもりで作っていますが、「迷路に見えない!」という人は迷路らしくしなさい。
問題 下記のGifファイルをコピーして、下記のアプレットを作成しなさい。ただし、10行10列の2次元配列を用います。また、イメージの大きさは縦、横とも20ピクセルとする。



戻る
次へ