投稿
なかにし rarigo1227
今、作っているゲームで、スクショのようなスコア表示のシステムを作ったところ、???な部分があり、困っています。 自分がやりたいのは、「スコアをスプライトで、かつ、常に8ケタで表示する」ということなのですが、何故か999,990(99万9990)点までは問題なく動くのに、1,000,000(100万)点以上になるとケタがずれて、実際の点数とSPの表示が一致しなくなってしまいます。 また、製作中ゲームのスコアの最小単位は10点にするつもりなので、これは使いたくないのですが、何故か、最小単位を100点にすると、100万点を越えても、狂いがなくなります。 チラッと見て、何か分かる方がいらしましたら、アドバイス等頂けないでしょうか。 ナニトゾよろしくお願いしますです。 (コメントでリストを貼ります)
2そうだね
プレイ済み
返信[1]
親投稿
なかにし rarigo1227
すみません!途中でバッテリーが切れてしまい、大変遅くなりました。 で、リストはこんな感じです。 ちなみに、100万点を越えた後のスコアを普通にPRINTで表示すると、 (つまり、 ? SCORE ということ) 「1.001p64921001」みたいな(正確ではないけど、こんな雰囲気)のが出てきて、完全にお手上げになりました。 また、完全な我流のため、リストの書き方がなってないと思われますが、そのへんはご勘弁を。
0そうだね
プレイ済み
返信[2]
親投稿
ようすけ youslzh
入力したスコアをスプライトで表示するプログラム。
0そうだね
プレイ済み
返信[3]
親投稿
ようすけ youslzh
カッコいいやり方は模索ヨロシク!
0そうだね
プレイ済み
返信[4]
親投稿
こうやま kouyama1967
 三つ上の画像の11~17行目ですが、「FORMAT$」という命令を使うと、もっとコンパクトにおさまると思います。ヘルプで調べてみましょう。
0そうだね
プレイ済み
返信[5]
親投稿
スー thanks_0u0
こんな感じでもきっと動きますよ( ´ ω ` )ノ FORMAT$を使って桁を揃えているのと、デフォルトでは英数字のアスキーコードとSPDEFの指定値が同じになっていることを利用しています。 最後までは確認していませんけれど、100万までは正常だったと思います(・u・)
0そうだね
プレイ済み
返信[6]
親投稿
けい kei0baisoku
大きくなるとずれる原因はズバリ「STR$関数の仕様」だと思うのですが、自分で試すと100万はまだ大丈夫でした……… もっと大きな値だったりしませんでしょうか? 何人かの方が提案されてるようにFORMAT$()で文字列→スプライト、が一番スマートぽいです。
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
1,000,000以上の実数をSTR$関数で文字列に変換すると 1.00089e+06の様な指数表示になる仕様のようです。 常に8桁で表示を行うのでしたらFORMAT$関数を使うと IF命令を羅列しなくても常に8桁で数字の整形ができます。 FORMAT$関数のヘルプに記載されている書式文字列の 補助の項目に目を通してみて下さい。 なかにしさんのやりたい表示方法が記載されていますよ。
0そうだね
プレイ済み
返信[8]
親投稿
なかにし rarigo1227
ようすけさん、わざわざリストまで提示していただきありがとうございます。 明日、ガイドブック片手に読み解いてみようと思います。
0そうだね
プレイ済み
返信[9]
親投稿
なかにし rarigo1227
こうやまさん、スーさん、けいさん。 FORMAT$()ですか。 それこそ、ガイドブックまで持っているのに、知っていることしかやらないという、悪いクセでした。 こちらも、明日、調べてみます! ありがとうございました!
0そうだね
プレイ済み
返信[10]
親投稿
なかにし rarigo1227
otta777さん。 それですソレ(思わず興奮)! まさにそんな文字列でした! 「指数」というのが、既に自分には何なのか分かりませんが(苦笑)、うーむ、仕様なのですか。 数列のはずが、アルファベットが急に登場したため、知識のないワタクシとしては、?????となってしまいました。 わざわざ、情報をありがとうございました!
0そうだね
プレイ済み
返信[11]
親投稿
なかにし rarigo1227
皆さん本当にありがとうございました。 感謝感謝です! で、ちょっと補足で。 けいさん。 すいません、上で答え忘れてますが、自分がやると確かに100万点以上でズレが出ました。 具体的に言うと、100万を越えると1の位(一番右)のゼロがゼロでなくなります(最小単位が10点なので、そこが動くことはないはずなのに)。でも、100万点の「1」はたしかに左から2ケタ目に来ている、という状態。要するに、1,002,350点がSPでは「01000235」になっているようです。 スーさん。 お答え頂いておいて、こんなこと言うのは失礼かもですが、一瞬、別人!?となって、スーさんのページまで確認しに行ってしまいました(笑) いやはや、驚きましたよ。 これからも宜しくですー。 ゲームの方はこんな感じ(右上参照)のヤツにしたいなー、と正月頃から「う~」とか唸りつつ、なんとかカタチになって来た感じです。
1そうだね
プレイ済み
返信[12]
親投稿
けい kei0baisoku
>なかにしさん わざわざ詳細ありがとうございます(^O^) otta777さんのコメントも踏まえて調べてみましたところ、整数型か実数型かによる違いでした。 私は整数で試してましたので、その違いですね。 ? STR(1000000) →1000000 ? STR(1000000.0) → 1e+6
0そうだね
プレイ済み
返信[13]
親投稿
けい kei0baisoku
せっかくですので「指数表記」についても少し。 「1e+6」は「1×10の6乗」という意味になります。 「1.00562e+6」なら1005620ですね。 何でこんな直感的じゃない書き方があるのかと言いますと、極端にゼロに近い値や極端に大きい値を普段の表記で書くと、桁が大きすぎて分かりづらくなるためです。自然科学などの分野だとそういった桁の大きい値をよく扱うので必要と聞いたことがあります。 例えば、「1無量大数」は指数表記ですと 1e+68 で済みますが、普段の表記ですと……… スパムみたいになるので自重します(´з`)
0そうだね
プレイ済み
返信[14]
親投稿
なかにし rarigo1227
1e+6なんて、すごい分かり辛い表現ですね。 まあ、でも確かに分かる人には便利(というか、ごく一部の人にとっては無ければやってられない)なのでしょうが。 まさか、中でそんなことになっているとは思いもしなかったので、PRINTで出てきたときに、「なにこれこわい!」と結構本気でビビりました(笑) 解説していただき、ありがとうございました!
2そうだね
プレイ済み
返信[15]
親投稿
ようすけ youslzh
エクセルでも桁が多いときそんな表示になりますね。そんな1割未満の人しか喜ばない機能が標準仕様っていうのもなんだかなと思います。むむむ
1そうだね
プレイ済み
返信[16]
親投稿
けい kei0baisoku
「なにこれこわい」w うん、確かに知らないと完全に電波系な表示ですね(^^; そう言えばプログラムの世界だと割りと常識ですが、「指数表現で助かった!」って場面には未だお目にかかってないですね………(´ω`) エクセルとかも、まだ下の桁を省略してくれた方が助かることが多い気が(´з`)
1そうだね
プレイ済み