広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 13 その36
「見る」処理を作る(対象処理モード、結果処理モード) つづき
  課題


課題:「見る」処理を作る(対象処理モード、結果処理モード)
 
仕様書を元に「見る」処理を作る
(対象処理モード、結果処理モード)
・対象処理モード:「見る」の対象リスト表示処理
・結果処理モード:「見る」の結果表示処理
 
企画書へのリンク
仕様書へのリンク
 
 
どんどん
ゲームらしく
なってくね。

わくわくするー!
じゃあ
「見る」処理を作ってくれ。

仕様書を元に作ってね。

ここができれば
部屋の中の物をいろいろ
「見る」ことができるように
なるよ。
 
これでどの部屋でも
いろいろなものを「見る」で、
調べることができるように
なるんだね!
 

  課題の内容

ここで作るのは、
対象画面と結果画面
の「見る」処理
だ。

行動画面は特にないね。
例えば、
自分が「入口」にいて
「見る」を選んだら・・・

対象画面で「ドア」

結果画面で
「ドアは閉まってます。」

こんな感じね。
そんな感じ。
いい感じ!
 
プログラムの構造(詳細):出力処理
開始 - -
初期化 - -
行動処理モード 詳細 対象処理モード 詳細 結果処理モード 詳細
- - 行動する(行動内容を処理)
[出力] 部屋の状況と行動リストの表示
「現在の部屋」>「状況メッセージ」と「行動リスト」を表示
現在の部屋 表示メッセージ
(行動リスト)
入口 ドアがある部屋です

どうする?
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 開きません。  
暗証番号(鍵なし) 開きません。  
金庫の鍵
(所持の場合)
使いました。  
爆弾(所持の場合) 使えません。  
[入力] 行動を選ぶ
(行動コマンド入力)
[入力] 対象を選ぶ
(対象コマンド入力)
[入力] 待機する
- - 脱出できたら(終了だったら)
- - 終了


基本的な作り方は
「移動」の時と同じ。

真似して作ってみよう。


今までの作業で、
各モードの「見る」の分岐は
作っちゃったからね。

あとはそこのブロックに
処理を書いていくだけだよ。
頭使って
考えようー。
もう分岐が
できてるもんね。
対象処理モード関数と
結果処理モード関数の
「見る」を作ればいい
んだね。

出力の表シナリオの表
参考になるよね!
 

テキストアドベンチャーゲーム
結果処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)172行目~
 
 
対象処理モード関数
・・・    
172      /**
173       * 対象処理モード
174       */
175      private static void execModeTarget() {
176         //***** 入力された行動コマンドから対象コマンドを表示する *****
177    
178         //対象コマンドの一覧を表示
179         System.out.println("---------------------------------------------");
180    
181         //部屋ごとの処理
182         //***************
183         //もし入口なら
184          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
185            //もし移動なら
186            if (inputNum == ACT_MOVE) {
187               selectMove();//対象モード 移動表示処理
188    
189            //もし見るなら
190            } else if (inputNum == ACT_LOOK) {
191               System.out.println("テスト:対象処理モード 見る"); //テスト用:表示確認
192               
193            //もし使うなら
194            } else if (inputNum == ACT_USE) {
195               System.out.println("テスト:対象処理モード 使う"); //テスト用:表示確認
196    
197            }
198    
199         //***************
200         //もし廊下なら
201         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
202            //もし移動なら
203             if (inputNum == ACT_MOVE) {
204               selectMove();//対象モード 移動表示処理
205    
206            //もし見るなら
207            } else if (inputNum == ACT_LOOK) {
208               System.out.println("テスト:対象処理モード 見る"); //テスト用:表示確認
209               
210            //もし使うなら
211            } else if (inputNum == ACT_USE) {
212               System.out.println("テスト:対象処理モード 使う"); //テスト用:表示確認
213    
214            }
215    
216         //***************
217         //もし寝室なら
218         } else if (nowRoomNum == TAR_ROOM_BED) {
219            //もし移動なら
220            if (inputNum == ACT_MOVE) {
221               selectMove();//対象モード 移動表示処理
222    
223            //もし見るなら
224            } else if (inputNum == ACT_LOOK) {
225               System.out.println("テスト:対象処理モード 見る"); //テスト用:表示確認
226               
227            //もし使うなら
228            } else if (inputNum == ACT_USE) {
229               System.out.println("テスト:対象処理モード 使う"); //テスト用:表示確認
230    
231            }
232         }
233    
234         //対象コマンド共通の表示
235         System.out.print(">");
236      }
・・・    
黄色は「見る」の分岐
 

