Java | 3次元配列(配列の配列の配列)

Java Java
スポンサーリンク

「三次元配列で立方体の迷路を表現する」例題を作ってみましょう。初心者向けに、立方体の中を通路と壁で表すイメージで解説します。


三次元配列で立方体の迷路を表す

基本の考え方

  • 三次元配列 maze[z][x][y]
    • z → 層(高さ方向、階層)
    • x → 行(縦方向)
    • y → 列(横方向)
  • 値の意味
    • 0 → 通路
    • 1 → 壁
    • 2 → スタート地点
    • 3 → ゴール地点

例題コード

public class CubeMaze {
    public static void main(String[] args) {
        // 2層 × 3行 × 3列の立方体迷路
        int[][][] maze = {
            {   // 層0
                {2, 0, 1},  // 行0
                {1, 0, 1},  // 行1
                {1, 0, 3}   // 行2
            },
            {   // 層1
                {1, 0, 1},  // 行0
                {0, 0, 0},  // 行1
                {1, 1, 1}   // 行2
            }
        };

        // 表示
        for (int z = 0; z < maze.length; z++) {
            System.out.println("Layer " + z + ":");
            for (int x = 0; x < maze[z].length; x++) {
                for (int y = 0; y < maze[z][x].length; y++) {
                    char c;
                    switch (maze[z][x][y]) {
                        case 0: c = '.'; break; // 通路
                        case 1: c = '#'; break; // 壁
                        case 2: c = 'S'; break; // スタート
                        case 3: c = 'G'; break; // ゴール
                        default: c = '?';
                    }
                    System.out.print(c + " ");
                }
                System.out.println();
            }
            System.out.println("---");
        }
    }
}
Java

出力例

Layer 0:
S . #
# . #
# . G
---
Layer 1:
# . #
. . .
# # #
---

解説

  • 層0 にスタート S とゴール G を配置。
  • 層1 は通路を広めにして「上の階から下の階へ移動できる」イメージ。
  • 出力では . が通路、# が壁。

応用アイデア

  • 探索アルゴリズム(DFSやBFS)を使えば「スタートからゴールまで行けるか?」を判定できる。
  • 大きな立方体(例:5×5×5)を作って、ランダムに壁を配置すれば「3D迷路生成ゲーム」に発展できる。
  • 層ごとに表示することで「立体を分解して見る」感覚を養える。

👉 次のステップとして「この迷路を探索してゴールまでの経路を見つける」アルゴリズムを組んでみると、三次元配列の理解がさらに深まります。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました