OpenHSPベースのmacOS版HSPです。OS X 10.12.1 / Xcode 8.1で動作検証しています。
この文章はmacOS版HSP v1.0.6をもとに作成しています。
- サウンドプログラミング用の命令セット – Mac版HSPはサウンドプログラミングを手軽にできる環境を作ることを目的に移植・開発されました。そのため、リアルタイム音合成をするための命令を標準で搭載していま す。
- smooth命令などの追加命令・関数 – slider: スライダーを表示する。 – box: 直線で3Dの箱を描画する。 – smooth: アンチエリアシングをON/OFFする – rndf(): 0.0~任意の間の乱数を実数で返す。 – randf() 任意~任意の間の乱数を実数で返す。
- d3moduleの一部を組み込んでいる – 3D座標でのカメラ位置を設定するsetcamと、拡張されたpsetやline命令を使って簡単な3D描画ができます。
- 拡張された命令 – lineはパラメータを6つ指定すると3Dに座標変換して描画します。 – colorの第4パラメータで色の透明度を設定できます。 – gmodeの第1パラメータに8を設定すると、透過保護コピーモードになります。
- bgsrcの挙動 – 枠がなくなるだけでなく、影もなくなります。また背景を透過します。ドラッグで動くウィンドウに設定されます。
- 透過付きのPNGファイルの読み込み – 透過情報ありのPNGファイルの読み込みに対応しています。
- エディター – コンパイラを内蔵しています。 – ヘルプを内蔵しています。 – AltHSPを内蔵しています。
- 未対応の命令がある
- ウィンドウは1つだけしか使えない
- オブジェクトの上限数は各64個
- バッファの上限数は24個
- バッファのサイズの上限は縦2500px 横2500px
- mmload等で使用できるバッファは16個
- inputのp1が文字列型である必要がある
- noteselのp1が文字列型である必要がある
- syscolorに互換性はない
- 拡張プラグインに対応していない
- パスに非ASCII文字が含まれているとコンパイル/実行できない
- Win版エディタにある機能の多くがない
- 実行ファイル自動作成など
- Win版にあるようなサンプルやマニュアルがない
macOS版HSPの命令・関数・システム変数の対応状況をそれぞれ示します。対応状況は以下のような記号で分類します。
- ○ 対応している
- △ 部分的に対応している(独自の仕様になっている)
- × 対応していない
この文章はmacOS版HSP v1.0.6をもとに作成しました。
No. 対応状況 命令 機能
- × comevdisp COMイベントの内容を確認
- × comevarg COMイベントのパラメーターを取得
- × comevent COMイベントの取得開始
- × delcom COMオブジェクト型変数の破棄
- × newcom COMオブジェクト型変数の新規作成
- × querycom COMオブジェクト型変数の作成
- × sarrayconv Variant型との一括変換を行なう
- × assert デバッグウィンドウの表示の制御
- × logmes デバッグウィンドウにデバッグメッセージを送信
- △ button ボタンの表示
- △ chkbox チェックボックスの表示
- △ clrobj オブジェクトをクリア
- × combox コンボボックスの表示
- △ input 入力ボックスの表示
- × listbox リストボックスの表示
- × mesbox メッセージボックスの表示
- × objenable オブジェクトの無効化
- × objimage button命令の画像ボタン化
- × objmode オブジェクトにフォントを適用
- × objprm オブジェクトの内容を変更
- × objsel 指定オブジェクトにフォーカス移動
- × objsize オブジェクトの表示サイズ指定
- × objskip オブジェクトのフォーカス移動の挙動指定
- ○ bcopy ファイルのコピー
- ○ bload バイナリデータのファイルを読み込み
- ○ bsave バイナリデータをファイルとして出力・保存
- ○ chdir カレントフォルダの移動変更
- △ chdpm DPMファイル設定
- ○ delete ファイルの削除
- ○ dirlist 特定ファイル・フォルダの一覧リストを取得
- ○ exist ファイルサイズの取得。ファイルの存在有無の確認
- △ memfile メモリストリーム設定
- ○ mkdir 新規フォルダの作成
- ○ #addition HSPスクリプトファイルを結合
- × #aht AHTファイルヘッダを記述
- × #ahtmes AHTメッセージの出力
- × #cfunc 外部DLL呼び出し関数登録
- × #cmd 拡張キーワードの登録
- × #cmpopt コンパイル時の設定
- × #comfunc 外部COM呼び出し命令登録
- ○ #const マクロ名の定数定義
- ○ #defcfunc 新規関数の定義を登録
- ○ #deffunc 新規命令の定義を登録
- ○ #define 新規マクロを登録する
- ○ #else コンパイル制御を反転
- ○ #endif コンパイル制御ブロック終了
- ○ #enum マクロ名の定数を列挙
- × #epack PACKFILE追加ファイル指定(暗号化)
- × #func 外部DLL呼び出し命令登録
- ○ #global モジュールの終了
- ○ #if 数値からコンパイル制御
- ○ #ifdef マクロ定義からコンパイル制御
- ○ #ifndef マクロ定義からコンパイル制御
- ○ #include HSPスクリプトファイルを結合
- ○ #modcfunc 新規関数を割り当てる
- ○ #modfunc 新規命令を割り当てる
- ○ #modinit モジュール初期化処理の登録
- ○ #modterm モジュール解放処理の登録
- ○ #module モジュールの開始
- × #pack PACKFILE追加ファイル指定(暗号化なし)
- × #packopt 実行ファイル自動作成オプションの指定
- × #regcmd 拡張プラグインの登録
- × #runtime HSPランタイムファイルの指定
- ○ #undef マクロ名の取り消し
- × #usecom 外部COMインターフェースの指定
- × #uselib 外部DLLの指定
- ○ _break マクロループを脱出する
- ○ _continue マクロループをやり直す
- ○ case 比較値指定
- ○ default デフォルト比較指定
- ○ do 条件付き繰り返し開始
- ○ for 指定回数繰り返し開始
- ○ next 指定回数繰り返し終了
- ○ swbreak 比較実行脱出指定
- ○ swend 比較ブロック終了
- ○ switch 比較ブロック開始
- ○ until 条件付き繰り返し終了
- ○ wend 条件付き繰り返し終了
- ○ while 条件付き繰り返し開始
- △ await 一定時間待つ(ACTIVE)
- ○ break repeat~loopによるループから抜ける
- ○ continue repeat~loopでループの最初に戻る
- ○ else if命令の条件を満たしていない場合に処理を実行
- ○ end プログラムの終了
- ○ exec Windowsの外部ファイルを起動
- ○ exgoto 条件を満たしていれば指定ラベルにジャンプ
- ○ foreach 配列変数の要素数だけ繰り返すループ
- ○ gosub 指定ラベルにサブルーチンジャンプ
- ○ goto 指定ラベルにジャンプ
- ○ if 条件を満たしていれば処理を実行
- ○ loop ループの始まりに戻る
- ○ on 数値による分岐
- × onclick マウスクリック割り込み時のラベルジャンプ先指定
- × oncmd ウィンドウメッセージ割り込み時のラベルジャンプ先指定
- × onerror HSPエラー発生時のラベルジャンプ先指定
- × onexit プログラム終了時のラベルジャンプ先指定
- × onkey キー押し割り込み時のラベルジャンプ先指定
- ○ repeat ループの始まりの場所を示す
- ○ return サブルーチンジャンプから復帰
- × run 指定したHSPのAXファイルに制御を移す
- ○ stop プログラムの中断
- ○ wait 一定時間待つ
- × mci サウンド・動画の再生が可能なMCIにコマンドを送る
- △ mmload サウンドファイル・動画ファイルの読み込み
- △ mmplay サウンド・動画の再生
- △ mmstop サウンド・動画の再生停止
- ○ lpeek バッファから4バイト読み出し
- ○ peek バッファから1バイト読み出し
- ○ wpeek バッファから2バイト読み出し
- ○ alloc バッファを確保
- × comres COMメソッドの結果を返す変数の指定
- ○ ddim 実数値(小数点数値)型変数・配列変数の確保
- ○ delmod モジュール型変数の要素削除
- ○ dim 整数値型変数・配列変数の確保
- ○ dimtype 指定した型の配列変数を確保
- × ldim ラベル型配列変数の確保
- ○ lpoke バッファに4バイト書き込み
- ○ memcpy メモリブロックのコピー
- ○ memexpand メモリブロックのバッファサイズを再確保
- ○ memset メモリブロックのクリア(消去)
- × newlab ラベル型変数の初期化
- ○ newmod COMモジュール型変数の作成
- ○ poke バッファに1バイト書き込み。バッファに文字列の書き込み
- ○ sdim 文字列型変数・配列変数の確保
- ○ wpoke バッファに2バイト書き込み
- × axobj ActiveXコントロールの設置
- △ bgscr 枠のないウィンドウを表示・初期化
- × bmpsave ウィンドウ画面をBMPファイルで保存
- ○ boxf 四角形の塗りつぶし描画
- △ buffer 仮想のバッファ画面の用意・初期化
- × celdiv 画像素材タイルのサイズ指定
- △ celload 仮想画面に画像ファイルの読み込み
- × celput 画像素材タイルのコピー描画
- × chgdisp モニタ画面の解像度の変更
- ○ circle 円形の描画
- △ cls ウィンドウのクリア・初期化
- ○ color RGB値のカラー指定
- △ dialog ダイアログを開く
- ○ font フォントの適用指定
- △ gcopy ウィンドウ画面の切り出しコピー描画
- △ gmode 画面コピーモードの設定
- △ gradf グラデーションで四角形の描画
- × grect 回転する四角形で塗りつぶし描画
- × groll ウィンドウの描画基点の設定
- × grotate 四角形の回転コピー
- △ gsel 描画先の変更、ウィンドウの最前面表示・非表示
- × gsquare 任意の四角形でコピー
- × gzoom 変倍(拡大・縮小)して画面コピー
- ○ hsvcolor HSV形式でカラー指定
- ○ line 直線ラインの描画
- ○ mes 文字列の描画表示
- × palcolor 描画パレット設定
- × palette パレット設定
- ○ pget 1ドットの点のRGB値を取得
- ○ picload 画像ファイルの読み込み表示
- ○ pos 描画位置の指定、オブジェクトの表示位置指定
- ○ print 文字列の描画表示
- ○ pset 1ドットの点を描画
- ○ redraw 描画の停止と反映
- △ screen ウィンドウの表示・初期化
- × sendmsg ウィンドウメッセージの送信
- △ syscolor システムカラーの指定
- × sysfont システムフォントの選択
- ○ title タイトルバーの文字列指定
- × width ウィンドウの表示サイズ・表示位置の指定
- × winobj Win32コントロール・コモンコントロールの設置
- ○ abs 整数の絶対値を返す
- ○ absf 実数の絶対値を返す
- ○ atan アークタンジェント値を返す
- × callfunc 外部関数の呼び出し
- ○ cos コサイン値を返す
- △ dirinfo 各種フォルダパスの取得
- ○ double 実数値に変換
- ○ expf 指数を返す
- ○ getease イージング値を整数で取得
- ○ geteasef イージング値を実数で取得
- ○ gettime 現在の日付・曜日・時刻の取得
- △ ginfo 各種ウィンドウ情報の取得
- ○ int 文字列を整数値に変換
- ○ length 配列変数の要素数を返す(1次元)
- ○ length2 配列変数の要素数を返す(2次元)
- ○ length3 配列変数の要素数を返す(3次元)
- ○ length4 配列変数の要素数を返す(4次元)
- × libptr 外部呼出しコマンドの情報アドレスを取得
- ○ limit 一定範囲内の整数を返す
- ○ limitf 一定範囲内の実数を返す
- ○ logf 対数を返す
- × objinfo オブジェクトのウィンドウハンドルを取得
- ○ powf 累乗を求める
- ○ rnd 乱数を発生
- ○ sin サイン値を返す
- ○ sqrt ルート値を返す
- ○ str 数値を文字列に変換
- ○ strlen 文字列の長さをバイト単位で取得
- × sysinfo 各種システム情報の取得
- ○ tan タンジェント値を返す
- ○ varptr 変数データのポインタを返す
- ○ vartype 変数の型を返す
- × varuse 変数の使用状況を返す
- △ getkey キー入力・マウス入力のチェック
- × mcall COMメソッドの呼び出し
- × mouse マウスカーソルの表示位置指定。マウスカーソルの非表示
- ○ randomize 乱数発生パターンの初期化
- ○ setease イージング関数の計算式を設定
- △ stick キー入力情報取得
- △ dup クローン変数を作成
- ○ dupptr ポインタからクローン変数を作成
- ○ mref 特殊なメモリを変数に割り当て
- ○ M_PI 円周率
- × cnvatos ANSI文字列を通常文字列に変換
- × cnvwtos Unicode文字列をASCII(シフトJIS)に変換
- △ getpath ファイルパス文字列の分解
- ○ instr 指定文字列を検索してインデックス位置を返す
- △ noteinfo メモリノートパッドの情報取得
- △ strf 指定文字列への書式変換
- ○ strmid 文字列を指定位置から指定文字数で切り出し
- ○ strtrim 文字列から指定文字を取り除く
- × cnvstow ASCII(シフトJIS)文字列をUnicodeに変換
- ○ getstr 特定区切りでバッファから文字列の切り出し
- ○ noteadd メモリノートパッドで指定行の追加・変更
- ○ notedel メモリノートパッドで指定行の削除
- ○ noteget メモリノートパッドで指定行の取得
- ○ noteload メモリノートパッドでテキストファイルの読み込み
- ○ notesave メモリノートパッドでテキストファイルの出力
- ○ notesel メモリノートパッドで対象バッファの指定
- ○ noteunsel メモリノートパッドで対象バッファの復帰
- ○ split 特定区切りで文字列を切り出して各変数に代入
- × strrep 文字列の置換
- ○ date 使用時点の日付
- ○ file 使用時点で解析されているファイル名
- × hsp30 ver3.0以降使用時
- ○ hspver HSPバージョン番号
- ○ line 使用時点で解析されている行番号
- ○ time 使用時点の時刻
- ○ _debug デバッグモード時
- ○ and 論理積(演算子)
- ○ deg2rad 度をラジアンに変換
- ○ font_antialias アンチエイリアスでフォント設定
- ○ font_bold 太文字でフォント設定
- ○ font_italic イタリック体でフォント設定
- ○ font_normal 通常のスタイルでフォント設定
- ○ font_strikeout 打ち消し線付きでフォント設定
- ○ font_underline 下線付きでフォント設定
- ○ gmode_add 色加算合成コピーモード
- ○ gmode_alpha 半透明合成コピーモード
- ○ gmode_gdi 通常のコピーモード
- ○ gmode_mem メモリ間コピーモード
- ○ gmode_pixela ピクセルアルファブレンドコピーモード
- ○ gmode_rgb0 透明色付きコピーモード
- ○ gmode_rgb0alpha 透明色付き半透明合成コピーモード
- ○ gmode_sub 色減算合成コピーモード
- ○ not 否定(演算子)
- ○ objinfo_bmscr オブジェクトが配置されているBMSCR構造体のポインタを取得
- ○ objinfo_hwnd ウィンドウオブジェクトのハンドルを取得
- ○ objinfo_mode モードおよびオプションデータを取得
- ○ objmode_guifont デフォルトGUIフォントを設定
- ○ objmode_normal HSP標準フォントを設定
- ○ objmode_usefont font命令で選択されているフォントを設定
- ○ or 論理和(演算子)
- ○ rad2deg ラジアンを度に変換
- ○ screen_fixedsize サイズ固定ウィンドウを作成
- ○ screen_frame 深い縁のあるウィンドウを作成
- ○ screen_hide 非表示のウィンドウを作成
- ○ screen_normal 通常のウィンドウを作成
- ○ screen_palette パレットモードのウィンドウを作成
- ○ screen_tool ツールウィンドウを作成
- ○ xor 排他的論理和(演算子)
- × celputm 複数のセルをまとめて描画
- × mmpan パンニングの設定
- × mmstat メディアの状態取得
- × mmvol 音量の設定
- × setcls 画面クリア設定
- ○ sortget ソート元のインデックスを取得
- ○ sortnote メモリノート文字列をソート
- ○ sortstr 配列変数を文字列でソート
- ○ sortval 配列変数を数値でソート
- × devcontrol デバイス制御を実行する
- × devinfo デバイス情報文字列取得
- × devinfoi デバイス情報値取得
- × devprm デバイス制御用のパラメーター設定
- × getreq システムリクエスト取得
- × gfilter テクスチャ補間の設定
- × mtinfo タッチ情報取得
- × mtlist ポイントIDリスト取得
- × setreq システムリクエスト設定
- ○ qins オーディオデータを1サンプル書き込む
- ○ qpush オーディオデータを1スタック書き込む
- ○ qstart オーディオシステムを開始
- ○ qend オーディオシステムを終了
- ○ qplay オーディオシステムを再生
- ○ qstop オーディオシステムを停止
- ○ qvol オーディオシステムのボリュームを設定
- ○ slider スライダーを表示する
- ○ box 直線で3Dの箱を描画する
- ○ antialiasing アンチエイリアシングの設定
- ○ smooth アンチエイリアシングの設定
- ○ setcam 3D座標でのカメラ位置を設定
- ○ onmidi MIDIイベントを設定する
- ○ qframe システムが一度に処理するサンプル数を取得
- ○ qcount 未再生のオーディオスタック数を取得
- ○ clock C言語のclock関数の戻り値を取得
- ○ getmousex スクリーン座標でのマウスのX位置を取得
- ○ getmousey スクリーン座標でのマウスのY位置を取得
- ○ getmousedown マウスが押されていたら1を取得
- ○ qrate システムのサンプリング周波数を取得
- ○ qpi 円周率を実数で取得
- ○ rndf 0.0~任意の間の乱数を実数で取得
- ○ randf 任意~任意の間の乱数を実数で取得
- ○ getfontfamilies システムが提供するフォント一覧を取得
- ○ isretina HiDPIモードなら1を取得
- ○ getretina HiDPIの倍率を取得
- × system 未定義
- ○ hspstat HSPランタイムの情報を取得する
- ○ hspver HSPのバージョン番号
- ○ cnt repeat~loopループのカウンター
- × err エラーコード
- × stat 色々な命令のステータスなどを代入する汎用システム変数
- ○ mousex マウスカーソルのX座標
- ○ mousey マウスカーソルのY座標
- × mousew マウスホイール値
- ○ strsize getstr命令で読み出したByte数
- ○ refstr 文字列を保存する汎用のシステム変数
- ○ refdval 実数値を保存する汎用のシステム変数
- ○ looplev repeat~loopのネストレベル
- ○ sublev サブルーチン(モジュール)のネストレベル
- × wparam 割り込み時に保存されるWindowsのシステム値(wParam)
- × lparam 割り込み時に保存されるWindowsのシステム値(lParam)
- × iparam 割り込み要因を示す値
- ○ thismod 現在の有効なモジュール変数
- × notemax メモリノートパッドの行数
- ○ notesize メモリノートパッドの文字数
- × hwnd 現在のウィンドウハンドル
- × hdc 現在のデバイスコンテキスト
- × hinstance 現在のインスタンスハンドル
- ○ ginfo_mx スクリーン上のマウスカーソルX座標
- ○ ginfo_my スクリーン上のマウスカーソルY座標
- × ginfo_act アクティプなウィンドウID
- ○ ginfo_sel 操作先ウィンドウID
- × ginfo_wx1 ウィンドウの左上X座標
- × ginfo_wy1 ウィンドウの左上Y座標
- × ginfo_wx2 ウィンドウの右下X座標
- × ginfo_wy2 ウィンドウの右下Y座標
- × ginfo_vx ウィンドウのスクロールX座標
- × ginfo_vy ウィンドウのスクロールY座標
- × ginfo_sizex ウィンドウ全体のXサイズ
- × ginfo_sizey ウィンドウ全体のYサイズ
- × ginfo_winx 画面のクライアントXサイズ
- × ginfo_winy 画面のクライアントYサイズ
- × ginfo_sx 画面の初期化Xサイズ
- × ginfo_sy 画面の初期化Yサイズ
- × ginfo_mesx メッセージの出力Xサイズ
- × ginfo_mesy メッセージの出力Yサイズ
- × ginfo_r 現在設定されているカラーコード(R)
- × ginfo_g 現在設定されているカラーコード(G)
- × ginfo_b 現在設定されているカラーコード(B)
- × ginfo_paluse デスクトップのカラーモード
- × ginfo_dispx デスクトップ全体のXサイズ
- × ginfo_dispy デスクトップ全体のYサイズ
- ○ ginfo_cx カレントポジションのX座標
- ○ ginfo_cy カレントポジションのY座標
- × ginfo_intid メッセージ割り込み時のウィンドウID
- × ginfo_newid 未使用ウィンドウID
- ○ dir_cur カレントディレクトリ(フォルダ)
- ○ dir_exe 実行ファイルがあるディレクトリ(フォルダ)
- × dir_win Windowsディレクトリ(フォルダ)
- × dir_sys Windowsシステムディレクトリ(フォルダ)
- × dir_cmdline コマンドライン文字列
- ○ dir_desktop デスクトップディレクトリ(フォルダ)
- × dir_mydoc マイドキュメントディレクトリ(フォルダ)
AltHSPとは、Javascriptを意識した独自の構文のコードをHSPで動作するコードに変換するコード変換器です。macOS版HSPに内蔵されたコード変換器を使用しすることができます。
C#やJavaなどのクラスの構文に近い書き方でモジュール関連の操作を記述できます。例えば次の ようなHSPコードがあるとします。
#module a x,y,z
#modinit int p1,int p2,int p3
x=p1:y=p2:z=p3
return
#global
newmod v,a,1,2,3
AltHSPでは次のように書くことができます。
class a {
var x
var y
var z
init(int p1, int p2, int p3) {
x=p1
y=p2
z=p3
}
}
v = new a(1,2,3)
基本的にHSPと同じ文法です。例えば次のようなHSPプログラムの場合は何も変換しません。
screen 0,640,480
mes "メッセージを表示します"
HSPはモジュールという機能を持っています。これをクラス構文のように書く機能を提供します。
class クラス名 {
...
}
classという予約語の後に空白文字を入れて、任意の名前のクラスを作成します。{ ... } で囲まれた部分に、クラスの内容を記述していきます。
class クラス名 {
var 変数名
var 変数名
...
}
擬似メンバ変数とは、クラス内でのみ使用できる変数のことです。class文 の次の行に、1行ずつ書きます。初期化を同時にすることはできません。
init(int 引数, str 引数) {
...
}
インスタンス生成時に呼ばれます。{ ... } の中に処理を記述します。
deinit {
...
}
インスタンス削除時に呼ばれます。引数を付けることはできません。
命令と関数は別々の書き方をします。
命令の場合:
func 命令名 int 引数, str 引数 {
...
}
func 関数名(int 引数, str 引数) {
...
return 戻り値
}
戻り値には任意の文字列あるいは数値を指定できます。引数がない場合は次のように書きます。
命令の場合:
func 命令名 {
...
}
関数の場合:
func 関数名() {
...
return 戻り値
}
コンストラクタや命令/関数はローカル変数を持つことができます。ローカル変数は { の次の行から、1行ずつ書きます。
コンストラクタの例:
init(int 引数, str 引数) {
var 変数1
var 変数2
var 変数3
...
}
命令/関数の例:
func 関数(int 引数, str 引数) {
var 変数1
var 変数2
var 変数3
...
}
ローカル変数を用いることで、他のローカル空間の変数との重複を避けることができます。
newを使った代入で、擬似クラスのインスタンスを作成するかのように記述できます。また、クラス名() のようにかっこを必要とします。
変数 = new クラス名(引数,引数)
引数は、コンストラクタ(init)で指定したものを渡せます。クラスを配列に格納したい場合は、addを使用します。
変数 = add クラス名(引数,引数)
変数 = add クラス名(引数,引数)
このようにして配列の末尾に追加できます。
配列に関しては、HSPの書き方と互換性がないのでご注意ください。配列は 変数名[...]の形で作成します。
インスタンス名.命令 引数,引数
あるいは、
戻り値 = インスタンス名.関数(引数,引数)
の形で呼び出します。add を使い配列でインスタンス化した場合は・・・
インスタンス名[0].命令 引数,引数
インスタンス名[1].命令 引数,引数
というようにして呼び出します。
グローバル変数はクラス内を含め、どこからでもアクセスできます。
// ファイルの先頭などのグローバルな空間
var 変数名
var 変数名
var 変数名
...
宣言の位置に制限はありません。また、代入を同時に行うことはできません。
メンバ変数はクラス内からのみアクセスできます。
class クラス名 {
var 変数名
var 変数名
var 変数名
...
}
メンバ変数は class文 に続く行から書きます。代入を同時に行うことはできません。
命令や関数の内部でのみ使用できる変数です。
func 命令名 {
var 変数名
var 変数名
var 変数名
...
}
func文 の次の行から書きます。代入を同時に行うことはできません。
配列は次のように扱います。
変数名[0] = 100
変数名[1] = 200
...
文字列や実数型の配列は事前に必要となる分を確保する必要があります。
sdim 変数名,50
変数名[0] = "文字列"
変数名[1] = "文字列"
...
配列の書き方は上記の一択となります。HSP本来の書き方とは互換性がなくなるので、ご注意く ださい。
C言語などに近いforループを使うことができます。
for i=0; i<10; i++
...
loop
セミコロン(;)で3つに区切ったそれぞれに、左から次のように書きます。
- 変数の初期化
- ループの条件
- ループ毎に変数にする処理
これに伴いHSP標準マクロの for文が、使用できなくなるのでご注意ください。
配列の内容を1つずつ取り出すことができます。
each 配列変数, 要素
...
loop
要素には変数を指定します。配列変数に格納されている値を順に取り出します。
変換器は//から始まるコメントを削除しますが、それ以外のコメントは削除しません。前後の空白や何もない行は削除されます。
文字列に全角空白を除く空白文字と、日本語を混在させることはできません。例えば次のようなプログラムは意図通りの動作はしません。
変数A = " 文字列"
このような場合は、全角空白をお使いください。
変数A = " 文字列"
また日本語が混在する場合、次のような初期化の書き方はできません。
変数 = {"
文字列
文字列
"}
改行のためのエスケープ文字をお使いください。
変数 = “\n文字列\n文字列"
:記号を使った複数行を書く構文については、変換できないケースがあるかもしれません。
Javascript版のAltHSPを使ってAltHSPの機能をウェブサイトに組み込むことができます。
jQueryを使用していますので、あらかじめ読み込んでおきます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
続いて dpAltHSP.js をオンラインからダウンロード( https://github.com/dolphilia/althsp )して読み込みます。
<script src="dp-althsp.js"></script>
convertAltHSP関数を使用します。
var result = convertAltHSP( 'mes "Hello World!"' );
引数には変換したい文字列を指定します。変換されたHSPコードが戻り値です。次の例では、テ キストエリア内のコードをコンバートします。結果は別のテキストエリアに出力します。
<textarea id="before">
class a {
var x
var y
var z
init(int p1, int p2, int p3) {
x=p1
y=p2
z=p3
}
}
v = new a(1,2,3)
</textarea>
<textarea id="after"></textarea>
<script>
var code = $('#before').val();
var result = convertAltHSP( code );
$('#after').html(result);
</script>
AltHSPはMITライセンスです。Licensed under the MIT License.
どなたでもご自由に使用できます。生成されたコードの使用についての制限もありません。
macOS版HSPのコードのうち、OpenHSPから派生しているコードはOpenHSPライセンスに準拠しています。それ以外のコードはMITライセンスです。