迷路サンプルプログラムの使い方


更新履歴


これは何?

 迷路ファイルの読み込み、画面表示など、 実際に解く部分以外をまとめたものです。 レベル4 (壁伝いでは抜けられない迷路の最短経路探索) までに対応しています。 迷路のサンプルも付いています。 なお、UNIX+X11用のプログラムで、libsxが必要です。 Cygwinでもコンパイルできます。

Screen Shot
実行中の画面

使い方

 Maze.tar.gzをダウンロードして、解凍してください。 GNU tarとgzipがあれば、

    tar xvzf Maze.tar.gz
で解凍できます。 ファイルはMazeディレクトリ内に展開されます。 Mazeディレクトリに移動して (cd Mazeを実行して)、 makeでコンパイルします。

 以下のファイルが含まれています。


利用可能な定数, 変数, 関数

 利用可能な定数, 変数, 関数は、 ヘッダファイルmaze.hに書かれています。

定数

迷路の状態 (地図)
名前 説明
UNKNOWN -4 不明
GOAL -3 ゴール
START -2 スタート
WALL -1
ROUTE 0 通路

進行方向 (Direction)
名前 説明
DIR_UP 0
DIR_RIGHT 1
DIR_DOWN 2
DIR_LEFT 3

現在の処理段階 (Status)
名前 説明
STAT_STEP1 1 Step 1: 地図作成
STAT_SEARCH 2 Search: 最短経路探索
STAT_STEP2 3 Step2: 最短経路を進む
STAT_DONE 4 おしまい

次の動作 (Next Step)
名前 説明
GO_LEFT -2 左に進む
TURN_LEFT -1 左を向く (進まない)
GO_FORWARD 0 前に進む
TURN_RIGHT +1 右を向く (進まない)
GO_RIGHT +2 右へ進む
GO_BACK -3 戻る (後ろを向いて、一歩進む)
DONE -100 おしまい

画面関係 (X11)
名前 説明
VIEWSIZE 300 3次元表示のサイズ
MAPSIZE 300 地図表示のサイズ
TIMEOUT 500 AUTOの処理間隔 (msec)

変数

 構造体ViewInfo型の変数Viewがあり、 自分の周辺がどのような状態であるのかを示しています。 ViewInfo構造体には下記のメンバがあります。

構造体ViewInfo
メンバ 説明
left int 左側の状態
front int 前方の状態
right int 右側の状態
back int 後方の状態
current int 現在位置の状態
dir int 向いている方向
x int 現在のx座標
y int 現在のy座標

 その他に利用できる変数には、下記があります。

その他の変数
変数名 説明
HSize int 迷路のサイズ (横方向)
VSize int 迷路のサイズ (縦方向)
StartX int スタート位置のx座標
StartY int スタート位置のy座標
Info ViewInfo 現在位置周辺の情報
DirX[] int 方向DIR_*に動く時の、x座標の変化分
DirY[] int 方向DIR_*に動く時の、y座標の変化分

利用可能な関数

 以下の関数が使用できる。 関数はmazelib.cに書いてある。


自分で作成する (中身を書く) 関数

 ファイルmaze1.c


迷路データの書き方

サンプル

hsize 10
vsize 10
begin
##########
#S  # #  #
# # #   ##
# #   #  #
# ###### #
#   #    #
### # ####
#   #    #
#G# # ## #
##########
end

注意


ダウンロード

 2003年5月16日〜6月13日のMaze.tar.gzには、 GetNextViewInfo()関数にバグがあります。 訂正版を置いておきます。


(作成: 2003年4月17日, 最終更新: 2003年6月20日)