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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0927
0x070dバベルの大図書館4未解決


0x070d

リンク

2010/9/27(Mon) 22:23:12|NO.35172

2バイトの文字をランダムに表示するものを作っているのですが、うまく動きません。
助けてください。


#runtime "hsp3cl" #include "kernel32.as" #include "hsp3clmod.as" clinit clclear A=0 randomize repeat sdim B,100 dim C,2 repeat 98 D=0 C(cnt\2)=0 if cnt\2=0 { while D=0 if C(0)>=0x81 and C(0)<=0xea : D=1 : else : D=0 if (C(0)<0xa0 or C(0)>0xdf) and D=1 : D=1 : else : D=0 if (C(0)<0x85 or C(0)>0x87) and D=1 : D=1 : else : D=0 if D=0 : C(cnt\2)=rnd(255) wend }else{ while D=0 if C(cnt\2)>=40 and C(cnt\2)<=0xfc and C(cnt\2)!0x7f : D=1 : else : D=0 if C(0)=0xea { if C(1)<=0xa4 and D=1 : D=1 : else : D=0 } if C(0)=0x98 { if (C(1)<0x73 or C(1)>0x9e) and D=1 : D=1 : else : D=0 } if C(0)=0x88 { if C(1)>=0x9f and D=1 : D=1 : else : D=0 } if C(0)=0x84 { if (C(1)<=0x60 and C(1)>=0x70) and D=1 : D=1 : else : D=0 if (C(1)<=0x91 and C(1)>=0x9f) and D=1 : D=1 : else : D=0 if C(1)<=0xbe and D=1 : D=1 : else : D=0 } if C(0)=0x83 { if (C(1)<=0x96 and C(1)>=0x9f) and D=1 : D=1 : else : D=0 if (C(1)<=0xb6 and C(1)>=0xbf) and D=1 : D=1 : else : D=0 if C(1)<=0xd6 and D=1 : D=1 : else : D=0 } if C(0)=0x82 { if C(1)>=0x4f and D=1 : D=1 : else : D=0 if (C(1)<=0x58 and C(1)>=0x60) and D=1 : D=1 : else : D=0 if (C(1)<=0x79 and C(1)>=0x81) and D=1 : D=1 : else : D=0 if (C(1)<=0x9a and C(1)>=0x9f) and D=1 : D=1 : else : D=0 if C(1)<=0xf1 and D=1 : D=1 : else : D=0 } if C(0)=0x81 { if (C(1)<=0xac and C(1)>=0xb8) and D=1 : D=1 : else : D=0 if (C(1)<=0xbf and C(1)>=0xc8) and D=1 : D=1 : else : D=0 if (C(1)<=0xce and C(1)>=0xda) and D=1 : D=1 : else : D=0 if (C(1)<=0xe8 and C(1)>=0xf0) and D=1 : D=1 : else : D=0 if (C(1)<=0xf7 and C(1)>=0xfc) and D=1 : D=1 : else : D=0 } if D=0 : C(cnt\2)=rnd(255) wend } poke B,cnt,C(cnt\2) loop clpos 0,A+1 mes B if A<=255{ A++ }else{ A=0 } wait 10 loop



この記事に返信する


KA

リンク

2010/9/27(Mon) 22:37:02|NO.35173

>>2バイトの文字をランダムに表示するものを作っているのですが、うまく動きません。
>>助けてください。

何回もこの掲示板では、同じ回答が出ています。

 ”何がどう動かないのか?、どうしたいのか?”

 ”見出しの意味が分からない”

取りあえず、どうしたいのか教えてください。
こちらで試した結果はエラーでしたが、エラーは出なかったのでしょうか?



damage

リンク

2010/9/27(Mon) 22:50:31|NO.35174

>こちらで試した結果はエラーでしたが、エラーは出なかったのでしょうか?
何回もこの掲示板では、同じ回答が出ています。

どのようなエラーが出たのかどうかも示せないのでしょうか?

まぁもっとも、どのようなエラーが出たのかどうかは予想できますがね。



KA

リンク

2010/9/28(Tue) 01:32:59|NO.35175

>>>こちらで試した結果はエラーでしたが、エラーは出なかったのでしょうか?
>>何回もこの掲示板では、同じ回答が出ています。
>>どのようなエラーが出たのかどうかも示せないのでしょうか?

 まあ、環境によりエラーが出た可能性も有るので、質問者の症状が分からない
 と話に成りません。 こちらから”こういうエラーだ”と言っても、しょうが
 有りません。

 それくらいも理解できないのかな?



SYAM

リンク

2010/9/28(Tue) 11:23:24|NO.35176

飛び飛びの範囲の乱数を作ろうとしているところに、ところどころ意味不明の条件判断が見られますね。すでに成立していることがわかっている判断をしていたりとか。
作っているうちに混乱してきていませんか?

また、乱数はとりあえず適当に作ってからダメなら作り直す…というのではあまり効率がよいとはいえませんし、どこか間違うと無限ループに陥ってしまいます。
まず、たとえば 10以上20未満の乱数を作りたいときには

d=0 while d=0 a=rnd(20) if(a>=10):d=1:else:d=0 wend
なんて書きかたはせずに、

a = rnd(20-10) + 10
こうしましょう。値の変化する幅のぶんだけ乱数で作って、範囲の最小の数を足すことで目的の範囲まで底上げすればいいのです。

また例えば、 10以上20未満か30以上40未満の範囲の乱数を作るなら

a=rnd(20) if(a<10):a=a+10:goto *@f if(a<20):a=a+20:goto *@f *@
これでできます。(これだとすこし無駄な判断があるようですが、目的の範囲が3つ以上あるとこんな形になるでしょう。)
a の値によって底上げの幅を変えてやればいいワケですね。




反論や注意ならともかく、嘲るのが意図の発言では、相手には何も伝わらないばかりか自分自身の品位を貶めるのが関の山です。
注意や反論があるなら、それだけにしときましょうよ。



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