HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1224
りく乱数5未解決


りく

リンク

2012/12/24(Mon) 09:24:19|NO.51357

cls 4
pos 195,180
objsize 250,80
button"始める",*label1
K=stat
button"終わる",*label2
stop
*label1
clrobj K
pos 180,200
button"★1問目★",*label3
O=stat
stop
*label2
end
stop
*label3
clrobj O
objsize 300,100
pos 165,95
button"64",*label5
@=stat
button"58",*label6
l=stat
font"",30
color 0,255,255
pos 165,300
mes"数が大きいのはどっち?"
pos 130,335
mes"大きいほうのボタンをおそう!!"
stop
*label5
gosub *kesu
clrobj @
color 255,0,0
pos 170,290
mes"正解だよ!すごいね★" : pos 140,325 : mes"次の問題もいってみよう!!"
pos 165,180
button"次の問題へ",*label7
R=stat
stop
*label6
gosub *kesu
clrobj @
clrobj l
font"",40 :color 255,255,0
pos 165,75
mes"間違っちゃったね"
mes"よ〜くみてみよう!"
pos 165,160
button"もう一回チャレンジする",*reta
button"終わりにする",*label8
stop
*label7
gosub *kesu
clrobj R
randomize
ransu=rnd(31)
color 255,0,255 : pos 175,155 : mes"ボタンを"+ransu+"回連打しろ!"
pos 170,190
button"連打",*rend
t=stat
button"完了",*kanr
T=stat
stop
*label8
end
*kesu
color 0,0,0 : boxf 0,0,900
return
stop
*reta
gosub*kesu2
goto *label1
stop
*kesu2
color 0,0,0 : boxf 0,0,900 : return : stop
*rend
ransu=rensu-1 : stop
*kanr
if ransu=0 : goto*kuria
if ransu<0 : goto*sukuna
if ransu>0 : goto*ooi
stop
*kuria
clrobj t
clrobj T
mes"正解"
stop
*sukuna
clrobj t
clrobj T
gosub*kesu
mes"あ!"+ransu+"回少ないよ!" : stop
*ooi
clrobj t
clrobj T
gosub*kesu
mes"あ!"+ransu+"回多いよ!" : stop


どうもうまくいきません
どうすればきちんと何回多いなどとできるのでしょうか
答えをください



この記事に返信する


KA

リンク

2012/12/24(Mon) 09:26:49|NO.51358

ヒントは、不具合に関係ない部分を消して確かめて行きます。
あと、HSPでは半角の大文字小文字の区別は有りません。



KA

リンク

2012/12/24(Mon) 09:32:29|NO.51359

いつの間にか質問が変わっていた・・・。



YSR

リンク

2012/12/24(Mon) 10:11:04|NO.51361

・コードにはコメントを入れよう! ";"から始まるのがコメントだよ!
・変数名が 1文字だらけなのは止めよう! 変数の意味が分からなくなるからね!
・clrobj命令は引数を 2つ取るよ! 引数の意味ぐらいググって調べよう!
・ end命令の後にstopは要らない! どうせ終了しちゃうんだからね!
・font命令でフォント名を指定しないのは避けた方がいい!
・mes命令では改行が使える! 「mes "おはよう\nこんにちは"」とかで試してみよう!
・途中の数当てで数字が固定なのは仕様なのかな?  rnd命令を使えばいいんじゃない?
・画面上のbuttonオブジェクトを消すのは別に cls命令でもいいんじゃないかな?
・randomize命令はコードの最初に持ってきたほうがいいよ!
・ラベルは「実行中のコードの前」にも飛べる。例えば*label2と*label8は同じ意味だから、
 *label8のところを*label2に書き換えても同じ動作をするんじゃないかな?
・return命令の後にstopは要らない!
・……やっと本題だよ! 突っ込みすぎて疲れたけどそれは忘れちゃいけないところだよね!
 連打しても応答がないのは、「ransu=ransu-1」とすべきところを「ransu=rensu-1」と
 しているからだよ! assert命令を使うと表示されるDebug Windowで確認してみよう!
・HSPでは変数の大文字小文字は区別しないよ! だから「t」と「T」は同じ意味だよ!
・コード中、「ransu<0」と「ransu>0」が逆になってるよ!
 だから、「mes"あ!"+ransu+"回多いよ!"」も、「mes"あ!"+(-ransu)+"回多いよ!"」に
 書き換える必要があるよね!
・*kesuラベルに飛ぶと、文字表示色が黒色(0,0,0)になってしまうよ!
 黒く塗り潰してから、例えば「color 255,255,255」とかで色を黒以外にすれば表示される!



ppr

リンク

2012/12/24(Mon) 17:47:18|NO.51371

簡単なプログラムですが、参考になれれば幸いです。


c=0;カウントする値 b=20;比較する値 *top color 255,255,255:boxf:color pos 10,10:mes "C="+c+"" pos 50,10:mes "B="+b+"" pos 10,30 if c>b{mes "大きい C>B"} if c=b{mes "ちょうど C=B"} if c<b{mes "小さい C<B"} s=b-c;BとCの差を指定 pos 10,50:mes "BとCの差="+s+"" pos 10,80:button gosub "カウント",*main redraw 1:await 1:redraw 0:goto *top;常にループ 一応 stop *main c++;カウント return;サブルーチンから復帰



れみはる

リンク

2012/12/24(Mon) 19:49:39|NO.51376

スパゲッティーなコードを書いていると
たまにend命令を通り越すことがあるので、
自分は「end」を「end:stop」と書くことにしています。参考まで。



ONION software Copyright 1997-2023(c) All rights reserved.