Hengband  2.1.4
 全て データ構造 ファイル 関数 変数 型定義 マクロ定義 ページ
マクロ定義 | 関数
grid.h

ダンジョンの生成処理の基幹部分ヘッダーファイル [詳細]

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

マクロ定義

#define set_cave_feat(Y, X, F)   (cave[(Y)][(X)].feat = (F))
 
#define add_cave_info(Y, X, I)   (cave[(Y)][(X)].info |= (I))
 
#define place_rubble(Y, X)   set_cave_feat(Y,X,feat_rubble)
 指定座標が瓦礫かどうかを返す [詳細]
 
#define place_up_stairs(Y, X)   set_cave_feat(Y,X,feat_up_stair)
 指定座標が上り階段かどうかを返す [詳細]
 
#define place_down_stairs(Y, X)   set_cave_feat(Y,X,feat_down_stair)
 指定座標が下り階段かどうかを返す [詳細]
 
#define is_floor_bold(Y, X)   (cave[Y][X].info & CAVE_FLOOR)
 指定座標がFLOOR属性を持ったマスかどうかを返す [詳細]
 
#define is_extra_bold(Y, X)   (cave[Y][X].info & CAVE_EXTRA)
 
#define is_inner_bold(Y, X)   (cave[Y][X].info & CAVE_INNER)
 
#define is_outer_bold(Y, X)   (cave[Y][X].info & CAVE_OUTER)
 
#define is_solid_bold(Y, X)   (cave[Y][X].info & CAVE_SOLID)
 
#define is_floor_grid(C)   ((C)->info & CAVE_FLOOR)
 
#define is_extra_grid(C)   ((C)->info & CAVE_EXTRA)
 
#define is_inner_grid(C)   ((C)->info & CAVE_INNER)
 
#define is_outer_grid(C)   ((C)->info & CAVE_OUTER)
 
#define is_solid_grid(C)   ((C)->info & CAVE_SOLID)
 
#define place_floor_bold(Y, X)
 
#define place_floor_grid(C)
 
#define place_extra_bold(Y, X)
 
#define place_extra_grid(C)
 
#define place_extra_perm_bold(Y, X)
 
#define place_extra_perm_grid(C)
 
#define place_extra_noperm_bold(Y, X)
 
#define place_inner_bold(Y, X)
 
#define place_inner_grid(C)
 
#define place_inner_perm_bold(Y, X)
 
#define place_inner_perm_grid(C)
 
#define place_outer_bold(Y, X)
 
#define place_outer_grid(C)
 
#define place_outer_perm_bold(Y, X)
 
#define place_outer_perm_grid(C)
 
#define place_outer_noperm_bold(Y, X)
 
#define place_outer_noperm_grid(C)
 
#define place_solid_bold(Y, X)
 
#define place_solid_grid(C)
 
#define place_solid_perm_bold(Y, X)
 
#define place_solid_perm_grid(C)
 
#define place_solid_noperm_bold(Y, X)
 
#define place_solid_noperm_grid(C)
 

関数

bool new_player_spot (void)
 新規フロアに入りたてのプレイヤーをランダムな場所に配置する / Returns random co-ordinates for player/monster/object [詳細]
 
void place_random_stairs (int y, int x)
 所定の位置に上り階段か下り階段を配置する / Place an up/down staircase at given location [詳細]
 
void place_random_door (int y, int x, bool room)
 所定の位置にさまざまな状態や種類のドアを配置する / Place a random type of door at the given location [詳細]
 
void place_closed_door (int y, int x, int type)
 所定の位置に各種の閉じたドアを配置する / Place a random type of normal door at the given location. [詳細]
 
void place_floor (int x1, int x2, int y1, int y2, bool light)
 長方形の空洞を生成する / Make an empty square floor, for the middle of rooms [詳細]
 
void place_room (int x1, int x2, int y1, int y2, bool light)
 長方形の部屋を生成する / Make an empty square room, only floor and wall grids [詳細]
 
void vault_monsters (int y1, int x1, int num)
 特殊な部屋地形向けにモンスターを配置する / Hack – Place some sleeping monsters near the given location [詳細]
 
void vault_objects (int y, int x, int num)
 特殊な部屋向けに各種アイテムを配置する / Create up to "num" objects near the given coordinates [詳細]
 
void vault_trap_aux (int y, int x, int yd, int xd)
 特殊な部屋向けに各種アイテムを配置する(vault_trapのサブセット) / Place a trap with a given displacement of point [詳細]
 
