表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
41/61

ionicを試す 21日目 ゲームブック処理の流れ

まずコンストラクタでは、Book.jsonを読み込み、そのデータからゲームブックの表紙を表示します。


表紙からは、ゲームブックを始めるボタンがあり、押下して第一回目はPage.jsonにエラーが無いかを確認し、エラーがあれば表示してそれ以上処理しません。

(作成者レベルでのみ起きる話ですね)


エラーが無ければ、1ページ目を読み込み表示します。


各ページには以下のページタイプがあります。


・'Select':選択肢を選んで次のページを決める

・'Judgement':サイコロを振り、基準値との大小比較で次のページが決まる

・'Multiple':サイコロの出目により、それぞれ次のページが決まる

・'Attack':”敵”と戦い、その勝敗により次のページが決まる

・'Flagcheck':所持しているフラグの有無により次のページが決まる

・'Statuscheck':HP、AP、GPの値と基準値を比較して次のページが決まる

・'Ending':エンディング。1ページ目に戻るのみ可能。


またどのページで有っても、任意のフラグ一つをセットでき、またステータスの変更が行えます。

(表示された時点ではフラグやステータスのセット・変更はすでに行われています)


'Flagcheck'と'Statuscheck'はチェックの結果、条件に合う次のページに移行するので、表示されることはありません。


ページの移動は以下のような処理で行っています。


・ThisPage と言う変数に移動するページをセット(例えば"21")

・fnSetPropValFromPage();と言う関数でThisPageをキーにしてページデータを内部変数にセット

 (Angularの機能でこれだけでHTMLの大半は埋まる)

・fnDispThisPage();と言う関数でページタイプ別の処理を行う。


ページタイプ別の処理をもう少し見ていきます。


'Select':選択肢タイプ


このタイプは、ページデータの読み込みだけでほぼ完了です。

文章と1つあるいは複数の選択肢、そして次のページへ飛ぶボタンのみがあります。


ページを開いた段階では、複数の選択肢のいずれも選択されていません。(一つしかない場合は、それが選択済みになっています)


選択肢の選択されていない状態で、ページ移動のボタンを押下するとエラーメッセージが表示されます。


選択されているならば、それに対応するページに移動します。


'Judgement':サイコロによる判定タイプ


このタイプもページデータの読み込みだけでほぼ完了です。


文章の下に2つのサイコロが表示され、その下にサイコロを振るように指示するボタンがあります。


このページには基準値が設定され、その値よりもサイコロの合計が大きければ成功、さもなければ失敗扱いです。


サイコロを振ると、成功・失敗それぞれ用の結果画面が表示され、そこの次へボタンを押下して対応ページに移動します。


'Multiple':サイコロによる判定タイプ2


このタイプもページデータの読み込みだけでほぼ完了です。


文章の下に2つのサイコロが表示され、その下にサイコロを振るように指示するボタンがあります。


このページには基準値はありません。


2~12の出目すべてに対応するページが設定されています(同じページがあっても構わない)


成功・失敗それぞれ用の結果画面も表示されませんので、たとえ2つの行き先しか無くても'Multiple'を使うべき場面はあるかもしれません。


サイコロを振ると出目が表示され、サイコロを振れボタンが次のページへボタンに変更されます。

(内部的には2つのボタンが用意され、片方を非表示にしています)


次へボタンの押下で対応ページに移動します。


'Attack':”敵”と戦い、その勝敗により次ページが決まる


このタイプも・・・どのページもデータの読み込みだけで表示はほぼ完了ですが、このタイプは自身と戦う相手のHP(MAXと現在のHP)が横棒グラフとして表示されます。


サイコロが2つ表示なのは2つの判定タイプと共通ですが、押下するボタンは3つ用意されています。


ボタンの表示は変数AttackPhaseで制御しています。(ページ表示時に0をセット)


・AttackPhase = 0 :先攻・後攻を決めるボタン AttackPhase = 1

 基準値(Page.jsonのCheckCube)と比較して大きければ先攻

・AttackPhase = 1 :戦闘中、攻撃された相手へのダメージを決めるボタン

 片方のHPが0以下になれば、AttackPhase=2

・AttackPhase = 2 :戦闘結果に従い、次のページへ移動するボタン


勝敗がついた段階で表示される次へ移動ボタン押下で対応ページに移動します。


'Flagcheck':フラグによるページ遷移制御


このタイプはページ表示を行いません。


最大10のフラグを順にチェックして、オンのフラグがあれば対応するページに移動します。


いずれにも該当しない場合は、NextPage11に設定されているページに移動します。


'Statuscheck':ステータスによるページ遷移制御


このタイプもページ表示を行いません。


タイプは


・StatusCheckHP

・StatusCheckAP

・StatusCheckGP


の3種類あり、それぞれの現在の値と基準値(Page.jsonのCheckCube)を比較して


・小さい時

・等しい時

・大きい時


により移動するページが変わります。


'Ending':エンディング。1ページ目に戻るのみ可能。


表示のみのページです。


ボタンはありますが1ページに移動する事しか出来ません。


以上、各ページタイプによる処理を簡単に説明しました。


書きながら、ソースコードを再確認していたところ、幾つか手直しが必要な部分が出てきました。

(ステータス変更のパターンが足りない。最大値の変更なども必要か)


次回は多少遅れるかもしれませんがAndroidStudioのインストールおよび関連設定について書きたいと思います。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