Last Update : 2008/12/xx
整数値型変数の領域を確保する命令です。命令名の由来は、「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命令があります。
第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
クライアントエリア(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