HSP3 プログラミングの基礎X
前へ 目次へ 次へ 

(1) 実行ファイル

 HSP言語のようにプログラムの命令や関数は、英単語や略号で構成されている。これは人間が覚えやすいように考えられているだけで、コンピュータには理解できないものである。コンピュータの頭脳に当たるCPU(中央処理装置:Central Processing Unit)が理解できるのは電気が流れているかいないかの情報だけである。一般的に、電気が流れている状態を1、流れていない状態を0で表し、CPUはこの1と0の組み合わせで作られた命令(機械語という)だけが理解できる。

 実行ファイルとは、機械語で作られたプログラムのファイルで、ダブルクリックなどで直接実行することができるようになっている。一般的にファイル名の拡張子には".exe"が付けられ、ほかのファイルと区別できる。

 HSP言語で作成したプログラムは、「HSPスクリプトエディタ」で[F5]キーを押すと実行させることができる。しかし、「HSPスクリプトエディタ」がないと実行できない。「HSPスクリプトエディタ」がなくても実行できるように、HSP言語で作成したプログラムを実行ファイルにすることができる。ある言語のプログラムを実行ファイルに翻訳(変換)することをコンパイルという。

 メニューバーから次のように選択する。または、[Ctrl] + [F9]を押す。

[HSP(P)] → [実行ファイル自動作成(A)]

 実行ファイルを作成すると、プログラムを配布する場合にも便利であるし、プログラムの中身(プログラムリスト)も見られなくて済む。



実行ファイル作成

サンプル次のプログラム(exec1.hsp)を使って、実行ファイルを作成する。
 画像を(100, 100)から(400, 100)まで移動する。 move2.bmp (31KB)

;exec1.hsp
    buffer 1
    picload "move2.bmp"    ;画像読み込み
    screen 0, 640, 480
    title "実行ファイル作成サンプル"
    kaisu = 30
    x1 = 100 : x2 = 400
    y = 100
    dx = (x2 - x1) / kaisu
    gmode 2, 32, 32         ;コピーモード設定
    repeat kaisu
        redraw 0
        color 0, 0, 0
        boxf
        pos x1 + dx * cnt, y
        gcopy 1, 0, 0
        redraw 1
        await 100
    loop
    color 255, 255, 255 : pos 0, 0
    mes "[Esc]キーで終了します。"
    repeat
        stick kk
        if kk = 128 : break
        await 100
    loop
    end

 サンプルのプログラムを適当なフォルダに保存してから実行ファイルを作成する。実行ファイルの作成は、次のようにメニューバーから選択する。

[HSP(P)] → [実行ファイル自動作成(A)]

 処理が完了すると、「実行ファイルを作成しました」とダイアログが表示されるので、[OK]ボタンをクリックする。

実行サンプルのプログラムを保存したフォルダ内に実行ファイル「hsptmp.exe」が作成される。「hsptmp.exe」をダブルクリックすると実行することができる。


 マイ コンピュータやエクスプローラでファイルの一覧を表示させてもファイル名だけで、拡張子が表示されないように設定されている場合がある。拡張子も表示するように設定するには、メニューバーから次のように選択して設定のダイアログを表示する。
[ツール(T)] → [フォルダ オプション(O)...]
 フォルダ オプションのダイアログの詳細設定で、「□ 登録されている拡張子は表示しない」のチェックをはずして[OK]ボタンをクリックする。これで拡張子も表示されるようになる。



自動作成オプション指定

 実行ファイルを作成するとファイル名が「hsptmp.exe」になる。ここでは、実行ファイルのファイル名の設定など、実行ファイル自動作成時に設定できるオプションを示す。

 オプションは、"#packopt"を使って次のように設定する。設定できるキーワードと値(パラメータ)は表の通りである。

#packopt キーワード パラメータ
設定項目 キーワード パラメータ 初期値
実行ファイル名 name ファイル名 "hsptmp"
タイプ type 0 : 実行ファイル(exe)
1 : フルスクリーン(exe)
2 : スクリーンセーバ(scr)
0
初期ウィンドウサイズX xsize ドット(ピクセル)単位 640
初期ウィンドウサイズY ysize ドット(ピクセル)単位 480
ウィンドウ表示 hide 0 : 表示
1 : 非表示
0
ランタイムファイル名 runtime ファイル名 "hsprt"
起動時フォルダ移動 orgpath 0 : 有効
1 : 無効
0


