対象処理モードを作る(移動処理のみ) つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
つまり、まとめると
対象処理モードは
・現在の部屋番号
・行動処理モードで
選んだ行動コマンド番号
によって分岐する。
分岐は出力の表の
真ん中の列のようになるね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
分かった!
おっけーです! |
 |
|
|
|
|
プログラムの構造(詳細):出力処理 |
開始 |
- |
- |
初期化 |
- |
- |
行動処理モード 詳細 |
対象処理モード 詳細 |
結果処理モード 詳細 |
- |
- |
行動する(行動内容を処理) |
[出力] 部屋の状況と行動リストの表示 |
「現在の部屋」>「状況メッセージ」と「行動リスト」を表示
現在の部屋 |
表示メッセージ
(行動リスト) |
入口 |
ドアがある部屋です
どうする?
1:移動 2:見る 3:使う |
廊下 |
廊下です。
どうする?
1:移動 2:見る 3:使う |
寝室 |
寝室です。
ベッドがあります。
どうする?
1:移動 2:見る 3:使う |
|
|
[出力] 対象リストの表示 |
「現在の部屋」>「選ばれた行動コマンド」>「対象リスト」を表示
現在の部屋 |
行動 |
表示メッセージ
(対象リスト) |
入口 |
移動 |
どこに?
1:入口 2:廊下 3:寝室 |
見る |
どこを?
1:ドア |
使う |
なにを?
1:暗証番号1
2:暗証番号2
3:暗証番号3
4:金庫の鍵(所持の場合)
5:爆弾(所持の場合) |
廊下 |
移動 |
どこに?
1:入口 2:廊下 3:寝室 |
見る |
どこを?
1:窓 2:絵画 |
使う |
なにを?
1:暗証番号1
2:暗証番号2
3:暗証番号3
4:金庫の鍵(所持の場合)
5:爆弾(所持の場合) |
寝室 |
移動 |
どこに?
1:入口 2:廊下 3:寝室 |
見る |
どこを?
1:ベッド 2:テーブル 3:金庫 |
使う |
なにを?
1:暗証番号1
2:暗証番号2
3:暗証番号3
4:金庫の鍵(所持の場合)
5:爆弾(所持の場合) |
|
|
[出力] 行動の結果を表示 |
「現在の部屋」>「選ばれた行動コマンド」>
「選ばれた対象コマンド」>「結果メッセージ」を表示
現在の部屋 |
行動 |
対象 |
表示メッセージ(結果) |
処理 |
入口 |
移動 |
全ての場所 |
移動します。 |
移動
処理 |
見る |
ドア |
ドアです。 |
|
使う |
暗証番号1 |
使えません。 |
|
暗証番号2 |
使えません。 |
|
暗証番号3 |
使えません。 |
|
金庫の鍵
(所持の場合) |
使えません。 |
|
爆弾(所持の場合) |
ドアを破壊しました。 |
終了
処理 |
廊下 |
移動 |
全ての場所 |
移動します。 |
移動
処理 |
見る |
窓 |
窓です。 |
|
絵画 |
絵です。 |
|
使う |
暗証番号1 |
使えません。 |
|
暗証番号2 |
使えません。 |
|
暗証番号3 |
使えません。 |
|
金庫の鍵
(所持の場合) |
使えません。 |
|
爆弾(所持の場合) |
使えません。 |
|
寝室 |
移動 |
全ての場所 |
移動します。 |
移動
処理 |
見る |
ベッド |
ベッドです。 |
|
テーブル1回目 |
テーブルです。 |
|
テーブル2回目 |
テーブルです。 |
|
テーブル3回目 |
鍵を見つけました。 |
取得
処理 |
金庫 |
金庫です。 |
|
使う |
暗証番号1 |
開きません。 |
|
暗証番号2 |
金庫が開きました。 |
取得
処理 |
暗証番号3 |
開きません。 |
|
暗証番号(鍵なし) |
開きません。 |
|
金庫の鍵
(所持の場合) |
使いました。 |
|
爆弾(所持の場合) |
使えません。 |
|
|
|
[入力] 行動を選ぶ
(行動コマンド入力) |
[入力] 対象を選ぶ
(対象コマンド入力) |
[入力] 待機する |
- |
- |
脱出できたら(終了だったら) |
- |
- |
終了 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そして、最初に
制御文で分岐を
全部作ってしまおう。
ただし、
実装する処理は
「移動」処理だけね。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えっと。
if文で全部の分岐を
作って・・・
今は、inputNunには
「移動」だけが入ってくる
って考えて作るんだね。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
作るのは
移動だけ。 |
 |
|
 |
