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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0627
ナット乱数3解決


ナット

リンク

2006/6/27(Tue) 16:45:05|NO.1212

質問なのですが、今シュミレーションRPGを作っているのですが、その中で攻撃が命中するか
どうかの判定を、乱数を使ってやりたいと思っているのですが、そのために小数点以下の乱
数を発生させたいのです。以下に、自分の考えているスクリプトを載せておきます。どうか宜
しくお願いします。また、こんなのよりこうしたほうがいいというのがあれば、教えていただ
けると幸いです。
pre
kaih=rnd(ここの数で命中率を決める)
if kaih=0{
     当たったときの処理
}
{
     はずれたときの処理
}
/pre

宜しくお願いします。



この記事に返信する


I386

リンク

2006/6/27(Tue) 17:03:22|NO.1213

小数点以下の乱数を取得する命令がhspdaにあります。
標準命令でやり過ごすのなら、普通にrndで取得し、それを10や100といった数で
割ればよいでしょう。(ただし精度はおちます。)



Drip

リンク

2006/6/27(Tue) 21:00:30|NO.1216

Dripです。

 ナットさん、こんにちは。小数点以下の数値を扱うには、double関数が役に立ちます。
小数点以下第6位までの乱数を発生させるサンプルを以下に示します。
randomize:mes double(rnd(1000)*rnd(1000))/1000000

 rnd関数では最大1〜32768までの乱数しか生成できないため、 それ以上の数値を希望する場合は、上記のような工夫が必要になります。 小数の問題はよく初心者がつまずく分野ですが、 HSPサンプル等を参考にがんばってみてください。 ・・・ちなみにRPGでよくある攻撃の当たり外れは、小数点以下の値を扱わなくても簡単にできます。
randomize
rep=10
Pspd=40
Espd=40
pos 10,10:mes "プレイヤーの素早さ:":pos 180,10:input Pspd,40,20,4
pos 10,30:mes "敵の素早さ:":pos 180,30:input Espd,40,20,4
pos 10,60:objsize 200,20:button ""+rep+"ターン攻撃をする。",*go
stop
*go
color 255,255,255:boxf 0,60:pos 0,90
repeat 10
if rnd(Pspd*2)>rnd(Espd):color ,,255:mes "当たった!":else:color 255:mes "はずれ。"
loop
stop



ナット

リンク

2006/6/28(Wed) 12:27:24|NO.1222

有り難う御座いました。
参考にしてやってみます。



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