○ 実行ファイル名の設定

サンプル実行ファイル名を「exefile.exe」に設定して、実行ファイルを作成する。

;exec2.hsp
#packopt name "execfile"    ;実行ファイル名設定
    buffer 1
    picload "move2.bmp"    ;画像読み込み
    screen 0, 640, 480
    title "実行ファイル作成サンプル"
    << 省 略 >>

実行実行ファイル「exefile.exe」が作成される。

 作成された実行ファイル「exefile.exe」を実行してみよ。


○ ウィンドウサイズの設定

サンプル初期のウィンドウサイズを500×150(幅500ドット、高さ150ドット)に設定して、実行ファイルを作成する。

;exec3.hsp
#packopt name "execfile"    ;実行ファイル名設定
#packopt xsize 500    ;ウィンドウサイズX設定
#packopt ysize 150    ;ウィンドウサイズY設定
    buffer 1
    picload "move2.bmp"    ;画像読み込み
    screen 0, 640, 480
    title "実行ファイル作成サンプル"
    << 省 略 >>

実行実行ファイル「exefile.exe」が作成される。しかし、実行ファイル「exefile.exe」を実行してもウィンドウサイズは640×480ドットのままである。
 これは、3, 4行目で初期ウィンドウサイズは500×150ドットに設定されるが、7行目のscreen命令でウィンドウサイズが640×480ドットに再設定されるためである。


サンプル問題点を解消して、実行ファイルを作成する。
 screen命令のサイズ設定で640×480ドットに再設定されるので、サイズ設定のパラメータを削除する。

;exec3b.hsp
#packopt name "execfile"    ;実行ファイル名設定
#packopt xsize 500    ;ウィンドウサイズX設定
#packopt ysize 150    ;ウィンドウサイズY設定
    buffer 1
    picload "move2.bmp"    ;画像読み込み
    screen 0
    title "実行ファイル作成サンプル"
    << 省 略 >>

実行実行ファイル「exefile.exe」が作成される。しかし、実行ファイル「exefile.exe」を実行してもウィンドウサイズは640×480ドットのままである。
 これは、screen命令のサイズ設定のパラメータを省略した場合、ウィンドウサイズは640×480ドットで設定されるためである。


サンプル問題点を解消して、実行ファイルを作成する。
 screen命令の代わりにgsel命令でウィンドウIDの0番をカレントウィンドウ(描画先ウィンドウ)に指定する。

;exec3c.hsp
#packopt name "execfile"    ;実行ファイル名設定
#packopt xsize 500    ;ウィンドウサイズX設定
#packopt ysize 150    ;ウィンドウサイズY設定
    buffer 1
    picload "move2.bmp"    ;画像読み込み
    gsel 0
    title "実行ファイル作成サンプル"
    << 省 略 >>

実行実行ファイル「exefile.exe」が作成される。実行ファイル「exefile.exe」を実行すると、ウィンドウサイズは500×150ドットになる。

 screen命令でウィンドウIDの0番を初期化しなくても、すなわち、screen命令がなくてもウィンドウサイズは640×480ドットで用意される。試しに、メニューバーから [ファイル(F)] → [新規作成(N)] で新規に用意して、何も入力しないで実行すると、ウィンドウサイズ640×480ドットのウィンドウが表示される。

 screen命令がなくてもウィンドウサイズ640×480ドットのウィンドウが用意される。しかし、gsel命令がなければカレントウィンドウがbuffer命令で初期化したウィンドウIDの1番のままなので、以下の描画処理はこの1番に対して行われる。buffer命令で初期化したウィンドウは表示されないので、実行結果を見ることができない。


 ほかにも自動作成オプションはあるが、特別な場合以外、使うこともないと思われるので、ここまでとする。


前へ 目次へ 次へ 
2007  © Hiroshi Masuda 

 

 

inserted by FC2 system