HSP講座

HSPとは、プログラミングを学ぶのに最適な無料のスクリプト言語システムです。
1996年に公開されてから現在に至るまで、多くの人に利用されており、今なお進化し続けています。
私が公開しているフリーゲームも、HSPで作られています。
他にも使い方次第で様々なものが作れます、あなたがゲームやツールを作りたいと考えているなら是非使ってみてください。

第0回:HSPはここがスゴイ!
第1回:導入方法
第2回:文字を表示させてみよう
第3回:変数を使ってみよう
第4回:色を変えてみよう
第5回:分岐処理
第6回:繰り返し処理

トップに戻る
第0回:HSPはここがスゴイ!

まずはHSPの優れている点を列挙していきます。

・導入が簡単

HSPならツールをダウンロードするだけで開発環境が整います。それ以外の作業は一切必要ありません。

・ソースコード単体で動作可能

他のスクリプト言語では、ソースコード以外にも画面部分を別に作成しないと正常に実行しない場合があります。
しかし、HSPの場合はそういうものはありません。必要なファイルはソースファイルだけです。

・資料が豊富

HSP用に書かれたソースコードを公開しているサイトはネット上にたくさんあります。
「hsp ○○」で検索すると大抵お目当てのソースコードが見つかります。

・実行が簡単

例えばC言語で実行する場合はコマンドプロンプトというものを使って、一々文字を打ち込まなければいけません。
しかしHSPならキーを一回押すだけで、実行に必要な全ての処理が自動で行われます。


次回は実際にHSPを使えるようにする方法を教えます。


先頭に戻る
第1回:導入方法

それではHSPを実際にパソコンに導入してみましょう。

HSPの導入には、PCにインストールする方法と圧縮ファイルを解凍する方法の2種類がありますが、後者の方がオススメです。
理由はHSPのツール自体をUSBなどに入れて持ち歩けて、他のPCなどでも使うことができるからです。
また、削除するときもフォルダごとゴミ箱に入れるだけで済みます。

1.まずはこちらのURLに飛びます。

http://hsp.tv/make/downlist.html


2.次に「hsp34a.zip」という項目をクリックして圧縮ファイルをダウンロードします
※画像はhsp34公開時のもの

ダウンロードサイト


3.圧縮ファイルを解凍します

解凍する場所はデスクトップでもCドライブ直下でも、どこでも構いません。
ただし、どこに解凍したかはきちんと覚えておいて下さい。後で「どこに解凍したっけ?」と探す羽目になって大変です。


4.hsed3.exeを開きます

解凍したフォルダを開くと、フォルダやファイルがズラーッと並んでいます。
真ん中辺りにhsed3.exeというファイルがあるので、それを開いてください。
するとこんな画面が出てきます。
hspツール



これであなたのPCでHSPを使う準備が整いました。

ええ、本当にこれだけです、簡単ですね。
ネット上でソフトをダウンロードしたことのある人なら、まず迷わないでしょう。

次回は文字列の書き方と、文字列表示する方法を教えます。


先頭に戻る
第2回:文字を表示させてみよう

HSPで文字を表示させてみましょう。
表示させる文字列は、プログラミング入門お決まりのHello World!です。

では前回開いたファイル(hsed3.exe)に以下の文字列を書き込んでください。
使い方はメモ帳と同じです。

	mes"Hello World!"

そしたらF5キーを押します。
これでウィンドウに「Hello World!」と表示されます。
以上です、とても簡単ですね。

F5キーを押すと、実行に必要な処理を全て一括して行ってくれます。
このことは必ず覚えてください、作業時間の短縮になります。
消すときはウィンドウの右上の「×」をクリックするだけでOKです。

◇mesとは

