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

SESSION 13 その67
エラー処理を作る つづき

でも、どうして
表示されて無い
アイテムが
使えちゃったの?
どうしてー?
何でも
受け入れ
ちゃうの。
アイテムが表示されて
いないから、見た目では
選択できないように見える。

でも、
入力チェックをしてない

からね。番号は何番でも
入力できちゃうんだよ。

結果処理モードは
番号が入ってきたら
何でも処理をしちゃうよ。
 

キー入力値のチェックと入力値の制限
1、対象画面
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ)
「鍵」を持っていない場合は選択肢に表示されないため、
「鍵」は使えないように見える。しかし、実際には任意の番号の入力が可能。

例:
表示されていない「鍵」(TAR_USE_ITEM_KEY = 4 )を入力する。
処理のコード(対象処理モード 使う表示処理)
・・・      
509      /**  
510       * 対象処理モード 使う表示処理  
511       */  
512      private static void selectUse() {  
513         //全部の部屋共通の表示  
514         System.out.println("何を使う?");  
515      
516         //暗証番号表示  
517         System.out.println(TAR_USE_ITEM_CODE_5963 + ":金庫の暗証番号:5963");  
518         System.out.println(TAR_USE_ITEM_CODE_3156 + ":金庫の暗証番号:3156");  
519         System.out.println(TAR_USE_ITEM_CODE_3150 + ":金庫の暗証番号:3150");  
520      
521         //アイテムの取得有無  
522         //金庫の鍵  
523         if (itemKeyFlg) { trueの
アイテムしか
表示させない
524            System.out.println(TAR_USE_ITEM_KEY + ":金庫の鍵");  
525         }  
526         //爆弾  
527         if (itemBomFlg) {  
528            System.out.println(TAR_USE_ITEM_BOM + ":爆弾");  
529         }  
530      
531      }  
・・・      
持っていない場合(フラグがfalse)、対象コマンドを表示しないように処理している。
 
 
2、結果画面(4が入力された場合の画面)
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ)
結果処理モードには、不正な入力値に対するチェック処理が無い。
そのため、持っていないアイテム番号が入力されても使えてしまう。
不正な値をはじく必要がある。

例:
対象画面で、「鍵」(TAR_USE_ITEM_KEY = 4 )を表示していないので、
入力されないと思っていた。しかし入力された。
この場合、結果処理モードには不正チェックが無いので、「鍵」を持っていなくても処理が実行されてしまう。
4が入ってきた場合は無効にする処理が必要。
処理のコード(結果処理モード関数の一部)
・・・      
395         //***************  
396         //もし寝室なら  
397         } else if (nowRoomNum == TAR_ROOM_BED) {  
398            //行動コマンド選択別処理:保存しておいた値を使用  
399            //もし移動なら  
400            if (keepActNum == ACT_MOVE) {  
     
403            //もし見るなら  
404            } else if (keepActNum == ACT_LOOK) {         
     
437            //もし使うなら  
438            } else if (keepActNum == ACT_USE) {  
439                //アイテム処理  
     
472               //鍵  
473               } else if (inputNum == TAR_USE_ITEM_KEY) { チェックが無い
474                       System.out.println("U-10:金庫の鍵はこれでOKです。"); 4が来れば
必ず実行される
475      
476               //爆弾  
477               } else if (inputNum == TAR_USE_ITEM_BOM) {  
478                       System.out.println("U-11:ベッドを壊さないで下さい。");  
479               }  
480            }  
481         }  
・・・      
番号を入力すれば持っていないアイテムでも使えてしまう。
不正な値をチェックして無効にする処理が無い。
 
キー入力処理で、数値の0~5以外の値は入力できないように制限されている。
ただし、どのモードでも0~5の入力は常に可能。


そこで必要なのが
エラー処理だ。


不正な値や想定外の値
入ってきた場合でも
ちゃんとプログラムが
動くように、値をチェックして
対応する処理を作っておく
必要があるんだよ。
なるほど。

エラー処理で、
プログラムがおかしな
動作をするのを防ぐんだ。

自分で作らないとだめ
なんだね。


クイズゲームの時は
なぽちゃんがやって
くれてたんだっけ。
そうそう
クイズの時も
ちょっとやったね。
うーん

いろいろ
考えないと。


  しょぼーん
うーん・・・

ちゃんとできて
なかったのかな・・・

ごめんね・・・
でも、
バグがあったなんて・・・。


あたし、なぽちゃんに
教えてもらった通りに、
しっかりテストしたつもり
だったのに・・・。

うーん。
 
いや、
おまえはちゃんと
やってるよ。


俺が言った事を
できてるってば。
  落ち込まないで。
 


ことが今までテストしてきたのは
プログラムの通常の動作のテスト。
つまり、
「正常系」
のテストなんだ。

それ以外にも想定外の動作
「異常系」
のテストとか、
いろいろなテストをしないと
バグはなかなか見つけられない
んだよ。
部屋をいろいろ
移動したりとか
アイテムを使ったりとか・・・

あたしは、
正常系のテストしか
してなかったんだ。
「正常系」
「異常系」には、
いろいろな
定義がある
みたいだけど。

参考までね。
うーん
難しい。。。
 
 
テストの種類
正常系 仕様に基づいた通常の動作テスト
異常系 不正な値の入力など想定外の動作テスト
 


おまえは
よくやってるよ。

ほんと。
でも、今はそれでOK。

テストのことについては
また別の機会にやる
からね。

今は気にしないで。
 
はいっ!

まだまだ
勉強しないとね!


がんばるぞ!
  ありがと!
 


はあ~

休憩したばかり
なのに、もう
お疲れさんだわあ。
さあ、
じゃあエラー処理は
これでおしまい。


今回は参考までね。

次は、いよいよ
最後のシナリオを・・・
 
えっ!?

だめ!!
ちゃんとエラー処理
作ろう!


おかしくなったら
遊んでる人が困るでしょ!
  ちゃんと
作ろう!
 


遊んでる人って・・・。

別に俺達だけなんだから
変なの打たなきゃ
いいだけだし。

作るの結構大変だからさ。
今回は練習ってことで・・・

だめ?
ねっ。

次は作るっ
てことで。
お願い!!
ちゃんと作りたい!
だめ!!

なぽちゃん、
エラー処理は重要って
言ってたでしょ。


ううー・・・
重要って言ったけど・・・。

しょうがない!
エラー処理を作ろう。


少し難しいけど覚悟しろよ。
はいっ!

がんばります!
この娘、
頑固だわあ。

誰に似た
のかしら。
やったあー

ありがとー


ただし、
今回もエラー処理に
ついては簡単な対応
にするよ。


詳しくは別の機会に
やるからね。


簡単なのでも
取り合えず
大丈夫だからね。

ねっ。
大丈夫
なんだね。
はいっ。

分かりました。



エラーの対応って
きちんとやると
大変なの。

今回の目的から
はずれちゃう
からね。

とっても大事
なんだけどね。
大事だよね。

でもなんで
小声なの?

 
 

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