void vault_traps (int y, int x, int yd, int xd, int num)
 特殊な部屋向けに各種アイテムを配置する(メインルーチン) / Place some traps with a given displacement of given location [詳細]
 
void correct_dir (int *rdir, int *cdir, int y1, int x1, int y2, int x2)
 build_tunnel用に通路を掘るための方向を位置関係通りに決める / Always picks a correct direction [詳細]
 
void rand_dir (int *rdir, int *cdir)
 build_tunnel用に通路を掘るための方向をランダムに決める / Pick a random direction [詳細]
 
bool get_is_floor (int x, int y)
 指定のマスが床系地形であるかを返す / Function that sees if a square is a floor. [詳細]
 
void set_floor (int x, int y)
 指定のマスを床地形に変える / Set a square to be floor. [詳細]
 
bool build_tunnel (int row1, int col1, int row2, int col2)
 部屋間のトンネルを生成する / Constructs a tunnel between two points [詳細]
 
bool build_tunnel2 (int x1, int y1, int x2, int y2, int type, int cutoff)
 特定の壁(永久壁など)を避けながら部屋間の通路を作成する / This routine maps a path from (x1, y1) to (x2, y2) avoiding SOLID walls. [詳細]
 

説明

ダンジョンの生成処理の基幹部分ヘッダーファイル

日付
2014/08/15

Purpose: header file for grid.c, used only in dungeon generation files (generate.c, rooms.c)

作者
Copyright (c) 1989 James E. Wilson, Robert A. Koeneke This software may be copied and distributed for educational, research, and not for profit purposes provided that this copyright and statement are included in all such copies.

マクロ定義

#define add_cave_info (   Y,
  X,
 
)    (cave[(Y)][(X)].info |= (I))
#define is_extra_bold (   Y,
 
)    (cave[Y][X].info & CAVE_EXTRA)
#define is_extra_grid (   C)    ((C)->info & CAVE_EXTRA)
#define is_floor_bold (   Y,
 
)    (cave[Y][X].info & CAVE_FLOOR)

指定座標がFLOOR属性を持ったマスかどうかを返す

引数
Y指定Y座標
X指定X座標
戻り値
FLOOR属性を持っているならばTRUE
#define is_floor_grid (   C)    ((C)->info & CAVE_FLOOR)
#define is_inner_bold (   Y,
 
)    (cave[Y][X].info & CAVE_INNER)
#define is_inner_grid (   C)    ((C)->info & CAVE_INNER)
#define is_outer_bold (   Y,
 
)    (cave[Y][X].info & CAVE_OUTER)
#define is_outer_grid (   C)    ((C)->info & CAVE_OUTER)
#define is_solid_bold (   Y,
 
)    (cave[Y][X].info & CAVE_SOLID)
#define is_solid_grid (   C)    ((C)->info & CAVE_SOLID)
#define place_down_stairs (   Y,
 
)    set_cave_feat(Y,X,feat_down_stair)

指定座標が下り階段かどうかを返す

