サイズ: 689
コメント:
|
サイズ: 453
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 3: | 行 3: |
{{{ void mazeru() |
{{{#!java void shokika() |
行 6: | 行 7: |
int i, j, x1, y1, x2, y2, w; ban = new int[nx][ny]; for(i = 0; i < nx; i++) // 元の位置 for(j = 0; j < ny; j++) ban[i][j] =i + j * nx; spx = nx-1; // 空白の位置 spy = ny-1; for(i = 0; i < (nx*ny*2); i++) // 偶数回置換 |
int x, y, x2, y2, w, cnt; ... ... for (cnt = 0; cnt < (tate*yoko*2); cnt++) |
行 16: | 行 12: |
do | x = (int)(Math.random() * (yoko-1)); y = (int)(Math.random() * (tate-1)); if(Math.random() < 0.5) |
行 18: | 行 16: |
x1 = (int)(Math.random() * nx); y1 = (int)(Math.random() * ny); x2 = (int)(Math.random() * nx); y2 = (int)(Math.random() * ny); } while ( (x1 == x2 && y1 == y2) || (x1 == spx && y1 == spy) || (x2 == spx && y2 == spy) ); w = ban[x1][y1]; ban[x1][y1] = ban[x2][y2]; |
x2 = x; y2 = y + 1; } else { x2 = x + 1; y2 = y; } w = ban[x][y]; ban[x][y] = ban[x2][y2]; |
ばらばらにする
1 void shokika()
2 {
3 int x, y, x2, y2, w, cnt;
4 ...
5 ...
6 for (cnt = 0; cnt < (tate*yoko*2); cnt++)
7 {
8 x = (int)(Math.random() * (yoko-1));
9 y = (int)(Math.random() * (tate-1));
10 if(Math.random() < 0.5)
11 {
12 x2 = x;
13 y2 = y + 1;
14 }
15 else
16 {
17 x2 = x + 1;
18 y2 = y;
19 }
20 w = ban[x][y];
21 ban[x][y] = ban[x2][y2];
22 ban[x2][y2] = w;
23 }
24 }