テキストアドベンチャーゲーム
結果処理モード(移動処理のみ)
KottonCastleEscapeのKCEMain.java)238行目~
 
 
結果処理モード関数
・・・    
238      /**
239       * 結果処理モード
240       */
241      private static void execModeResult() {
242         //***** 入力された対象コマンド別に実行処理と表示をする *****
243    
244         //部屋ごとの処理
245         //***************
246         //もし入口なら
247          if (nowRoomNum == TAR_ROOM_ENTRANCE) {
248            //行動コマンド選択別処理:保存しておいた値を使用
249            //もし移動なら
250             if (keepActNum == ACT_MOVE) {
251               resultMove();//結果モード 移動表示処理
252    
253            //もし見るなら
254            } else if (keepActNum == ACT_LOOK) {
255               System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
256                  
257            //もし使うなら
258            } else if (keepActNum == ACT_USE) {
259               System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
260    
261            }
262    
263         //***************
264         //もし廊下なら
265         } else if (nowRoomNum == TAR_ROOM_PASSAGE) {
266            //行動コマンド選択別処理:保存しておいた値を使用
267            //もし移動なら
268             if (keepActNum == ACT_MOVE) {
269               resultMove();//結果モード 移動表示処理
270    
271            //もし見るなら
272            } else if (keepActNum == ACT_LOOK) {
273               System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
274    
275            //もし使うなら
276            } else if (keepActNum == ACT_USE) {
277               System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
278    
279            }
280    
281         //***************
282         //もし寝室なら
283         } else if (nowRoomNum == TAR_ROOM_BED) {
284            //行動コマンド選択別処理:保存しておいた値を使用
285            //もし移動なら
286             if (keepActNum == ACT_MOVE) {
287               resultMove();//結果モード 移動表示処理
288    
289            //もし見るなら
290            } else if (keepActNum == ACT_LOOK) {       
291               System.out.println("テスト:結果処理モード 見る"); //テスト用:表示確認
292    
293            //もし使うなら
294            } else if (keepActNum == ACT_USE) {
295               System.out.println("テスト:結果処理モード 使う"); //テスト用:表示確認
296    
297            }
298         }
299    
300         //共通の処理
301         System.out.println("");
302         System.out.println("---------------------------------------------");
303         System.out.println("-- 1を入力してEnterキーを押してください ---");
304         System.out.print(">");
305      }
・・・    
黄色は「見る」の分岐

  テストの仕方


動作のテストは
「見る」に関しての

・全てのルートの表示
・アイテムの取得

をしよう。

アイテムの取得確認を
忘れないでね。
えっと、
テストのパターンは・・・

出力の表の
結果処理の「見る」のパターン
を全部調べればいいんだよね?

そうすれば、対象処理のルートも
全部含まれるし。

もう止めなくてもテストできる
から簡単!
そうそう。

出力の表の
パターンね。
動くって
いいね!
 
 
出力の詳細(結果処理モード)
 
[出力] 行動の結果を表示
「現在の部屋」>「選ばれた行動コマンド」>「選ばれた対象コマンド」>「結果メッセージ」を表示
現在の部屋 行動 対象 表示メッセージ(結果) 処理
入口 移動 全部屋共通 移動します。 移動
処理
見る ドア ドアです。  
使う 暗証番号1 使えません。  
暗証番号2 使えません。  
暗証番号3 使えません。  
金庫の鍵
(所持の場合)
使えません。  
爆弾(所持の場合) ドアを破壊しました。 終了
処理
廊下 移動 全部屋共通 移動します。 移動
処理
見る 窓です。  
絵画 絵です。  
使う 暗証番号1 使えません。  
暗証番号2 使えません。  
暗証番号3 使えません。  
金庫の鍵
(所持の場合)
使えません。  
爆弾(所持の場合) 使えません。  
寝室 移動 全部屋共通 移動します。 移動
処理
見る ベッド ベッドです。  
テーブル1回目 テーブルです。  
テーブル2回目 テーブルです。  
テーブル3回目 鍵を見つけました。 取得
処理
金庫 金庫です。  
使う 暗証番号1 開きません。  
暗証番号2 金庫が開きました。 取得
処理
暗証番号3 開きません。  
暗証番号(鍵なし) 開きません。  
金庫の鍵
(所持の場合)
使いました。  
爆弾(所持の場合) 使えません。  
 

     

じゃあ、必要な処理を
作ってくれ。


もう山は越えたからね、
あと少しだ。
よーし、
あとちょっとだ!

がんばるぞ!
がんばってね。
はいっ。

心の中で
応援しててね。

     

心の中って・・・

うーん。
やっぱり、やること
ないんだけどな・・・


 
 


暇だし・・・。

こいつ身代わりにして、
次のセッションの
予行演習でもしとくか。
えーと。

次の
セッションは・・・。



あっ、
おままごとだ!

 
みーちゃった!
ドキッ  


違うわー!!

セッションの
予行演習だー!


やることないんじゃー!
 
照れない、照れない!

なぽちゃん、やっぱり
そんなにあたしのこと
好きだったんだ。
さいあくー
あたしも
入れてー。




ほーら、ことちゃん
パパが帰ってきまちたよ。

「おかえりー、ぱぱ。」

・・・うぷぷ
笑うなー!!!
そういうこと言わないで!

予行演習だってば!
・・・
 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告