!!! バトルモジュール役割説明 *カード選択モジュールが保持しているplayerとcpuが使用するカード番号を読み込む *バトル画像の初期化表示 **背景画像の表示 **HPゲージの表示(ゲージは満タン) **バトル開始ボタンの表示 **カード番号に応じたキャラクターの画像を表示 **じゃんけんの手を選択するじゃんけんボタンを表示(グー、チョキ、パーの3種類) ***グー = 0、パー = 1、チョキ = 2 として扱う *バトル開始ボタンをクリックするとバトル開始 **バトル開始を示すバトルスタートフラグを1(バトル開始状態)にする **5秒のカウント開始…(1) *5秒の間で任意のじゃんけんボタンをクリック可能 **じゃんけんボタンをクリックした場合にはハンドセレクトフラグを1(選択状態)にするクリックしたボタンは色が(赤に)変わる **一度選択した手は変更する事が出来ない *5秒カウントの終了 **この時点でハンドセレクトフラグが0(未選択状態)であればランダムにプレイヤーの手を選択する *じゃんけんの開始 **CPUの手をランダムに選択 **プレイヤーが選択した手が必殺技の手の場合はsp1_flagに1(プレイヤーの必殺技選択状態)を格納 **CPUが選択した手が必殺技の手の場合はsp2_flagに1(CPUの必殺技選択状態)を格納 *じゃんけんの勝敗の判定を行う **勝敗がついたとき…負けたカードのHPから勝ったカードの手に対応した攻撃力を引く ***sp1(or 2)_flagが1の時に勝った場合は必殺技画面を表示する **引き分け時…両方のカードのHPを1減らす *バトルの終了判定を行う **双方のカードのHPから終了判定を行う !バトル継続の場合 *じゃんけんフラグを1(じゃんけん終了状態)にして5秒カウントをリセットさせる *じゃんけんボタンの色を初期化(黒色に)する *3秒後に再びじゃんけんフラグを0(じゃんけん開始状態)にしてバトル再開 *(1)に戻る !バトル終了の場合 *バトルの結果に応じたバトル結果ウィンドウを表示する **プレイヤーがバトルに勝った場合はファイトマネーを入手 ***続けてバトルを行うかタイトルに戻るかを選択 ****続けてバトルを行う場合にはbt_flagに1を格納 ****タイトルに戻る場合にはbt_flagに0を格納 **引き分け、敗北時にはタイトル画面へ戻る //!!!カードセレクトウィンドウマクロ・変数 //!!GtkWidget *card_select_window; //*カードセレクト画面ウィジェト //!!gint check_window_flag = 0; //*カード確認画面を表示しているかのフラグ(0:未表示 1:表示中) //!!!カードセレクトウィンドウ関数 //!!void card_select_start (gint, char **); //*カードセレクト画面(カードボタンが並べられている画面)を表示する関数 //引き数 argc, *argv[]  //返り値 なし //!!void //image_button_new(GtkWidget *, gpointer); //*カードボタンを作成する関数 //*カード番号に応じて画像をボタンに貼り付ける //引き数 *button, //card_no_pointer //返り値 なし //!!void card_button_clicked(GtkWidget *, gpointer); //*カードボタンがクリックされた時の関数 //*ここでカード番号を格納して、選択したカードに応じたカード確認画面を表示する //引き数 *card_button, card_no_pointer //返り値 なし //!!void back_call(GtkWidget *, GtkWidget *); //*バックボタン(カードボタンの下に表示される)のコールバック関数 //*カードセレクト画面を消去してタイトルに戻る //引き数 *back_button, card_select_window //返り値 なし //!!void card_check_start(gpointer); //*カード確認画面(クリックされたカードの説明を表示する画面)を表示する関数 //*カード番号に応じてカード確認画面を表示する //引き数 card_no_pointer //返り値 なし //!!void check_window_close(GtkWidget *, gpointer); //*カード確認画面を「✕」をクリックして閉じた時の関数 //*カード確認画面の消去とフラグの操作を行う //引き数 *check_window, user_data //返り値 なし //!!void next_click(GtkWidget *, gpointer); //*進むボタン(カード確認画面の下に表示される)をクリックした時の関数 //*カード確認画面とカードセレクト画面を消去する //引き数 *button, check_window //返り値 なし //!!void back_click(GtkWidget *, gpointer); //*戻るボタン(カード確認画面の下に表示される)をクリックした時の関数 //*カード確認画面の消去とフラグの操作を行う //引き数 *button, check_window //返り値 なし !!!バトルウィンドウにおけるマクロ !!#define MAX_WIDGET 9 *並べるウィジェットの総数 !!#define MAX_HBOX 3 *横方向に並べるウィジェットの総数 !!#define MAX_IMAGE 6 *ドローイングエリアとして扱うウィジェットの総数 !!#define gage_width_size 340 !!#define gage_height_size 60 *ゲージのイメージ画像のサイズ !!!バトルウィンドウにおける変数 !!gint battle_flag; * バトルのフラグ(0:バトル終了 1:バトル開始) !!gint bt_flag; *gameモジュール内でのバトルのフラグ(0:全てのバトルの終了 1:バトルの継続) !!gint card1_no, card2_no; *各プレイヤーのカードの番号 !!GtkWidget *battle_window; *バトル画面ウィジェット !!GtkWidget *image_canvas[MAX_WIDGET]; *バトルウィンドウに表示するウィジェット !!!バトルウィンドウ関数 !!GtkWidget *battle_window_new(void); *バトル画面を作成する関数 引き数 なし 返り値 *window(バトル画面ウィジェット) !!void set_background(GtkWidget *); *バトル画面に背景画像をセットする関数 引き数 *window(バトル画面ウィジェット) 返り値 なし !!void battle_start(void); *バトル画面を呼び出す関数 *バトル画面の初期化表示を行う 引き数 なし 返り値 なし !!void gage_paint(gint , gint); *体力ゲージを更新する関数 *プレイヤーのHPとプレイヤー番号によって表示を行う 引き数 p_hp, p_no 返り値 なし !!void paint_image(GtkWidget *, GdkEventExpose *, gpointer); *ドローイングエリアに画像を描画する関数 *user_dataには画像へのリンク文字列が格納されている 引き数 *widget, *event, user_data 返り値 なし !!GtkWidget *sub_window_new(void); *サブウィンドウ作成関数 *必殺技画面とバトル結果画面に用いる 引き数 なし 返り値 *sub_window !!void sp_window(gint); *必殺技画面表示関数 *カード番号に応じた必殺技画面を表示 引き数 card_no 返り値 なし !!gboolean sp_window_close(gpointer); *必殺技画面消去関数 *必殺技画面表示した3秒後に呼び出される 引き数 sp_window 返り値 FALSE(ループの防止) !!gboolean result_window(gpointer); *バトル結果画面表示関数 *引き数に応じて表示を変える 引き数 result_pointer 返り値 FALSE(ループの防止) !!void next_battle_click(GtkWidget *, gpointer); *ネクストバトルボタンをクリックした時の関数 *バトル画面とバトル結果画面を消去する *バトルの継続を示す 引き数 button, result_window 返り値 なし !!gchar *image_link(gint); *カードの画像へのリンク文字列を返す関数 *カード番号を受け取ってそのキャラクターの画像へのリンクを返す 引き数 card_no 返り値 *link !!gchar *hand_link(gint, gint); *じゃんけんアイコンへのリンク文字列を返す関数 *カード番号とじゃんけんの手を受け取ってそれに対応したじゃんけんアイコン画像へのリンクを返す 引き数 card_no, hand_sw 返り値 *link !!void title_click (GtkWidget *, gpointer); *タイトルボタン(バトル終了を示す)をクリックした時の関数 *バトル結果画面とバトル画面を消去する 引き数 title_button, result_window 返り値 なし !!!ボタンアイコンにおける変数 !!gint hand_select_flag; *プレイヤーが手を選択したかのフラグ !!gint player_hand; *プレイヤーが選択したじゃんけんの手 !!int co_id; *タイムアウト解除用のID !!static gulong id[3]; *コールバック関数解除用のID !!static int ic_paint_flag; *じゃんけんアイコンの初期化フラグ(0:初期化不必要 1:初期化必要) !!!ボタンアイコン関数 !!GtkWidget *fight_button_new(gchar *); *ファイトボタンにイメージ画像をパックする関数 *引き数に応じたイメージをパックする 引き数 *filename 返り値 new_button !!GtkWidget *janken_button_new(GtkWidget *, gchar *); *じゃんけんボタンにイメージ画像をパックする関数 *引き数に応じたイメージをパックする 引き数 icon_image, filename 返り値 new_button !!void fight_click(GtkWidget *, gpointer); *バトル開始ボタン押された時の関数 *これをクリックすることでバトルが開始する *user_dataにはカウント画面ウィジェットが入っている 引き数 fight_button_new, user_data 返り値 なし !!void gu_click (GtkWidget *, gpointer); *グーが押された時の関数 *アイコン画像に色を付ける *ここで3秒後アイコンの色を元に戻す関数を呼び出す 引き数 gu_button, gu_image_pt 返り値 なし !!void choki_click (GtkWidget *, gpointer); *チョキが押された時の関数 *アイコン画像に色を付ける *ここで3秒後アイコンの色を元に戻す関数を呼び出す 引き数 choki_button, choki_image_pt 返り値 なし !!void paa_click (GtkWidget *, gpointer); *パーが押された時の関数 *アイコン画像に色を付ける *ここで3秒後アイコンの色を元に戻す関数を呼び出す 引き数 paa_button, pa_image_pt 返り値 なし !!void icon_paint(GtkWidget *, int); *じゃんけんボタンが選択された時のイメージを表示する関数(赤色にする) *引き数によって色を付けるアイコンを判別する 引き数 icon_image, hand 返り値 なし !!gboolean gu_init(gpointer); *グーが押された時のアイコン画像リセット関数(黒色に戻す) *アイコン画像に色がついた3秒後に呼び出される 引き数 gu_image_pt 返り値 FALSE(ループ防止) !!void choki_init(gpointer); *チョキが押された時のアイコン画像リセット関数(黒色に戻す) *アイコン画像に色がついた3秒後に呼び出される 引き数 choki_image_pt 返り値 FALSE(ループ防止) !!void pa_init(gpointer); *パーが押された時のアイコン画像リセット関数(黒色に戻す) *アイコン画像に色がついた3秒後に呼び出される 引き数 pa_image_pt 返り値 FALSE(ループ防止) !!!カウントダウンにおけるマクロ !!#define count_image_size 225 *カウント画像のサイズ !!!カウントダウンにおける変数 !!static int count = 5 *5秒カウントのための数値 !!!カウントダウン関数 !!gboolean count_down (gpointer); *カウントダウンのイメージを表示する関数 *user_dataにはカウントウィジェットが入っている 引き数 user_data 返り値 なし !!!じゃんけんにおけるマクロ !!#define WIN 1 !!#define DRAW 0 !!#define LOSE -1 *勝ち負けマクロ !!#define GU 0 !!#define PA 1 !!#define CHOKI 2 *じゃんけんの手マクロ !!!じゃんけんにおける変数 !!typedef struct { int gu,choki,pa; int sp_hand; int hp; }card_data; *カードのデータ型を作成 *これによって各カードの能力値を定義する !!!じゃんけん関数 !!gint per_ten(gint, gint); *十分率の整数としてHPの値を変換する関数 *最大HPと現在のHPで体力比を計算してそれに応じた定数を返す 引き数 max_card_hp, now_card_hp 返り値 定数 !!void janken(gint); *じゃんけんを行う関数 *引き数とこの関数内でランダムに生成する手とでじゃんけんをして結果に応じて処理をした後にゲージを更新する 引き数 p1_hand 返り値 なし !!void hp_init(gint, gint); *体力を初期化する関数 *引き数を用いて次のバトルのためのHPの初期化を行う 引き数 p1_card_no, p2_card_no 返り値 なし !!!フラグ操作における変数 !!gint janken_flag; *じゃんけんの開始と終了フラグ(0:じゃんけん未実施, 1:じゃんけん実施) !!gint hand_select_flag; *じゃんけんの手の選択フラグ(0:じゃんけん未実施, 1:じゃんけん実施) !!!フラグ操作関数 !!gboolean battle_restart(void); *バトル再開時のフラフ処理を行う関数 引き数 なし 返り値 FALSE(ループの解除のため) バトル再開時のフラグ処理を行う関数 !!void janken_end(void); *じゃんけん終了時のフラグ処理を行う関数 引き数 なし 返り値 なし