引数
Y指定Y座標
X指定X座標
戻り値
下り階段ならばTRUE
#define place_extra_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_EXTRA); \
}
s16b fill_type[100]
Definition: variable.c:1269
#define randint0(M)
Definition: z-rand.h:39
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
u16b info
Definition: types.h:450
#define place_extra_grid (   C)
値:
{ \
(C)->feat = fill_type[randint0(100)]; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_EXTRA; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
s16b fill_type[100]
Definition: variable.c:1269
#define randint0(M)
Definition: z-rand.h:39
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
#define place_extra_noperm_bold (   Y,
 
)
値:
{ \
feature_type *_f_ptr; \
_f_ptr = &f_info[cave[Y][X].feat]; \
if (permanent_wall(_f_ptr)) cave[Y][X].feat = feat_state(cave[Y][X].feat, FF_UNPERM); \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_EXTRA); \
delete_monster(Y, X); \
}
s16b fill_type[100]
Definition: variable.c:1269
#define randint0(M)
Definition: z-rand.h:39
#define FF_UNPERM
Definition: defines.h:1101
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
s16b feat
Definition: types.h:452
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
int feat_state(int feat, int action)
Definition: cave.c:4698
feature_type * f_info
Definition: variable.c:847
struct feature_type feature_type
Definition: types.h:67
#define place_extra_perm_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_EXTRA); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
s16b feat_permanent
Definition: variable.c:1220
u16b info
Definition: types.h:450
#define place_extra_perm_grid (   C)
値:
{ \
(C)->feat = feat_permanent; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_EXTRA; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_permanent
Definition: variable.c:1220
#define place_floor_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_FLOOR); \
}
#define randint0(M)
Definition: z-rand.h:39
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
s16b floor_type[100]
Definition: variable.c:1269
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
u16b info
Definition: types.h:450
#define place_floor_grid (   C)
値:
{ \
(C)->feat = floor_type[randint0(100)]; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_FLOOR; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
#define randint0(M)
Definition: z-rand.h:39
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b floor_type[100]
Definition: variable.c:1269
#define place_inner_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_INNER); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
s16b feat_wall_inner
Definition: variable.c:1267
u16b info
Definition: types.h:450
#define place_inner_grid (   C)
値:
{ \
(C)->feat = feat_wall_inner; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_INNER; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_wall_inner
Definition: variable.c:1267
#define place_inner_perm_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_INNER); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
s16b feat_permanent
Definition: variable.c:1220
u16b info
Definition: types.h:450
#define place_inner_perm_grid (   C)
値:
{ \
(C)->feat = feat_permanent; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_INNER; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_permanent
Definition: variable.c:1220
#define place_outer_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_OUTER); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
u16b info
Definition: types.h:450
s16b feat_wall_outer
Definition: variable.c:1266
#define place_outer_grid (   C)
値:
{ \
(C)->feat = feat_wall_outer; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_OUTER; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_wall_outer
Definition: variable.c:1266
#define place_outer_noperm_bold (   Y,
 
)
値:
{ \
if (permanent_wall(_f_ptr)) set_cave_feat(Y, X, feat_state(feat_wall_outer, FF_UNPERM)); \
else set_cave_feat(Y,X,feat_wall_outer); \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,(CAVE_OUTER | CAVE_VAULT)); \
delete_monster(Y, X); \
}
#define FF_UNPERM
Definition: defines.h:1101
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
int feat_state(int feat, int action)
Definition: cave.c:4698
feature_type * f_info
Definition: variable.c:847
s16b feat_wall_outer
Definition: variable.c:1266
struct feature_type feature_type
Definition: types.h:67
#define place_outer_noperm_grid (   C)
値:
{ \
if (permanent_wall(_f_ptr)) (C)->feat = feat_state(feat_wall_outer, FF_UNPERM); \
else (C)->feat = feat_wall_outer; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= (CAVE_OUTER | CAVE_VAULT); \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
#define FF_UNPERM
Definition: defines.h:1101
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
int feat_state(int feat, int action)
Definition: cave.c:4698
feature_type * f_info
Definition: variable.c:847
s16b feat_wall_outer
Definition: variable.c:1266
struct feature_type feature_type
Definition: types.h:67
#define place_outer_perm_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_OUTER); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
s16b feat_permanent
Definition: variable.c:1220
u16b info
Definition: types.h:450
#define place_outer_perm_grid (   C)
値:
{ \
(C)->feat = feat_permanent; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_OUTER; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_permanent
Definition: variable.c:1220
#define place_rubble (   Y,
 
)    set_cave_feat(Y,X,feat_rubble)

指定座標が瓦礫かどうかを返す

引数
Y指定Y座標
X指定X座標
戻り値
瓦礫ならばTRUE
#define place_solid_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_SOLID); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
u16b info
Definition: types.h:450
s16b feat_wall_solid
Definition: variable.c:1268
#define place_solid_grid (   C)
値:
{ \
(C)->feat = feat_wall_solid; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_SOLID; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_wall_solid
Definition: variable.c:1268
#define place_solid_noperm_bold (   Y,
 
)
値:
{ \
if ((cave[Y][X].info & CAVE_VAULT) && permanent_wall(_f_ptr)) \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_SOLID); \
}
#define FF_UNPERM
Definition: defines.h:1101
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
int feat_state(int feat, int action)
Definition: cave.c:4698
feature_type * f_info
Definition: variable.c:847
u16b info
Definition: types.h:450
struct feature_type feature_type
Definition: types.h:67
s16b feat_wall_solid
Definition: variable.c:1268
#define place_solid_noperm_grid (   C)
値:
{ \
if (((C)->info & CAVE_VAULT) && permanent_wall(_f_ptr)) \
else (C)->feat = feat_wall_solid; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_SOLID; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
#define FF_UNPERM
Definition: defines.h:1101
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
int feat_state(int feat, int action)
Definition: cave.c:4698
feature_type * f_info
Definition: variable.c:847
struct feature_type feature_type
Definition: types.h:67
s16b feat_wall_solid
Definition: variable.c:1268
#define place_solid_perm_bold (   Y,
 
)
値:
{ \
cave[Y][X].info &= ~(CAVE_MASK); \
add_cave_info(Y,X,CAVE_SOLID); \
}
void delete_monster(int y, int x)
指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location
Definition: monster2.c:312
#define add_cave_info(Y, X, I)
Definition: grid.h:18
cave_type * cave[MAX_HGT]
Definition: variable.c:696
#define set_cave_feat(Y, X, F)
Definition: grid.h:17
s16b feat_permanent
Definition: variable.c:1220
u16b info
Definition: types.h:450
#define place_solid_perm_grid (   C)
値:
{ \
(C)->feat = feat_permanent; \
(C)->info &= ~(CAVE_MASK); \
(C)->info |= CAVE_SOLID; \
if ((C)->m_idx) delete_monster_idx((C)->m_idx); \
}
void delete_monster_idx(int i)
モンスター配列からモンスターを消去する / Delete a monster by index.
Definition: monster2.c:222
s16b feat_permanent
Definition: variable.c:1220
#define place_up_stairs (   Y,
 
)    set_cave_feat(Y,X,feat_up_stair)

指定座標が上り階段かどうかを返す

引数
Y指定Y座標
X指定X座標
戻り値
上り階段ならばTRUE
#define set_cave_feat (   Y,
  X,
 
)    (cave[(Y)][(X)].feat = (F))

