HSP命令講座 <int関数>

Last Update : 2007/10/xx

PR 話題のPCゲームをチェック!

int関数 (HSP 3.x)

 実数値(小数)や文字列数値を整数値へと変換する関数です。関数名の由来は、「integer」(整数)から。

 HSP2では命令形式で提供されてきましたが、HSP3では関数形式に変更されています。下はその違いです。HSP2ではint命令の第1パラメータに変換したい整数値を指定すると、そのまま変換された数値が返りますが、HSP3では関数そのものが整数値を返します。

//	HSP2の場合

	x = "1"

	int x
	mes x
//	HSP3の場合

	x = "1"

	y = int(x)
	mes y

;	つまりは
	mes int(x)

 その他の機能として、int関数を使って16進数文字列を10進数に変換するテクニック。(→ HSP Tips : 16進数を10進数に変換

↑TOP↑

サンプルスクリプト (文字列の数値変換)

 int関数を使った簡単なサンプルコード。HSP3から関数形式に変更されたことで、int関数をmes命令に直接指定することができます。

;	実数の場合は「小数点以下切り捨て」処理
	a = 3.14
	mes int(a)

	b = -3.14
	mes int(b)

	c = 5.7
	mes int(c)

 HSPの演算処理は左方の型で決まることに注意が必要です。「文字」に「数値」を加算(+)したら、結果は文字列同士の結合です。減算(-)、乗算(*)、除算(/)の場合は、計算できないためHSPエラー21「サポートされない機能を選択しました」となります。

;	「100」という文字列
	a = "100"

;	普通に足すと、文字「100」+数値「1」=文字「1001」
	mes a + 1

;	int関数で数値化することで正しく演算できる
	mes int(a) + 1
;	「100」という文字
	a = "100"

;	演算できないためすべてHSPエラー21
	mes a - 1
	mes a * 1
	mes a / 1

 「,」(コンマ)で区切られた数値を1つ1つ取り出して10倍にした数値を表示するサンプルスクリプト。getstr命令strmid関数strf関数noteget命令などの取得した結果は文字列なので、整数値へと変換しないと問題が起こります。整数値を指定しなければならない命令や関数のパラメータに文字列を指定すると、HSPエラー6「パラメータの型が違います」となります。

;	文字列
	data = "10,20,30,40,50"

	i = 0
	repeat
;		「,」区切りで切り出す
		getstr value, data, i, ','

;		文字がなくなったらループを抜ける
		if strsize = 0 : break

		i + strsize

;		× 文字に10を掛けることはムリなのでHSPエラー21
//		mes value * 10

;		× エラーにはならないが、文字同士の結合「文字+数値=文字」
//		mes value + 10

;		○ int関数で数値化
		mes int(value) * 10
	loop

;	× 文字列は指定できないパラメータなのでHSPエラー6
//	pos value

	mes "done!"

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.