ウイルス作成プログラムについての説明 dm_virus_init.c // プログラム本体 dm_virus_init.h // ヘッダーファイル *ソース説明 ------------------------------------------------------------------------------------------------------------------------------------ void clear_map_all( game_map *map ) 行番号 35 〜 48行 マップ情報クリア関数 この関数は、瓶の中の情報(以降 マップ)をすべてクリアする関数。 マップの構造体の説明は、構造体説明のテキストを見て下さい。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ void clear_map( game_map *map,s8 x_pos,s8 y_pos ) 行番号 49 〜 62行 マップ情報一部クリア関数。 この関数は、指定された座標の情報をクリアする。(x_pos は 0 〜 7,y_pos は1 〜 16) ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ s8 get_map_info( game_map *map,s8 x_pos,s8 y_pos ) 行番号 64 〜 79行 マップ情報取得関数 指定座標に何か物があったら、cap_flg_on (1) を、立っていなかったら cap_flg_off (0) をかええす。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ u8 get_virus_count( game_map *map ) 行番号 81 〜 104行 ウイルス数取得関数 マップ内のウイルス数を返す。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ u8 get_virus_color_count( game_map *map ,u8 *red,u8 *yellow,u8 *blue ) 行番号 106 〜 140行 色別ウイルス情報取得関数 マップ内のウイルス数を返す。引数のそれぞれに、各色別のウイルス数を入れる。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ void set_map( game_map *map,s8 x_pos,s8 y_pos,s8 item,s8 pal ) 行番号 142 〜 163行 マップ情報設定関数 指定座標にアイテムを設定します。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ void set_virus( game_map *map,s8 x_pos,s8 y_pos,u8 virus,u8 virus_anime_no ) 行番号 165 〜 186 ウイルスマップ情報設定関数 指定座標にウイルスを設定します。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ u16 y_point_set(void) 行番号 188 〜 210行 ウイルスマップ情報作成用補助関数 ウイルス配置情報を作成するとき、Y座標(1〜16)を返す関数。現在未使用 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ u8 dm_virus_check( virus_map *v_map,u16 x_pos,u16 y_pos ) 行番号 211 〜 225行 ウイルスマップ情報作成用補助関数(ウイルス存在確認) この関数は、配置用ウイルスデータを調べ、その座標にすでにウイルスがあった場合、TRUEを返し、何も無い場合、FALSEを返す。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ u8 dm_check_color( virus_map *v_map,u16 x_pos,u16 y_pos,u8 check_color ) 行番号 227 〜 299行 ウイルスマップ情報作成用補助関数(上下左右、同じ色3つ以上並び判定) ウイルスを設定しようとしている座標で、上下左右3つ並びのチェックをしている。 ウイルスを設定できる場合は TRUE、設定できない場合は FALSEを返す。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ u8 dm_check_color_2( virus_map *v_map,u16 x_pos,u16 y_pos,u8 check_color ) 行番号 301 〜 341行 ウイルスマップ情報作成用補助関数(上下左右、同じ色3つ以飛び色判定) ウイルスを設定しようとしている座標で、上下左右2つ隣に同じ色が有るかチェックをしている。(○○× はいいが ○×○ は駄目) ウイルスを設定できる場合は TRUE、設定できない場合は FALSEを返す。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ void dm_virus_map_copy( virus_map *v_map_a,virus_map *v_map_b,u8 *order_a,u8*order_b ) 行番号 342 〜 365行 ウイルスマップ情報複製(コピー)関数 レベルセレクト以外のゲームモードの時、ウイルスレベルが同じだった場合、 ウイルスは位置情報を同じにするため、この関数でコピーする。 ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------ void dm_virus_init(game_state *state,virus_map *v_map,u8 *order) 行番号 367 〜 501行 ウイルスマップ情報作成関数 365 〜 394行 ウイルスマップ情報と表示順情報の初期化。 396 〜 399行 ウイルスレベルを計算用に設定する。LEVLIMIT(内部レベル上限 23(ウイルス数 96)) より上だったら、23にする。 403行 ウイルス数計算 LEVEL 23 の場合 (23 + 1) * 4 = 96; 407行 レベルによるウイルスを置いては行けない範囲の割り出し。 409 〜 416行 各色別ウイルス配置数の計算。 419 〜 499行 ウイルスマップ作成部分。 421行 内部カウンタのクリア 423 〜 427行 配置する色を決めている。ランダム(赤・黄・青)に取得した色の数が virus_color[j] == 0 (その色の配置が終了している)の 場合、配置が終了していない色を探す。 429 〜 449行 ランダム配置で2回置けなかった場合、総当たり配置(端から置けるか調べる)を行う。 430 〜 433行 総当たり配置でも置けない場合が3回以上の場合、無限ループを回避するため、最初から配置をやり直す。 436 〜 449行 総当たりで置ける場所を調べている。( X座標 0 スタート 7 終了、Y座標 16 スタート limit_line(置けない範囲) 終了 ) 置けた場合はループ終了。 451 〜 465行 ランダム配置を行っている。 453 〜 459行 X,Y座標を出し、その座標にウイルスが設定されているか調べている。 461 〜 464行 その色がその座標に置くことが出来るか調べている。 471 〜 476行 データの設定。 ------------------------------------------------------------------------------------------------------------------------------------