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

SESSION 13 その68
エラー処理を作る つづき
  課題


課題:エラー処理を作る
 
・エラーメッセージの表示
最初のモード(行動処理モード)に戻す
 
企画書へのリンク
仕様書へのリンク
 
できなくても
いいからね。

気楽にやろう。
って、
聞いてないね。
よーし、
ラストスパートだ!

全力でいくぞ!
じゃあ、
エラー処理を作ろう。

これが終われば
プログラムは本当に
ほぼ完成と言えるね。
 
これが出来れば
あとはシナリオ
をのせるだけだね。
 

  課題の内容

今回のエラーの問題は、
キーボードから不正な値が
入力されるのが問題に
なってる。

だから、入力された値を
チェック
をしよう。
チェックして
不正な値を使わない
ようにするんだね。
 
 



大変なの。
実は、今回のゲームは
クイズゲームの時より
エラー処理が難しいんだ。


見るものや持ってる
アイテムの数が
常に変わる
からね。

不正な番号をチェックするにも
番号が部屋や画面によって
減ったり増えたり変わるんだ。
 
なるほど。

クイズゲームは固定で
よかったんだね。

うーん。
どうやればいいのかな?
  クイズゲームは
1~3だけで
よかったんだ。
 
 
 
エラー処理:クイズゲームとの違い
クイズゲーム 答えの選択肢の数は常に3つで固定。

入力される値は数字の1、2、3をチェックする
だけですんだ。それ以外の値は不正。
テキスト
アドベンチャー
ゲーム
選択肢の数が、部屋や行動、アイテムの所持によって変化する。

単純に入力値チェックができない。
 

  エラー対応の仕方

今回のエラー対応の仕方を
説明するよ。


まず、コマンド値「以外」の
異常な値が入ってきた時は、
制御文の「その他」で受けよう。

例えば、
100とか入ってきたら、そんな
コマンドないから「その他」になるね。

そして、
そのブロックでエラー処理
をしよう。
 
 
 
今回のエラー処理の方法
目的 外部から入力された値をチェックする。
(キーボードから入力された値)
対応
異常な値を、制御文の「その他」の分岐で受けて処理する。
キー入力処理で、数値の0~5以外の値は入力できないように制限されている。
文字に対するエラー処理は不要。
 

入力値のチェックの例
 
・・・      
230      /**  
231       * 対象処理モード  
232       */  
233      private static void execModeTarget() {  
234         //***** 入力された行動コマンドから対象コマンドを表示する *****  
235      
236         //対象コマンドの一覧を表示  
237         System.out.println("---------------------------------------------");  
238      
239         //部屋ごとの処理  
240         //***************  
241         //もし入口なら  
242         if (nowRoomNum == TAR_ROOM_ENTRANCE) {  
243            //もし移動なら  
244            if (inputNum == ACT_MOVE) {  
245               selectMove();//対象モード 移動表示処理  
246      
247            //もし見るなら  
248            } else if (inputNum == ACT_LOOK) {  
249               //全部の部屋共通の表示  
250               System.out.println("何を見る?");  
251                 
252               //対象コマンド表示(ドア)  
253               System.out.println(TAR_LOOK_ENTRANCE_DOOR + ":ドア");  
254                 
255            //もし使うなら  
256            } else if (inputNum == ACT_USE) {  
257               selectUse();//対象モード 使う表示処理  
258            } ここにelse
「その他」を
追加する
・・・      
入力された値がコマンド値以外の場合は「その他」で受ける。

「その他」が必要な場所を検討する必要がある。
 
「その他」を
使えば
いいんだ。
if文の場合ならelse、
switch文ならdefaultね。


そっか。
そうすれば「エラーです」って
表示したりできるね。


エラーだった場合に
必要な処理は2つ。


まず、エラーの状況を知らせる
ためのエラーメッセージ
を表示しよう。

エラーメッセージには
入力した番号も表示して
間違いを分かりやすくしておこう。
なるほど。

こうすれば
何でエラーになったのか
原因が分かるね。
今回は
メッセージと
番号ね。
もっと詳しく
書いても
いいんだね。
 
 
エラーに対応する処理を作る
必要な処理
・エラーメッセージの表示
・最初のモード(行動処理モード)に戻す
 
エラーメッセージ
ユーザーにエラーの内容を通知する
(エラーの原因、理由、対応方法など)

表示例
"無効なコマンド番号です:" + inputNum
 


つじつまが
合わなくなる
でしょー
それから、エラーの場合は
最初の「行動処理モード」
に戻して「結果」を実行しない
ようにしよう。

例えば
持ってないアイテムを使って
そのまま進んだら、おかしな
結果が出ちゃうだろ。
 
そっか、アイテムを使う前に
止めないといけないんだ。

エラーメッセージを表示する
だけじゃ、次の処理に進んで、
おかしくなっちゃうもんね。

こうすれば、エラーになっても
ゲームを続けられるんだね。
  話がおかしく
なっちゃう。
 
 
エラー処理対応:エラー処理の流れ(現在)
 
エラー処理対応:エラー処理の流れ(修正)


 
今回のエラー処理の方法
目的 外部から入力された値をチェックする。
(キーボードから入力された値)
対応
異常な値を、制御文の「その他」の分岐で受けて処理する。
 
必要な処理
・エラーメッセージの表示
・最初のモード(行動処理モード)に戻す
 
エラーメッセージ
ユーザーにエラーの内容を通知する
(エラーの原因、理由、対応方法など)

表示例:
"無効なコマンド番号です:" + inputNum
キー入力処理で、数値の0~5以外の値は入力できないように制限されている。
文字に対するエラー処理は不要。
 
いろいろな
やり方が
できるけどね。
まだなんとなくしか
分かんないけど。
まとめると・・・

今回はこんなやり方で
エラーの対応をしよう。

これで変な数が入ってきても
何もなかったようにゲームを
継続できるよ。
 
こうすれば、
持ってないアイテムの番号
が入力されても大丈夫に
なるんだ。
 

     

うーん・・・
いろいろ難しいね。

画面ごとに
細かくチェックが必要
なんだね。

全部のモードで
チェックが必要な場所を
探さなきゃ。
今回の場合は
そうなるね。

これもやり方の1つ。

いろいろなやり方を
覚えていこう。
一ヶ所で
できれば
いいのに。
また鋭い事
言うしー。

いろいろなやり方が
あるからね。

徐々に勉強しようね。

 
 

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