HSP命令講座 <dim命令>

Last Update : 2008/12/xx

PR HSPの書籍 『逆引き HSP3プログラミング事典 応用編』

dim命令

 整数値型変数の領域を確保する命令です。命令名の由来は、「dimension」(次元配列)から。

 dim 変数, 配列の要素数, ・・・

 dim命令や代入処理で「変数」と言う名の入れ物を用意します。HSPはデフォルトで要素数1個につき4バイト分の領域が確保されます。4バイトは固定です。整数値の範囲は「-2147483648〜2147483647」です。

 たとえば、下のスクリプトはそれぞれ4バイトのサイズが確保された変数が用意されます。HSPスクリプトエディタの[HSP]→[Debugウィンドウの表示]で確認してください。

//	代入処理

	value = 100
//	dim命令 (要素数1個)

	dim value, 1
//	dim命令 (要素数1個は省略可能)

	dim value

 dim命令は変数の中身の初期化としても機能します。最初の数値500の代入は消え、変数valueは0になります。

	value = 500

;	初期化
	dim value

	mes value

■ 関連情報
 dim命令と似たようなものに文字列型変数の確保を行うsdim命令があります。また、HSP3では実数値型変数の確保を行うddim命令(dimtype命令のマクロ定義)があります。実数値型は小数点数値のことで、これは1要素が8バイトです。また、HSP 3.2以降でラベル型変数を確保するldim命令があります。

↑TOP↑

数値型配列変数

 第2パラメータは配列変数の要素数(個数)です。「変数」と言う名の入れ物を用意して、そこに仕切りを用意するといったところでしょうか。

 下の3つのコードは、書き方が違いますが同等の処理になります。(4バイト×要素数3=12バイト分)

//	HSP2 & HSP3

	dim value, 3

	value.0 = 200
	value.1 = 3
	value.2 = 36

	mes ""+value.0+" / "+value.2+"
//	HSP3 以降

	dim value, 3

	value(0) = 200
	value(1) = 3
	value(2) = 36

	mes ""+value.0+" / "+value.2+"
//	HSP2 & HSP3

	sdim value, 3

	value = 200, 3, 36

	mes ""+value.0+" / "+value.2+"

 要素表現には、HSP2でサポートしていた「.」(ピリオド)によるものと、HSP3からサポートした「(カッコ)」によるものがあります。「(カッコ)」の場合は要素部分で演算処理を用意できます。

 要素数は最大4次元まで用意できます。多次元配列(2〜4次元配列)の場合は、必ずdim命令で領域確保を宣言しないと、「HSP Error 7 - 配列の要素が無効です」エラーになります。多次元配列はゲーム製作の分野で利用するものですな。

//	HSP2 & HSP3

	dim value, 2, 3

	value.0.0 = 0
	value.0.1 = 10
	value.0.2 = 20
	value.1.0 = 100
	value.1.1 = 200
	value.1.2 = 300
//	HSP3 以降

	dim value, 2, 3

	value(0, 0) = 0
	value(0, 1) = 10
	value(0, 2) = 20
	value(1, 0) = 100
	value(1, 1) = 200
	value(1, 2) = 300

↑TOP↑

サンプル

 クライアントエリア(HSPウィンドウ内)のカーソル座標位置を表示する。

//	マウスカーソルの位置表示
//	(実際には代入する意味はないです)

	dim posision, 2

	repeat
		position = mousex, mousey

		title ""+position.0+" x "+position.1+"

		wait 10
	loop
//	時刻の表示
//	(実際には代入する意味はないです)

	repeat
		time = gettime(4), gettime(5), gettime(6)

		mes ""+time(0)+"時 "+time(1)+"分 "+time(2)+"秒

		await 1000
	loop
//	乱数の表示

	dim value, 10

;	乱数発生
	repeat 10
		value.cnt = rnd(10)
	loop

;	数値表示
	repeat 10
		mes value.cnt
	loop
	dim value, 100

	repeat 100
		value.cnt = cnt
	loop

;	数値表示
	repeat 10
;		要素番号が0と10の倍数だけ
		mes value(cnt * 10)
	loop

↑TOP↑

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

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