HSPの使いこなし 使い始め:2006-02-24〜常時更新

HSPは無料のWindows開発プログラムです。最初は簡単なプログラム言語と思いましたが、若干癖もあるので、このページに情報をまとめておくことにします。HSPのバージョンはHSP3を使用しているので、それ以前のバージョン特有の情報はここにはありません。


◆入手
  ONION SOFT の このページ からダウンロードできる。
  HSP3のページに入門書の紹介有り。10冊程度出版されている。


◆価格
  ・無料


◆特徴
  ・言語そのものがOSであった頃の昔のBASIC(N88−BASIC)風の言語仕様
  ・「お作法」や「儀式」が必要ないので言語入門者には最適
  ・GAMEプログラムの開発が得意だが普通のビジネスプログラムの開発も出来る
  ・HSPを扱ったホームページも多数。入門言語だけあって初心者向きに書いてある物が多い。「配列とはなんぞや」とかいったことから書いてある

◆注意点など
  ・間違った命令の使い方をすると「エラーを出す」のではなく「間違って動く」事がある。この点は初心者向きではない。
  ・一部の命令はDirectXが必要。
   浮動小数点文字列−>浮動小数点数値変換(str2f命令)も、このDirectXが必要になる。
   但し、以下に書いた方法で型変換出来るので、この命令の必要性は感じない。
  ・型無し言語なので変数は宣言しないで使えるが、明示的に宣言する方法も無い(たぶん)。変数の型が時々解らなくなる。
  ・言語バージョンアップ時のソースコードの上位互換性は低いようだ。
  ・自作USBハードウェアとの接続にはDLL_CALLもしくはプラグイン(命令を拡張するモジュール)開発が必要になり、
   この言語の良いところが失われるため不適。プラグインはC言語で開発するみたいだ。
  ・構造体はない。
  ・変数のスコープが全てGLOBALなので(一部例外有り)大きなプログラム(2000行を超えたあたり)は作りにくい。
  ・行数の大きなテキストファイルは処理速度が遅い。10000行を超えたあたりからひどく遅くなり始める。(Pen4 2.3GHzにて)

◆テクニック、定石

  ・型変換
    左側の変数に型変換されるというルールがあるので。例えば実数文字列を実数数値に変換したい場合、以下のようにするとaに実数の123.456を代入できる。
    str2f命令というのもあるが、安定して動作しない。(この命令を使って変換した変数を座標値としてLineを書いたら描画されるときと描画されないときがある)
    例)
    str = "123.456"
    a = 0.0 + "123.456"
    追記)
      a = double("123.456") とすればいいみたいです。
  ・ラジオボタン
    HSPにはチェックボックスはあるが、ラジオボタンがありません。
    ラジオボタンとは複数のチェックボックスを1つのグループにして、そのうちどれか一つだけしか押せないようにする物。
    ラジオボタンの名前の由来はたぶん昔のラジオの選局ボタン(カーラジオの)。選局ボタンなのでどれか一つしか押せません。
    ラジオボタンを作りたいときはこんなふうにすればOK
    例)
    ;こうやってボタンを作って
     chkbox "check button 1",ck1_sel

     ck1_id = stat
     sendmsg objinfo (ck1_id, 2), $F4, $9
     chkbox "check button 2",ck2_sel
     ck2_id = stat
     sendmsg objinfo (ck2_id, 2), $F4, $9

    ;こんなふうにボタンが押されているか調べる
     sendmsg objinfo(ck1_id,2),$f0,0,0
     ck1_sel = stat
     if ck1_sel = 1 {
       mes "check button 1 selected"
     } else {
       mes "check button 2 selected"
     }


    本来ならば、変数ck1_selやck2_selにチェックボックスが選択されているか否かが1or0で格納されるはずだが、sendmsgで操作しているためダメみたい。

  ・無限ループ
    repeat
      処理
    loop
    のように、repesatにループ回数を指定しなければ無限ループになる


◆開発事例

  1.翼型スチロールカッター (開発中)