嘘の時刻表示

まずはそれっぽい物を作る

さて、まずは作業用のフォルダとclock.hspというファイルを作ってください。今回は後半で画像も使うので、作業フォルダを用意しておくことをお勧めします。

準備が出来たら、早速コードを打っていきます。例によって、いきなりここまで行きます。

	title "デジタル時計"
	width 108,25
	color 0,0,0
	boxf 0,0,319,24
	color 255,255,255
	font msgothic,24,1
	mes "AM 11:26"
	

打ち込み終わったら、コンパイル+実行で動作を確認してください。

黒い背景に白い文字が表示されれば成功です。

今回もまずはある程度ソースコードを眺めたりいじったりしながら、どれがどのような意味を持っているのかを考えてみてください。

HSPの基本的な文法

さて、いよいよ本格的にHSPの文法について覚えて行きましょう。

HSPでは、行の初めにまず「命令」、半角スペースかタブを一個以上おいて「パラメータ」という並びになっています。パラメータが複数ある場合は、,で区切ることになっています。

パラメータというのは、命令の細かい動作を補足するためのものです。例えば「文字を表示してね」といったとき、「何という文字を表示するのか」という事をパラメータで補足するわけです。パラメータは命令によって順番や個数が決められています。

font命令には三つのパラメータがあります

font命令を例にとってみてみましょう。この命令は、次からmes命令で文字を表示する時、どのように文字を表示するかを設定する命令です。第一パラメータはフォントの名前を「文字列」で書きます。文字列とは、"で囲まれた文字の事です。第二パラメータは数値で文字の大きさを、第三パラメータは数値を足し合わせて文字のスタイルを指定します。1が太文字、2が斜体、4が下線、8が打ち消し線、16はアンチエイリアスです。1+4で5を指定すれば、太字になって下線が引かれます。

文字列については、もう少し細かい決まりがあります。例えば、文字列を表すために"を使ってしまっているため、"自体を文字列の中に普通に含める事はできません。"を入れたいなら、¥"と書きます。¥事態を含めたいときには¥¥と¥を2つ重ねると一つの¥として扱われます。また、文字列中に改行を入れたいときには、¥nと書きます。

文法の細かい決まりをまとめておきます。

コンピュータにとっての色と大きさ

さて、先ほどのソースコードを上から順にみて行きましょう。ソースコードは通常上から一つずつ順番に実行されていきます。

最初の2行でまずウインドウの準備をします。

title p1

width p1,p2

幅や高さは数値で指定します。数値の単位は「ピクセル」です(ドットということもあります)。これは、画面上の大きさの最小単位です。

続いて、背景を塗りつぶします。そのために色を設定します。

color p1,p2,p3

コンピュータは色を言葉では理解できません。黒とか赤とか空色とか言っても全然ちんぷんかんぷんです。コンピュータのディスプレイは光の三原色を使って色を表現しています。赤、緑、青の三色です。一つの色の光具合を0(光らない)から255(もっとも光る)までで調整し、好みの色が出るまで調節していく事になります。(255,255,255)白、(255,255,0)黄色、(255,0,0)赤、(0,0,0)黒、なんていう風になっています。

様々な色が表現できます

続いて、ウインドウをその色で塗りつぶします。使用しているのは四角形を描く命令です。

boxf p1,p2,p3,p4

パラメータは四角形の「座標」です。ウインドウ上やディスプレイ上の場所を指定するもので、横の場所がどこ、縦の場所がどこ、というのを数値で指定します。横の座標を「x座標」といい、一番左が0、右へ進むと数値が大きくなっていきます。縦は「y座標」で、一番上が0、下へ行くと数値が大きくなっていくます。

この座標もピクセル単位で設定します。

右へ行きたいときはx座標を大きく、下へ行きたいときはy座標を大きくします

続いて、そのまま文字を表示すると見辛いので、文字の表示方法を変えます。

font p1,p2,p3

mes p1

さて、一応見やすく時間みたいなものが表示されたわけですが、全く今の時間でも何でもない時刻です。続いて、現在の時間を調べて表示してみましょう。

コラム:2進数、16進数、ビット演算

font命令の第3パラメータは、複数の数値を足して同時に色々なスタイルが指定できます。しかし、どのような数値が足し合わせれているかをどのように判定するのでしょうか?例えば7=1+2+4で太字、斜体、下線です。

コンピュータは回路です。ですから、数値をそのまま扱うようなことはできません。そこで、スイッチを用意して、ONになっているときは1、OFFのときは0、なんて感じに対応させました。そして、この1と0だけで全ての数値を表す決まりを作りました。これを「2進数」といいます。

普段私たちが使っている0,1,…,9という数字は、10進数と言います。10まで行ったら二けた目に繰り上がりますが、2進数は2ですぐ繰り上がります。つまり、1,10,11,100,101,110,111,1000といった感じです。それぞれの位は、1の位、2の位、4の位、8の位…と、2の累乗です。そして、この一つ一つのスイッチ、つまり桁の部分を「ビット」と呼びます。

実は、font命令の足し算する数値は全て2の累乗です。つまり、それぞれ2進数で表せば、1は1、2は10、4は100、8は1000、16は10000です。足し算をしてみると、7=1+2+4、二進数で表せば111となり、どの数値が足されているのかが一目瞭然です。

そこで、各ビットが1なのか0なのかを調べる方法が存在します。「AND」演算と呼ばれるもので、二つの数値が両方とも1の時だけ1、どちらか片方でも0なら0になります。HSPでは&で表します。例えば、6&3は2進数で表すと110&11なので、2桁目だけが1になって、他は0、つまり10、10進数でいう2になります。これを使えば、各ビットが1か0かが判別できます。

筆算してみると解り易いと思います

ビット演算にはこのほか「OR」(どちらか片方でも1なら1)、「NOT」(1を0、0を1にする)、「ビットシフト」(2進数の数字の桁を右左にずらす)などもありますが、こちらは使う時が来た時にもっと詳しく説明しましょう。

ついでにもう一つ。コンピュータがいくら2進数を得意とするといっても、数値データを全部2進数で表示するととんでもない事になってしまいます。そこで、「16進数」というものが用いられます。0から9まで行って、次はA、B、C、D、E、Fまで行き、次でやっと10です。例えば16進数の16は10進数で言うと22を指していて、2進数だと10110を指します。

2進、10進、16進数の表記が混じっていると混乱するので、16進数には頭に0xを、2進数には0bをくっつけるのが普通です。「0b10110 = 22 = 0x16」という具合です。

目次へ戻る