良く使うコマンド / HSP3ヒント
▼ライブラリの選択
#include "d3m.hsp" 3D描画
▼よく使うコマンド
#pack "a.txt" 実行ファイルと一緒にパックする
#epack "a.bmp" 暗号化してパックする
screen 0,1024,800 画面サイズ(0は画面のID複数表示できる)
// ━━━━━━━━━━━ JavaScript
//WEB形式に変換するには、「hsp3dh.exe」を実行する。
//画像などのメディアファイルは\dataフォルダにまとめて入れる。
//コードはパスを記述しなくてもいい
mmload "se_shot_001.wav", 0, 0
celload "enemy02.png", 3
// ━━━━━━━━━━ 画像ファイル(外部ファイル)
//Picload "画像パス", 読み込みモード Bmp, gif, jpg, ico, cur, wmf
//Celload "画像パス", buff-ID, 0
//Celdiv buff-ID, 横分割, 縦分割
//Celput id, 画像番号, zoomY(0.0), zoomY(0.0), 角度(0.0)
celload "enemy02.png", 3
celdiv 3, 100, 66
pos enemy_x(cnt), enemy_y(cnt_y) + enemy_row
celput enemy, enemy_turn * -1
// ━━━━━━━━━━━━━━━━ 変数
#const BG_R 255
Dim a, 5
A(0) = 1, 2, 3
>Mes a(0)
>1
// ━━━━━━━━━━━━━━━━ 画面表示
// -------------------------------
//文字フォント
// -------------------------------
font "Arial",60,2+opt
mes "Arial"
// -------------------------------
// Window タイトル
// -------------------------------
Title "アプリのタイトル" + "文字列可"
// -------------------------------
// Windowのアイコン
// -------------------------------
#packopt icon "safe.ico"
// -------------------------------
// 画像イメージ
// -------------------------------
Celload "xxx.bmp" ; 画像ファイル
objImg = stat ; 画像のIDを保持。画像を読むとstatがカウントされる1,2,3,4
Redraw 0 ;描画開始
Color 0, 0, 64
Boxf ; 背景を消す
Gmode 2 ; 透明色あり
Pos x, y
Celput objImg
; Celput イメージID, 分割画像No,横倍率,縦倍率,角度
Redraw 1 ;描画終わり
// -----------------------------------
// ラインを描く
// ----------------------------------
color 255,0,0 ;赤色
i = 0
repeat 50
line 100,100,100+i,200
i=i+10
loop
// --------------------
// 四角形を描く
// --------------------
boxf 100,100,200,200
// --------------------
// まるを描く
// --------------------
color 255,0,0 ;赤色
circle 100,100,200,200,0 ;四角形に収まる○輪郭
circle 100,300,200,400,1 ;四角形に収まる●塗りつぶし
// ━━━━━━━━━━━━━━━━━━━━ 制御
//--------------------------
// 繰り返し repeat 回数, cntの初期値
// -------------------------
repeat 10
~~
Mes cnt
Cnt ;cntは何もしなくても+1される
loop
// --------------------------
// 行ジャンプ、サブルーチン
// ----------------------------
*main
Wait 10
Goto *main
Gosub *sub
*sub
~~
Return
// --------------------------
// Windowsタスクにリソースをゆずる。処理待ち
// -------------------------
Await 20
Wait [10ms]
// -------------------------------
// 比較
// -------------------------------
及びは、&
もしくは、|
// ━━━━━━━━━━━━━━ 操作INPUT
//--------------------------
// キー入力
// p3: stick key; if key =1 ; 入力1回だけ判定
// p3: stick key,15; if key =1 ; キーを連続押している間(同時には押せない)
// p3: stick key; if key&1 ; 2つ以上のキーを同時受付できる
// ----------------------------
*main
Stick key, 15, p3 ; p3を1にするとアクティブなときだけキー入力する
If key&1 : x=x-speed ;←
If key&4 : x=x+speed ;→
If key&2 : y=y-speed ;↑
If key&8 : y=y+speed ;↓
; 16 space
; 32 enter
; 64 ctrl
If key & 128 : end ;ESC
If key = 128 :end
; 256 マウス左ボタン
; 512 マウス右ボタン
;1024 TAB
Goto *main
// ━━━━━━━━━━━━━━ ユーザー定義関数
// ---------------------------------------
// ユーザー定義関数
// ---------------------------------------
goto *start
#defcfunc plushundred double intValue1, double intValue2
ret = intValue1 + intValue2
return ret
*start
answer = 0
answer = plushundred(10, 100)
pos 100,100
mes answer
stop
// -------------------------
// ユーザー定義関数のローカル変数が重複しても大丈夫なモジュール化
// module, globalを省略するとエラーになる。
// -------------------------
goto *start
;#module
#defcfunc plushundred double intValue1, double intValue2
ret = intValue1 + intValue2
return ret
;#global
*start
answer = 0
answer = plushundred(10, 100)
pos 100,100
mes answer
intValue1 = 200 ;※ここでエラーになる
pos 100,200
mes intValue1
stop