Verse は float 型 を 浮動小数点数 (1.0、-50.5、3.14159 など) を格納し処理するために使用します。
Verse の float は IEEE 64 ビット float で、つまり、これに含まれるのは、[-2^1024 + 1, … , 0, … , 2^1024 - 1] の範囲の正負の数で、値 NaN (非数:Not a Number) もあります。
float の実装は、次の点で IEEE 標準 と異なります。
NaN値が 1 つだけあります。NaNはそれ自体に一致します。- すべての数値はそれ自体に一致します。2 つの数値が等しい場合、純粋 Verse コードでそれらの違いを観測できません。
0は負になりません。
コード内で事前定義 float 値を float リテラル として含めることができます。float リテラルはコードにおいて、浮動小数点数です。
次の例は、float リテラル 100.0 で 初期化した、MaxHealth という名前の float 変数 の作成方法を示したものです。
MaxHealth : float = 100.0
float の演算
float では数式 演算 と他の float との 比較 をサポートします。
数式演算
Verse の float では、+ (加算)、- (減算)、* (乗算)、/ (除算) の 4 つの基本的な 数式演算 を実行できます。
基本の数式演算 (加算、減算、乗算、除算) を実行し、ポインタ の逆参照値を更新するための結合 演算子 もあります。これらの結合演算子は数式演算の第 1 オペランドに結果を代入したものと同じです。
たとえば、次のコードは CurrentHealth の値をそのまま半分にします。
# 元のヘルス値から始めます
var CurrentHealth : float = 75.0
# 半分にします
set CurrentHealth *= 0.5
#CurrentHealth が 37.5 になります。
符号付浮動小数点数
符号付浮動小数点数は、正、負、または 0 のいずれかの整数です。演算子 - は、- が float の前に付いている場合に (-3.2 など)、float を負数にするために使用できます。
演算子 + は、コードの見た目を整えるのに float の前に使用することもできますが、float の値を変えることはありません。
次のコードでは、「ライフ ドレイン」攻撃により、ターゲットに与えるダメージの 8 分の 1 相当が攻撃者のライフに追加されます。
# 状況を記述するパラメータを設定します
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
# 負ったダメージに応じて現在のヘルス値を増加します。
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
#CurrentAttackerHealth が 100.25 になります。
比較
2 つの値が等しいかどうか、およびそれらの値が異なるかどうかは、それぞれ 失敗する可能性がある演算子 =、<> を使用してテストできます。
数値には順序があるため、失敗する可能性がある演算子 < を使用して、float がもう一つの float より小さいかどうかをテストし、演算子 > では float がもう一つの float より大きいかどうかをテストできます。
失敗する可能性がある演算子 <= を使用して、float がもう一つの float 以下であるかどうかをテストし、演算子 >= では float がもう一つの float 以上であるかどうかをテストできます。
NaN は他の float と同様に比較可能で、NaN は他のすべての float より大きく、それ自体に一致します。
# 状況を記述するパラメータを設定します
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
MaxAttackerHealth : float = 100.0
# 負ったダメージに応じて現在のヘルス値を増加します。
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# 攻撃者が最大ヘルス値を超えて回復しないようにします
if (CurrentAttackerHealth > MaxAttackerHealth):
# 高すぎるので、最大値まで下げます。
set CurrentAttackerHealth = MaxAttackerHealth
# CurrentAttackerHealth is now 100.0.
標準ライブラリ
標準ライブラリ には、float の作成と使用に役に立ち、さらに float でよく使われる数式構造や関数が用意されています。これらの関数の詳細については、「Verse API リファレンス」を参照してください。
持続可能型
浮動小数点値は持続可能な値です。そのため、モジュールスコープの weak_map 変数で使用すると、ゲーム セッションの間中、その値を持続できます。Verse における持続性の詳細については、「Verse で持続データを使用する」を参照してください。