HSPのスクリプトエディタをつかってみよう。HSPの基本的な構文も。

この記事はHSP公式サイトの入門編の実践をもとに記事を構築しています。

HSPはスクリプト言語だ。スクリプトを書くためのエディタを前回記事でインストールした。HSPスクリプトファイルの拡張子は.hspとなっているようだ。なぜHSP専用のエディタを使う必要があるのか現時点ではわからない。できれば使い慣れたAtomエディタを使いたいところだ。

もしかするとエディターはあとから変更することも可能なのかもしれないが、現時点ではこの点には触れないことにする。

スクリプトエディタの外観

この時点でどんな構文を書いてよいのかわからなかったので、おもむろにhtmlを書いてみた。とくに意味はない。当たり前だが使い慣れたエディタのショートカットは使えない。
screenshot 20181215 2022
ためしにファイルを保存してみる。拡張子はデフォルトで.hspになっていることが確認できる。そのためとくになにも拡張子を指定しなかった場合は.hspで保存されるということだ。
screenshot 20181215 1947

HSPでHello World的なもをやってみよう

どのプログラミング言語もそうだがhello worldと表示させるのがはじめの目標となる。しかしHSP公式では、画像の読み込みがはじめの目標となる。HSPは.hspファイルが自身がおかれているディレクトリを自動でさがすようになっている。hsp3ttl.jpgを作業ディレクトリにおいておく。
screenshot 20181215 2045

	picload "hsp3ttl.jpg"

この構文を保存して実行すると、ウインドウが立ち上がって指定の画像が表示された。
screenshot 20181215 2048

HSPのコメントアウトは;///**/の3種類だ。また構文の最初にタブスペース分のインデントを持たせるのが慣習のようだ。確認したが一応タブスペースなしでも動作する。

画像を2枚連続で表示させるとどうなるのか

さきほどの画像と色違いの画像をもう一枚用意して、2枚読みこんでみるとどうなるのかをやってみる。

	picload "hsp3ttl.jpg"
	picload "hsp3ttl_2.jpg"

結果としては、一瞬で処理されるので、見た目には一枚目の画像を表示されず2枚目の画像だけが表示される格好になる。
screenshot 20181215 2059

HSPの基本的な命令文

表示させてみよう

画面をクリアさせるには、cls、文字を表示させるにはmesを使う。下の構文を実行するとhello worldが表示される。文字列はダブルクォーテーションでかこう決まりのようだ。

	cls 0
	mes "hello world" //結果: hello world

stop, end, goto, button

stopendgotobuttonステートメントには以下の役割があるようだ。

命令パラメーター意味
stopなし実行を停止する
endなし実行を終了する
gotoラベル指定したラベルにジャンプする
button文字列、ラベルボタンを表示、押された時に指定のラベルにジャンプ

単語のはじめに*アスタリスクをつけることで、ラベルのようなものを表現することができる。gotoでラベルを指定すると。そこにジャンプする。

*hata1
	cls
	goto *hata3
*hata2
	mes"hello world"
*hata3
	mes "hello world by hata3" // 〇

次にbuttonを使ってみよう。buttonにはさきほどのラベルのようなものを引数としてもたせる必要がある。引数はカンマ区切でOKのようだ。

*hata1
	cls
	mes "which button do you want?"
	button "push button1",*hata2
	button "push button2",*hata3
	stop
*hata2
	mes"pushed by button1" // button1をおせばこちら
	stop
*hata3
	end // button2をおせばこちら

buttonをおせば引数に指定したラベルにジャンプする。button1をおせば”pushed by button1″と表示される格好だ。ここでendとstopの違いはなにか?と疑問をもったかもしれない。stopは一時停止(待機状態)。endはhspが終了しウインドウが閉じる。

pos, color, execをつかってみよう

posカレントポジションというものを変更できる。colorは色を変えることができる格好だ。興味深いのはposだ。posで座標を指定すると。mesで文字が表示される位置すら変わるのだ。

命令パラメーター意味
posX座標とY座標指定した座標をカレントポジションにする
colorRテキストの色を指定する
exec文字列指定したプログラムを実行

このあたりでなにかhspの癖のある挙動みたいなものを感じた。自分でコードを書いて実行してみることをすすめる。

*hata1
	pos 30,200
*hata2
	button "OK",*hata3
	button "hata4",*hata4
	stop
*hata3
	mes "button OK"
	stop
*hata4
	color 255,0,0
	mes "hello world"

screenshot 20181215 2155
表示位置や色が変わっているのが確認できる。地味ではあるが若干衝撃を受けた。

execは指定したプログラムを実行する。たとえばWindowsだとメモ帳が起動できる。buttonと組み合わせれば便利そうだ。

	cls 0
	pos 100, 50
	button "メモ帳",*notepad
	button "終了",*endlabel
	stop
*notepad
	exec "notepad"
	stop
*endlabel //*endは使えない
	end

地味ではあるがたったこれだけの構文で、デスクトップアプリのようなものが作成できたことになる。ちょっと衝撃をうけている。

変数を使ってみよう

プログラミングで必ずでてくるのが変数だ。HSPの変数はどのようになっているのかみてみよう。四則演算は+*/を使うことができる。余りに関してはちょっと特徴的で\円マークを使う(バックスラッシュかも)

	x = 10
	y = 20
	mes x + y // 30
	name = "hspさん"
	mes name + "の年齢は" + y + "歳です" // hspさんの・・・
	mes y\x // 0 → 余りは%ではなく \ を使う 
	x = 100
	y = 200
	pos x, y
	mes "hello world"

変数とはなんぞやというのはここでは解説しない。変数の使い方に関しては他のプログラム言語と大差ないようだ。

一行に複数の命令

HSPは構文が短いので1行に複数命令はよくつかいそうだ。複数命令を書くには:で区切ればよいようだ。

	mes "he": mes "ll": mes "o"

条件分岐を使ってみよう

HSPの条件分岐はif文を使うようだ。公式の入門では比較演算子は=!><がかかれていたが他にもあるかもしれない。

	x = 1
	if(x > 0){ 
		mes "xは0より大きい"
	}else{
		mes "xは0もしくは0より小さい"
	}
	y = 1
	if y > 0: mes "yは0より大きい" // 1行で書くことも可能

if文を1行でかっこを省略しても可能のようだ。コロンを使っている点に注目だ。

HSP公式の入門はここで終了

HSP公式の入門編はここで終わりだ。繰り返し処理や関数などには踏み込まない形だった。入門編を終えてHSPの基本的な部分は理解できたような気がする。構文は記号の羅列っぽく見えるが実際には非常に簡潔な構文であるという印象をうけた。あとは少ないコードでアプリっぽいのができるのが結構すごいと感じた。

今後HSPで簡単なシューティングゲームを作る予定だが、コードが読めないのが90%。ネット上の資料が古いのが10%くらいあり、挫折する可能性大。


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78