ソフトウェア設計及び演習用の班Wiki

戦闘シーン::gr05

画面表示

  • 戦闘はドラクエ風
    • 上に各キャラクタのステータス
    • 右下にメッセージウィンド
    • 左下に戦闘のコマンド

戦闘中

  • 攻撃を与えた時→敵へ切り傷のようなエフェクト
  • 攻撃を受けた時→画面をうっすら赤くするor画面を揺らす

戦闘終了

勝負の結果に応じてメッセージが変化

勝利画面

メッセージに

  • ○○(敵の名前)を倒した
  • □□(アイテム)を入手した
    を表示

敗北画面

メッセージに

  • 全滅しました を表示
    →タイトル画面に戻る


各関数などの説明

エンカウントしたモンスターとの戦闘とその勝利判定、戦闘終了後のリザルト画面までのモジュール

void bat_sce(char* image)

  • 戦闘モジュールをまとめる関数。この中でshowwin()やbat_flowを呼び出す

int showwin(GtkWidget* window,status status,cmd cmd,GtkWidget* mes_label,char* image)

  • ウィンドウの表示、ステータス・コマンド・モンスターの画像表示の関数
    ---------関数-----------
    void frame(int) フレームの作成から表示に関しての関数。フレームマクロでフラグを立てて書く動作を行う

    void button(int) frame()のボタンver
    -------------------------

    ---------変数-----------
    GtkWidget* back_image :背景画像
    GtkWidget* vbox :垂直パッキングボックス
    配置は上からステータス、画像、コマンド&メッセージ
    GtkWidget* comes :水平パッキングボックス
    配置は左からコマンド、メッセージ
    GtkWidget* command :ボックス(コマンド(縦・ボタンで実装))


    ※以下はshowwin.hより。詳細はそちらへ

    struct com_mes com_mes:コマンドとメッセージのコンテナ
    struct cmd cmd:戦闘コマンド
    -----------------------

void frame(int jud,GtkWidget* stat,GtkWidget* comes/*ここは未実装,char* name1,char* name2,char* name3*/)

  • フレーム作成用プログラム
    ---引数---
    int jud:フレーム作成の段階を判定するフラグ
    GtkWidget* stat:ステータス表示用フレーム
    GtkWidget* comes:コマンドとメッセージのパッキングボックスを配置するフレーム

    以下は未実装
    char* name1(~3):キャラクタの名前。ステータスフレームのラベルで表示
    ---------

void makebut(int jud,GtkWidget *command,char* mesbut1,char* mesbut2,char* mesbut3)

  • ボタン生成の関数
    ボタンの生成の段階に応じてフラグを立てる
    ----引数----
    int jud:ボタンの生成がどの段階かを判定するフラグ
    GtkWidget* command:showwin.cでのパッキングボックスcommnad
    char* mesbut1(2,3):ボタンのラベルに表示する文字列
    -----------

int bat_flow()

  • 戦闘本体
     モンスターとプレイヤーの行動順の決定やそれぞれの攻撃のダメージ計算など戦闘の全般を記述する
    {
    コマンドの選択
    部位の選択
    行動順の決定
    攻撃のヒット確認
    ダメージ計算
    勝敗判定
    }

    攻撃ヒット(被弾)時のエフェクトは実装するか未定

    --------変数-----------
    未定

    --------関数-----------
    int hit_judge(float hit,float esc):当たり判定を行う。hit:命中率,esc:回避率
    int damege(仮)(未定):ダメージ計算を行う
     void jadge(未定):当たり判定
    -----------------------

    --------マクロ---------
    WIN 100:勝利判定
    LOOSE 200:敗北判定
    -----------------------

int escape(void) 作成:村上

  • 戦闘のコマンド「にげる」の判定関数
    成功した場合フィールドへ戻る。失敗した場合敵の攻撃から再開
    判定は乱数生成関数rand()を用いsrand()の引数にtime()を割り当て現在時刻によって乱数シードを生成するようにした<>
    --------マクロ---------
    SUCCESS:「にげる」成功
    FAILURE:「にげる」失敗
    -----------------------

double damagecal(int side, p_states p_states, e_states e_states) 作成:村上

  • 戦闘のダメージ計算を行う関数
    プレイヤーの攻撃のダメージはそのままモンスターへと与えられる
    モンスターの攻撃のダメージは攻撃力×防御力(1以下の浮動小数点数)

int turnjudge( p_states p_states, e_states e_states) 作成:村上

  • 戦闘の行動順を決める関数
    モンスターのすばやさとプレイヤーの素早さを比較して速い方からの行動となる

    実際には行動する方だけを決め、返り値としてプレイヤーかモンスタののフラグを返し元の関数で攻撃動作を行う

gr5トップへ


最終更新日:2014/01/09 18:45:21