• 締切済み

HSPで作ったやつが動きません

HSP初心者です。 数当てゲームを作ってみたんですが、動かしてみると大変なことに (数がどんどん増えていきます。) 以下に記すので、どこがおかしいか教えてください。 ct=0 num=100 a=rnd(200)+1 goto *top *top cls print"1~200の次の数を求めよ" print"試した回数:"+ct button"+1",*up_num_1 button"+10",*up_num_10 button"-1",*down_num_1 button"-10",*down_num_10 button"ok!",*ok print num *up_num_1 num+=1:goto *top *up_num_10 num+=10:goto *top *down_num_1 num-=1:goto *top *down_num_10 num-=10:goto *top *ok if num=a :goto *yes if num+11>a :goto *big_10 if num>a+10 :goto *big_11 if num-11<a :goto *small_10 if num<a-10 :goto *small_11 *big_10 mes"大きい。ただし、誤差10以内。" wait 50 goto *top *big_11 mes"大きい。ただし、誤差11以上" wait 50 goto *top *small_10 mes"小さい。ただし、誤差10以内。" wait 50 goto *top *small_11 mes"小さい。ただし、誤差11以上。" wait 50 goto *top *yes mes"正解!" stop

みんなの回答

回答No.7

NO5です。追加回答します。 27~30行 if num+11>a :goto *big_10 if num>a+10 :goto *big_11 if num-11<a :goto *small_10 if num<a-10 :goto *small_11 にも間違いがあると思います。 これだと例えばa=100,num=190の時に 実際は「大きい、誤差11以上」ですが、*big_10に飛びます。 なぜなら190+11>100が成り立ってしまうからです。 だから、回りくどいやり方かもしれませんが 1.numとaの大小を比較 2.numの方が大きければb=num-a  aの方が大きければb=a-num 3.bの大きさを調べる という風にしてみては如何でしょうか? あとプログラムの改善点ですが、ボタンの操作でnumの0未満201以上が指定できてしまうので、直してみたらどうでしょう。 改善したものを楽しみにしています。

  • gab_snow
  • ベストアンサー率30% (3/10)
回答No.6

こんばんは。 自分もhspやったことないんですが、 比較の演算子って=でいいんですかね? ==とか if num=a :goto *yes でnumにaが入ってたりしないですよね。。 駄文失礼

回答No.5

私も素人HSPユーザーですがわかったところだけ回答します。 15,16行目 *up_num_1 num+=1:goto *top で*topへ移動してしまい、それが繰り返されているのではないでしょうか? num+=1なので数字が増加しているのだと思います。 15行目*up_num_1の前にstopを入れてみてはどうでしょうか? ちなみにstopを入れても、何かおかしいようです。 とりあえずrandomizeを入れないと、乱数になりません。 また時間があったら追加で回答します。

回答No.4

いい加減俺にはあきれる ●stopの下のprint numが不要。 ●ct=ct+1というルーチンがどこかに必要

回答No.3

もう一個ミス発見。俺馬鹿? print num /* print a デバッグ用に入れたもの。ゲームとしてプレイするときには表示しない */ /* ここでストップしておかないとその下の *up_num_1以下に進んでしまい 1進んでtopに戻って・・・・というのが延々と繰り返されるため,そういう動きになる */ stop

回答No.2

#1だ。急いでたから多分この辺の等号間違っている。 + 10とか -10かも ただ,俺は <= とか >= を演算子に使うほうが好きだといっておく if num > a + 11:goto *big_11 if num < a-11 :goto *small_11

回答No.1

/* 俺はHSPユーザじゃない。 だが適当に漁って修正してみたつもりだ。 やりたいのはこういうことでいいか? 自分で考えて欲しいから,解説はしない。 */ ct=0 num=100 a=rnd(200)+1 goto *top *top cls print"1~200の次の数を求めよ" print"試した回数:"+ct button"+1",*up_num_1 button"+10",*up_num_10 button"-1",*down_num_1 button"-10",*down_num_10 button"ok!",*ok print num print a stop print num *up_num_1 num+=1:goto *top *up_num_10 num+=10:goto *top *down_num_1 num-=1:goto *top *down_num_10 num-=10:goto *top *ok if num=a :goto *yes if a <num & num < a+11 :goto *big_10 if num > a + 11:goto *big_11 if num > a-11 & num < a :goto *small_10 if num < a-11 :goto *small_11 *big_10 mes"大きい。ただし、誤差10以内。" wait 50 goto *top *big_11 mes"大きい。ただし、誤差11以上" wait 50 goto *top *small_10 mes"小さい。ただし、誤差10以内。" wait 50 goto *top *small_11 mes"小さい。ただし、誤差11以上。" wait 50 goto *top *yes mes"正解!" stop

関連するQ&A