![見出し画像](https://assets.st-note.com/production/uploads/images/71053880/rectangle_large_type_2_41389c65c5a5cecbd2205794fe2331c0.png?width=1200)
少数を整数へ直すに挑戦/ティラノビルダー備忘録
※自分用の備忘録のため内容が初歩的な場合があります※
当方はノベルゲーム制作用ソフトでターン制コマンドバトルを作っているにも関わらずスクリプト知識がほぼない素人です。
そんな素人でもティラノビルダーのおかげで楽しく時に苦しくパズル感覚でゲーム制作をさせて頂いております……が
時に避けられぬスクリプトの道……!!
今回はどうしても
「変数に入っている小数点以下の数字を四捨五入して整数に直す」
をやりたくて、調べてやってみたという備忘録です。
まずはコピペ
まずは「ティラノ 小数点 整数」でググり
(いつもお世話になっております)
記事からスクリプトサンプルをコピペ
[eval exp="f.hoge =3.15470"]
[emb exp="Math.floor(f.hoge)"]
[l][r]
※わたしのビルダー画面ではこう
![スクリーンショット (291)](https://assets.st-note.com/production/uploads/images/71057530/picture_pc_6700dfbf38f2b8d4f4eaf8957152fb1d.png)
そのままプレビューしてみると
![スクリーンショット (296)](https://assets.st-note.com/production/uploads/images/71055908/picture_pc_960a34c8046f074f2f07ad664f59e7ca.png?width=1200)
こうなっちゃいます。
んおあ!?
上は変数の中身をエンティティ(&f.○○←変数の名前)でテキスト配置表示したもの、下は[emb]タグでメッセージ内に表示したものです。
※参考※
しかしembはembという仮の入れ物みたいなアレらしく、コピペした状態だと「f.hogeの中身を整数に直したやつをembに突っ込んでメッセージに出す」という状態みたいです。
だからf.hogeの中身自体はまだ小数のまま。
しかしこれ後から冷静になって分かったことなので、スクリプト素人わたし、大いに慌てて再ググり。
中身も整数にしたい
次はこちらの記事にお世話になりました!
様々な方法で小数点以下を切り捨てたり四捨五入したりする方法が載っていて、そもそもこれはjavascriptだったんか……と学ぶの巻。
再びスクリプトサンプルをコピペさせて頂き、
(なおfloorは切り捨て、roundは四捨五入だそうです)
[eval exp="f.number = 17.2545"]
[iscript]
f.number = Math.round(f.number * 10) / 10
[endscript]
[emb exp=f.number]
また今回は1の位でOKなので /10)*10を消し
Math.round(f.number)で1の位で四捨五入。
Math.round(f.number / 10) * 10で、10の位で四捨五入
手元のプロジェクトファイルの(変数管理でattackという名前をつけた)変数で再チャレンジ
[eval exp="f.attack =3.15470"]
[iscript]
f.attack = Math.round(f.attack)
[endscript]
[emb exp=f.attack]
[l][r]
※わたしのビルダー画面ではこう
![スクリーンショット (292)](https://assets.st-note.com/production/uploads/images/71057660/picture_pc_b42fe6df546d0d53d532fcda52f698d0.png)
これでプレビューすると
![スクリーンショット (295)](https://assets.st-note.com/production/uploads/images/71057978/picture_pc_6643552bff37e0a6b8684b6d0cfcd6b5.png?width=1200)
わーい!!
ちゃんと変数に入っている数字も少数から整数になりました!!
実際の使用例
今まで攻撃や防御の計算において「割り切れない数字」があると、残りHPも少数になってしまう悩みがあったのですが
例)
敵から59ダメージ
防御で80%カット
→59×0.8=47.2
残りHP200-47.2=152.8
→HP152.8が律義に画面へ表示される
これも整数に直せるので解決!
バフやデバフスキルも「何%アップ」とかができちゃうわけですね
そんな中、実際に組み込んでみたのがこちら
![スクリーンショット (297)](https://assets.st-note.com/production/uploads/images/71058262/picture_pc_8c80f746ec9dfd50bcbaaa4d8c790705.png)
これは「敵のHPがターンの終わりに1.4倍増える」というギミックになります。
ビルダーでは変数の代入や計算は「変数設定コンポーネント」で打ち間違いの心配がなくできるので実際に必要なのは
[iscript]
f.attack = Math.round(f.attack)
[endscript]
だけであると気づきました笑
※なお解説※
リロードボタンが邪魔ですみません!!
最初の敵HP(f.hpenemy)が300
![画像6](https://assets.st-note.com/production/uploads/images/71059296/picture_pc_f083a0e6fa11d11fb8319d52e737666a.jpg?width=1200)
ここに61ダメージが入ります
300-61=239
![画像8](https://assets.st-note.com/production/uploads/images/71059392/picture_pc_87e4f748068aeaf78b7d2eb1896d68fb.jpg?width=1200)
そしてf.hpenemyをf.judge(私が仮でよく使ってる変数)に代入し、f.judgeに0.4を掛け算して「今回どれくらいHPが増えるのか」を計算、
[iscript]
f.judge = Math.round(f.judge)
[endscript]
で整数に直します
239×0.4=95.6
四捨五入して96
![画像9](https://assets.st-note.com/production/uploads/images/71059424/picture_pc_eb8dca932a999684edfd10e4015cefd7.jpg?width=1200)
そして数値をそのまま残しておいたf.hpenemyに1.4を掛け算して残りHPを1.4倍にし、
[iscript]
f.hpenemy = Math.round(f.hpenemy)
[endscript]
で整数に直します
239×1.4=334.6
四捨五入して335
![画像7](https://assets.st-note.com/production/uploads/images/71059379/picture_pc_3934cdfc559671a9802b7fbf930d27da.jpg?width=1200)
またもリロードボタンが邪魔ですみませんが左上の敵残りHPが335になっております。
239+96=335なので今回は誤差なしですやったあ
先人のお知恵のおかげで実装できましたッ……!!
ありがとうございました……!!!!!
※使用ソフト:ティラノビルダーv202
余談
さっきの1.4倍マシュマロお化けは
こちらの
![画像10](https://assets.st-note.com/production/uploads/images/71061038/picture_pc_281f264fd640af718d4bbfc60c7f6f76.jpg?width=1200)
こちらに出てきます(よろしくです)