[Map.java] -- class Map{ //迷路のマップを扱うクラス private Rc size; //サイズ private int maparray[][]; //マップ用配列 static final int PATH = 0; //'道' static final int WALL = 1; //'壁' static final int START = 2; //'開始位置' static final int GOAL = 3; //'終了位置' static final int UNDEF = 4; //'未定義' static final char SYMBOL[] = {' ', '#', 'S', 'G', '-'}; public Map(Rc isize){ size = isize; maparray = new int[size.r*2+1][size.c*2+1]; //マップ用配列を生成 for(int i=0; i=1)&&(p.r<=size.r)&&(p.c>=1)&&(p.c<=size.c)) return (maparray[p.r*2-1][p.c*2-1]==UNDEF); else return false; } private static void shuffle(int orig[], int shuf[], int n){ //配列のシャッフルを行う int num = (int)(Math.random() * n); shuf[n-1] = orig[num]; if(n > 1){ int temp[] = new int[n-1]; int ct = 0; for(int i=0; i=1)&&(p.next(i).r<=size.r)&&(p.next(i).c>=1)&&(p.next(i).c<=size.c)){ if(maparray[p.next(i).r*2-1][p.next(i).c*2-1]==PATH){ chk[num] = i; num++; } } } if(num == 0) //'道'が隣に無いときはその場に'道'を配置 setPath(p, p); else //既存の'道'につなげて'道'を配置 setPath(p, p.next(chk[(int)(Math.random()*num)])); } } -- Copyright (C) Junro YOSHINO