Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-04-20

バグを修正するよ!

| 19:33

【せんせい】

 と言うわけで、突然ですがサイコロです。

 熱に浮かされてるに、突然天啓がひらめいたのです!

【でし】

 知恵熱だったわけですね;

【せんせい】

 まずは、前のコードです。

 「賭ける」と「答える」、両方の修正箇所に問題があるように書いていますが、実際に問題があったのは、「答える」のほうだけでした。

#-------------------------------------------------------------
#数当てゲーム
所持金とは整数。所持金=5
賭け金とは整数。賭け金=0
配当とは整数。配当=2
所持金>0の
  R=6の乱数+1
  賭ける


*賭ける
  「いくら賭ける?(1~{所持金})」と尋ねる。
  賭け金=それ
  もし、(それ<1)または(それ)または(それ>所持金)ならば
    賭ける。                    #←ここと
  違えば
    答える
*答える
    「1~6のど~れだ?」と尋ねるもし、(それ<1)または(それ)または(それ>6)ならば
      答える                    #←ここが問題!
    もし(R=それならば
      所持金=所持金+賭け金*配当
    「当たり!{改行}所持金が{所持金}に増えました」と言う
    違えば
      所持金=所持金-賭け金
    「ハズレ。答えは{R}でした。{改行}所持金が{所持金}に減りました」と言う
  ここまで
「破産しました」と言う。
終わり。
#-------------------------------------------------------------

 「賭ける」のほうは、もし違えばの構文が完結していますから、もしで自分を呼び出しても、の後戻ってくることはありません。(もしかしたら戻ってくるのかもしないけど、処理する命令はもうないからリターンされるっていうか?)

 「答える」のほうは、もしの文が2つ並列されている為、最初のもしで自分を読んでしまうと、一連の処理が終わった後に、次のもし違えばを実行してしまうのでした。

 というわけで、こうなりました。

#-------------------------------------------------------------
#数当てゲーム
所持金とは整数。所持金=5
賭け金とは整数。賭け金=0
配当とは整数。配当=2
所持金>0の
  R=6の乱数+1
  賭ける


*賭ける
  「いくら賭ける?(1~{所持金})」と尋ねる。
  賭け金=それ
  もし、(それ<1)または(それ)または(それ>所持金)ならば
    賭ける。
  違えば
    答える

*答える
    「1~6のど~れだ?」と尋ねるもし、(それ<1)または(それ)または(それ>6)ならば
      答える
    違えば    #はじめのもしに対応する違えばの中に入れただけなのさ;
        もし(R=それならば
          所持金=所持金+賭け金*配当
      「当たり!{改行}所持金が{所持金}に増えました」と言う
        違えば
          所持金=所持金-賭け金
      「ハズレ。答えは{R}でした。{改行}所持金が{所持金}に減りました」と言う

「破産しました」と言う。
終わり。
#-------------------------------------------------------------

 これであれば、「賭ける」のほうと同じく完結するんで、大丈夫でした。

 分かってみたら、穴に入りたいよーなイージーミスでした(汗)

 ゲームなんかだと特に、関数から関数へ飛びまくってぐるぐるるよーなプログラムになりがちだから、よくよく気をつけないとダメだねえ・・・っていうか、いうプログラム自体が問題?!

【せんせい】

 明日は、クイズに戻りますよ~。

 答の、時制限をつけようとおもいます!

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20090420