だから
骨組みって
言ってた
んだね。 |
|
|
|
|
|
|
文字で
書いちゃってる
でしょ。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
対象リストの表示だけど。
これは行動リストとは
違う書き方にしよう。
行動リストの表示は
入力番号を直接
表示部分に書いてるよな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
行動処理モード
(KottonCastleEscapeのKCEMain.java)141行目~ |
|
・・・ |
|
|
161 |
|
//行動コマンドの一覧を表示 |
162 |
|
System.out.println(""); |
163 |
|
System.out.println("---------------------------------------------"); |
164 |
|
System.out.println("どうする?"); |
165 |
|
System.out.println("1:移動 2:見る 3:使う"); |
166 |
|
System.out.print(">"); |
167 |
|
} |
・・・ |
|
|
|
入力番号を表示部分に直接書いてしまっている |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
この書き方だと・・・
例えば、
2番目に「たたく」って
コマンドを追加するとしたら。
その場合、定数と表示と
出力部分と2箇所
書き換えないといけない。
どちらか書き換えるのを
忘れたらバグになる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そっか。
表示の方の数値を
書き換えるの忘れたら・・・
2番は「見る」なのに
「たたく」になっちゃうんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
 |
あたし、
忘れちゃいそう! |
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
行動処理モード
(KottonCastleEscapeのKCEMain.java) |
|
・・・ |
|
|
|
|
|
//******************************************** |
|
|
|
// 定数 |
|
|
|
//******************************************** |
|
|
|
//行動コマンド |
|
|
|
private static final int ACT_NONE = 0;//無し |
|
|
|
private static final int ACT_MOVE = 1;//移動 |
|
|
|
private static final int ACT_HIT =
2;//たたく |
たたくを追加 |
|
|
private static final int ACT_LOOK =
3;//見る |
番号をずらす |
|
|
private static final int ACT_USE =
4;//使う |
番号をずらす |
~ |
|
|
|
~ |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
~ |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
~ |
|
|
|
|
|
//行動コマンドの一覧を表示 |
|
|
|
System.out.println(""); |
|
|
|
System.out.println("---------------------------------------------"); |
|
|
|
System.out.println("どうする?"); |
|
|
|
System.out.println("1:移動 2:見る 3:使う"); |
番号の変更が必要 |
|
|
System.out.print(">"); |
|
|
|
|
|
・・・ |
|
|
|
|
行動コマンドを増やした場合、定数の番号が変わる可能性がある。
その場合、表示の番号の変更が必要になる。 |
|
|
 |
|
 |
|
|
余計な
手間が
省けるし。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
だから、
入力番号の表示には
定数を利用しよう。
そうすれば、
定数を書き換えれば
自動的に表示も
書き換わるね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
連動するんだね。
いいね!これなら
間違えないですむ! |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
自動
なんだね! |
|
|
|
 |
|
 |
|
テキストアドベンチャーゲーム
行動処理モード
(KottonCastleEscapeのKCEMain.java) |
|
・・・ |
|
|
|
|
|
//******************************************** |
|
|
|
// 定数 |
|
|
|
//******************************************** |
|
|
|
//行動コマンド |
|
|
|
private static final int ACT_NONE = 0;//無し |
|
|
|
private static final int ACT_MOVE = 1;//移動 |
|
|
|
private static final int ACT_HIT =
2;//たたく |
たたくを追加 |
|
|
private static final int ACT_LOOK =
3;//見る |
番号をずらす |
|
|
private static final int ACT_USE =
4;//使う |
番号をずらす |
~ |
|
|
|
~ |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
~ |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
~ |
|
|
|
|
|
//行動コマンドの一覧を表示 |
|
|
|
System.out.println(""); |
|
|
|
System.out.println("---------------------------------------------"); |
|
|
|
System.out.println("どうする?"); |
|
|
|
System.out.println(
ACT_MOVE +
":移動 " + ACT_LOOK
+ ":見る " + |
番号が変わる |
|
|
ACT_USE +
":使う"); |
|
|
|
System.out.print(">"); |
|
|
|
|
|
・・・ |
|
|
|
|
定数を使って番号を表示するようにする。
この場合、定数の値を変更しても、表示番号も連動して変わる。 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
対象リストはこの方法で
表示するようにしてくれ。
行動リストの表示は
今回は変えないでいいよ。
3つ固定だからね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
例では
書き換え
たけどね。 |
 |
|
 |
変えないで
いいんだね。 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ヒントは
こんなもんかな。
えっと、
疑問解けた? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
がんばってねー。 |
 |
|
 |
ありがと。 |
|
|
|
どこどこ。 |
 |
|
 |
あ、
なぽちゃん!
ここもよく
分かんないん
だけど。 |
|
|
|
あ、
ちょっと待って、
わかったかも!
・・・・・ |
|
|
|
あ”あ”あ”~~~
キコエマセン・・・
・・・・・
・・・・・ |
|
|
解答は次のページです |