関数

bool build_tunnel ( int  row1,
int  col1,
int  row2,
int  col2 
)

部屋間のトンネルを生成する / Constructs a tunnel between two points

引数
row1始点Y座標
col1始点X座標
row2終点Y座標
col2終点X座標
戻り値
生成に成功したらTRUEを返す

This function must be called BEFORE any streamers are created,
since we use the special "granite wall" sub-types to keep track
of legal places for corridors to pierce rooms.

We use "door_flag" to prevent excessive construction of doors
along overlapping corridors.

We queue the tunnel grids to prevent door creation along a corridor
which intersects itself.

We queue the wall piercing grids to prevent a corridor from leaving
a room and then coming back in through the same entrance.

We "pierce" grids which are "outer" walls of rooms, and when we
do so, we change all adjacent "outer" walls of rooms into "solid"
walls so that no two corridors may use adjacent grids for exits.

The "solid" wall check prevents corridors from "chopping" the
corners of rooms off, as well as "silly" door placement, and
"excessively wide" room entrances.

Kind of walls:
extra – walls
inner – inner room walls
outer – outer room walls
solid – solid room walls

関数の呼び出しグラフ:

呼出しグラフ:

bool build_tunnel2 ( int  x1,
int  y1,
int  x2,
int  y2,
int  type,
int  cutoff 
)

特定の壁(永久壁など)を避けながら部屋間の通路を作成する / This routine maps a path from (x1, y1) to (x2, y2) avoiding SOLID walls.

戻り値
なし
TODO:
詳細用調査

Permanent rock is ignored in this path finding- sometimes there is no
path around anyway -so there will be a crash if we try to find one.
This routine is much like the river creation routine in Zangband.
It works by dividing a line segment into two. The segments are divided
until they are less than "cutoff" - when the corresponding routine from
"short_seg_hack" is called.
Note it is VERY important that the "stop if hit another passage" logic
stays as is. Without this the dungeon turns into Swiss Cheese...

関数の呼び出しグラフ:

呼出しグラフ:

void correct_dir ( int *  rdir,
int *  cdir,
int  y1,
int  x1,
int  y2,
int  x2 
)

build_tunnel用に通路を掘るための方向を位置関係通りに決める / Always picks a correct direction

引数
rdirY方向に取るべきベクトル値を返す参照ポインタ
cdirX方向に取るべきベクトル値を返す参照ポインタ
y1始点Y座標
x1始点X座標
y2終点Y座標
x2終点X座標
戻り値
なし

呼出しグラフ:

bool get_is_floor ( int  x,
int  y 
)

指定のマスが床系地形であるかを返す / Function that sees if a square is a floor.

(Includes range checking.)