「mes」は文字列を表示させる命令で、C言語で言う「printf」と似たようなものです。
使い方は、mesの後の文字を"(ダブルクォーテーション)で囲むだけです。
また、mesを使って文字列を複数表示させることも出来ます。
以下がサンプルです。

	mes"Hello\nWorld!"
	mes{"
		Hello
		World
		!
	"}

他にも変数を表示させたり、表示位置を変えたり、大きさや色を変えたりなど様々なことが出来ますが、これはいずれ説明します。

次回は変数を使ったソースコードを紹介します。


先頭に戻る
第3回:変数を使ってみよう

変数とは一言でいうと、数字や文字を入れておくための入れ物のことです。
と言っても、経験が全くない人はピンと来ないでしょうから、実際の使い方を説明します。

	hensu0=1
	hensu1=2.0
	hensu2="文字列"

「=」の左側が変数、右側が変数に入れる数字や文字になります。
「hensu0」には「1」という数字。
「hensu1」には「2.0」という数字(実数)。
「hensu2」には「文字列」という文字が入っています。
※文字列を代入するときは上のソースのように「"」で囲ってください。

ではこの変数というものを、どのようにして使うか。
一例として、以下のサンプルのように使用します。

	hensu0=1		//1行目
	hensu1=2		//2行目
	hensu2=hensu0+hensu1	//3行目
	mes ""+hensu2		//4行目

第2回で紹介した「mes」を使った、計算のソースコードです。
1行目で「hensu0」「1」、2行目で「hensu1」「2」を入れています。
次に、3行目は「hensu0」「hensu1」を足してその結果を「hensu2」に入れる、という処理を行っています。
この時、3行目は以下のように書き換えられます。

hensu2=1+2

そして4行目で「hensu2」の中身を表示します。
この時、実行結果には「3」と表示されるはずです。

試しに「hensu0」「hensu1」の数字を変えてみましょう。
表示される数字も変わります。
このように変数に数字や文字を入れることで、その変数自体を数字や文字として扱うことが出来るようになります。

☆変数名を書くときの注意
	aaaaaaaaaaaaaaaaaaaa=1	//OK
	h0000=1			//OK
	へんすう=1		//OK
	012=1			//エラー
	0hhhh=1			//エラー
	mes=1			//エラー

変数名として付けられる文字列の長さに制限はありません。
またHSPの場合、日本語の名前を付けることが出来ます。

しかし、どんな名前でも付けられるわけではありません。
数字のみの名前、もしくは先頭に数字が入った名前は変数として使うことが出来ません。
また、「mes」のように命令として使われている文字列も使えません。

次回は色を指定する方法を教えます。


先頭に戻る
第4回:色を変えてみよう

今回は色を変える方法を説明します。
まず試しに、ソースコードを何も書いていない状態でF5キーを押してみてください。
すると、真っ白なウィンドウが現れると思います。
HSPは実行するだけならソースコードすら必要ありません、これもHSPのスゴイところです。

では次に、以下のソースを書いてから実行してみてください。

	boxf

すると、今度は真っ黒なウィンドウが現れます。
「boxf」「mes」と同じく「命令」を表しており、画面を指定した色で塗りつぶす処理を行います。

この時どういう処理を行ったかと言うと・・・
前回「mes」を用いて文字を表示したとき、文字は黒色で書かれていましたよね。
これは実行した直後は指定されている色が黒色になっており、その色で文字を書いたためです。
上の例では、指定されている色が黒色の状態で「boxf」を行ったので、ウィンドウは黒く塗りつぶされて表示されたわけです。

「boxf」と記述するだけなら見える範囲を全て塗りつぶしますガ、右側に数字を指定することで塗りつぶせる範囲を指定できます。
指定する数字は「boxf 左上の横座標, 左上の縦座標, 右下の横座標, 右下の縦座標」となっています。

では色を変えるにはどうすればいいか。
それには「color」という命令を使います。
指定方法は「color 赤の輝度値, 緑の輝度値, 青の輝度値」となっており、輝度値を指定することで好きな色を指定することが出来ます。
ちなみに輝度値とは色の明るさのことです、0〜255の間で指定できて数値が高いほどその色が強く出ます。

使用例としては以下のとおりです。

	color 255
	boxf 100,100,200,200

1行目の「color」で赤の輝度値を最大にし、緑と青の輝度値を0にした色に設定します。
そして、2行目の「boxf」で指定した範囲を設定した色で塗りつぶしています。
実行結果を見ると赤い正方形が出現したように見えるはずです。

色を変えることで見た目が鮮やかな画面を作れるようになります。
いろいろ試してみてください。

	color:boxf 0,0,300,300
	color 255:mes"赤"
	color ,255:mes"緑"
	color ,,255:mes"青"
	color 255,255,255:mes"白"

次回はプログラミングの基本的な処理である「if文」について説明します。


先頭に戻る
第5回:分岐処理

いよいよ本格的にプログラミングの知識を解説していきます。
今回説明するのは、「if」についてです。

「if」とは「もし〜ならば〜」という意味を持つ英単語です。
プログラムの世界でも同じく「if」の後に条件式を書いて、それが合っているのか違っているのかを確認します。

	a=0
	if a=1{
		mes"aは1である"
	}

上記のソースでは、まず変数aに1を代入し、その後「if」を使った条件式を書いています。
実行してみると何も表示されず、ただの白い画面が出てくるだけです。

それでは試しに、aに1を代入してみてください(1行目を「a=1」という風に書き換えます)。
実行してみると、さっきは何も表示されなかった画面に、「aは1である」と表示されます。

「if a=1{〜}」の部分は、「もし a=1 ならば、 {〜} を実行する」という意味を持ちます。

次は「もし〜でなければ〜」という処理を行ってみましょう。
以下のソースを実行してみてください。

	a=1
	if a=1{
		mes"aは1である"
	}else{
		mes"aは1ではない"
	}

最初にa=1となっているので、「if a=1{〜}」のカッコの中身が実行されます。
次にaに違う値を代入してみてください、0でも2でも、1以外なら何でもいいです。

すると、今度は「aは1ではない」と表示されます。

もう一つ例を挙げます。

	a=1
	if a=1{
		mes"aは1である"
	}else:if a=2{
		mes"aは2である"
	}else:if a=3{
		mes"aは3である"
	}else{
		mes"aは1でも2でも3でもない"
	}

elseの後にさらにifを書くことで、条件式をいくらでも追加できます。
「else:if」の組み合わせはとても便利なので、覚えておきましょう。

以下に条件式として使える記号の一覧を載せます。


関係演算子
意味
a = baとbは等しい
a ! baとbは等しくない
a < baはbより小さい
a > baはbより大きい
a <= baはbより小さいか等しい
a >= baはbより大きいか等しい
論理演算子
意味
a & baかつbなら真(AND)
a | baまたはbなら真(OR)
a ^ baとbが異なれば真(XOR)

中には意味の分からないものもあるかと思いますが、それはまたの機会に説明します。
とりあえず今は分かる分だけ把握できればOKです。

次回は「繰り返し処理」について解説します。


先頭に戻る
第6回:繰り返し処理

今回は「repeat」について説明します
「repeat」はC言語やJavaでいうfor文と似たようなもので、以下のように使います

	repeat 10
		mes""+cnt
	loop

repeatの後にある「10」という数字は、repeat〜loopの中の処理を繰り返す回数を意味します。
そしてcntというのはrepeatの処理を行うときに自動で値が設定される「システム変数」というものです。
repeatの開始時にはcntには0が入り、繰り返し処理を行うたびにcntの値は1ずつ増えていきます。
ですので、上記のソースを実行すると、0から9までの数字が表示されるわけです。

☆repeat文を書くときの注意
繰り返し回数を「記述しない」、もしくは「-1以下」に指定すると、無限ループが起こり、動作が止まってしまいます。
意図的にそういう動作をさせるのでない限りは、そのような記述はしないでください。

繰り返し処理の途中で抜けるには「break」を使います。

	repeat 10
		mes""+cnt
		if cnt=5{break}
	loop

実行してみると、繰り返し回数は「10」を指定しているのに、数字は「5」までしか表示されません
この「break」を活用すれば、例え無限ループになっていても抜け出すための条件がしっかり指定されていれば、任意の回数で処理を終えることが可能です。

また「continue」という命令もあります。

	repeat 10
		if cnt=5{continue}
		mes""+cnt
	loop

実行すると、0から9までの数字が表示されますが、よくみると「5」の数字だけが抜けています。
continueは特定の行以降を実行しないで繰り返しを継続する命令です。
上記の場合は、cntが5になった時にcontinueが実行され、それ以降の行(mes""+cnt)が実行されなかったわけです。

☆repeat文を書くときの注意2
cnt、break、continueはrepeat〜loop間にしか書くことができません。これらはrepeat処理の外側に書くとエラーになるので、注意してください。


次回は配列について説明します。


先頭に戻る