引数
xチェックするマスのX座標
yチェックするマスのY座標
戻り値
床系地形ならばTRUE

呼出しグラフ:

bool new_player_spot ( void  )

新規フロアに入りたてのプレイヤーをランダムな場所に配置する / Returns random co-ordinates for player/monster/object

戻り値
配置に成功したらTRUEを返す

関数の呼び出しグラフ:

呼出しグラフ:

void place_closed_door ( int  y,
int  x,
int  type 
)

所定の位置に各種の閉じたドアを配置する / Place a random type of normal door at the given location.

引数
yドアの配置を試みたいマスのY座標
xドアの配置を試みたいマスのX座標
typeドアの地形ID
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

void place_floor ( int  x1,
int  x2,
int  y1,
int  y2,
bool  light 
)

長方形の空洞を生成する / Make an empty square floor, for the middle of rooms

引数
x1長方形の左端X座標(-1)
x2長方形の右端X座標(+1)
y1長方形の上端Y座標(-1)
y2長方形の下端Y座標(+1)
light照明の有無
戻り値
なし

呼出しグラフ:

void place_random_door ( int  y,
int  x,
bool  room 
)

所定の位置にさまざまな状態や種類のドアを配置する / Place a random type of door at the given location

引数
yドアの配置を試みたいマスのY座標
xドアの配置を試みたいマスのX座標
room部屋に接している場合向けのドア生成か否か
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

void place_random_stairs ( int  y,
int  x 
)

所定の位置に上り階段か下り階段を配置する / Place an up/down staircase at given location

引数
y配置を試みたいマスのY座標
x配置を試みたいマスのX座標
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

void place_room ( int  x1,
int  x2,
int  y1,
int  y2,
bool  light 
)

長方形の部屋を生成する / Make an empty square room, only floor and wall grids

引数
x1長方形の左端X座標(-1)
x2長方形の右端X座標(+1)
y1長方形の上端Y座標(-1)
y2長方形の下端Y座標(+1)
light照明の有無
戻り値
なし

関数の呼び出しグラフ:

void rand_dir ( int *  rdir,
int *  cdir 
)

build_tunnel用に通路を掘るための方向をランダムに決める / Pick a random direction

引数
rdirY方向に取るべきベクトル値を返す参照ポインタ
cdirX方向に取るべきベクトル値を返す参照ポインタ
戻り値
なし

呼出しグラフ:

void set_floor ( int  x,
int  y 
)

指定のマスを床地形に変える / Set a square to be floor.

(Includes range checking.)

引数
x地形を変えたいマスのX座標
y地形を変えたいマスのY座標
戻り値
なし

呼出しグラフ:

void vault_monsters ( int  y1,
int  x1,
int  num 
)

特殊な部屋地形向けにモンスターを配置する / Hack – Place some sleeping monsters near the given location

引数
y1モンスターを配置したいマスの中心Y座標
x1モンスターを配置したいマスの中心X座標
num配置したいモンスターの数
戻り値
なし

Only really called by some of the "vault" routines.

関数の呼び出しグラフ:

呼出しグラフ:

void vault_objects ( int  y,
int  x,
int  num 
)

特殊な部屋向けに各種アイテムを配置する / Create up to "num" objects near the given coordinates

引数
y配置したい中心マスのY座標
x配置したい中心マスのX座標
num配置したい数
戻り値
なし

Only really called by some of the "vault" routines.

関数の呼び出しグラフ:

呼出しグラフ:

void vault_trap_aux ( int  y,
int  x,
int  yd,
int  xd 
)

特殊な部屋向けに各種アイテムを配置する(vault_trapのサブセット) / Place a trap with a given displacement of point

引数
yトラップを配置したいマスの中心Y座標
xトラップを配置したいマスの中心X座標
ydY方向の配置分散マス数
xdX方向の配置分散マス数
戻り値
なし

Only really called by some of the "vault" routines.

関数の呼び出しグラフ:

呼出しグラフ:

void vault_traps ( int  y,
int  x,
int  yd,
int  xd,
int  num 
)

特殊な部屋向けに各種アイテムを配置する(メインルーチン) / Place some traps with a given displacement of given location

引数
yトラップを配置したいマスの中心Y座標
xトラップを配置したいマスの中心X座標
ydY方向の配置分散マス数
xdX方向の配置分散マス数
num配置したいトラップの数
戻り値
なし

Only really called by some of the "vault" routines.

関数の呼び出しグラフ:

呼出しグラフ: