変数(へんすう)。「変てこりんな数」ではありません。下のサンプルはaという変数に1という数値を代入しています。
a=7
mes a
下だとどうでしょう。同じ変数に代入してます。上書きされるので、前の数値はなかったことになります。たとえば、答えが足し算されて107とかにはならないので注意して下さい。
a=7
a=100
mes a
これは「a」と「7」が=(イコール)で等しいです、と言っているわけではないんです。変数aという「入れ物」に数値を入れています(=代入)。変数の文字は自由に好きな半角英文字で用意できます。(HSPの場合は大文字、小文字の区別はありません。)
a=7
mes a
bbb=7
mes bbb
suji1=100
mes suji1
suji2=3.14
mes suji2
1つ前の講座の計算も変数同士でできます
a=7
b=10
mes a*b
c=a*b+a
mes c
算数の計算式の書き方とは違うので注意して下さい。下のように書いても変数cに答えは返ってきません。
// これはだめ
a*b+a=c
mes c
変数の話と少し脱線しますが、下のサンプルでは小数点が切り捨てられた答えになっていしまいますが、どうすれば切り捨てられずにすむいと思いますか?
a=5
b=2
c=a/b
mes c
左の数値で小数点の扱いが変わるわけだから、ダミーの小数点「1.0」を掛け算してしまいます。HSPでは覚えておきたいポイントです。(1つ前の計算の解説ページを参照)
a=5
b=2
// 「5.0/b」という計算になる
c=1.0*a/b
mes c
そして、変数は文字列を入れることが可能です。下のサンプルの2番目のmes命令は、文字同士を足し算してるのではなく、文字と文字を結合して表示します。
moji="HSPもじを入れた変数だよーん"
mes moji
a="Hello"
b="World"
mes a+b
というわけで、下のサンプルは数値同士の足し算ではなく、文字列同士を結合(連結)した結果が表示されます。計算されない!、という場合によく多い勘違い例です。答えとして7とは表示されないのを確認して下さい。
a="5"
b="2"
mes a+b
そして、下の場合はそれぞれの計算で「サポートされない機能を選択ました」コンパイルHSPエラーが出ます。文字同士を引き算したり、掛け算したり・・・は無理です。
a="5"
b="2"
// 以下エラー発生
mes a-b
mes a*b
mes a/b
これでは困る、という場合は「int」関数というのを使いましょう。これは文字を普通の数値に変換する機能を持っています。(変数bの「int」関数はなくでもよい。)
a="5"
b="2"
mes int(a)+int(b)
mes int(a)-int(b)
mes int(a)*int(b)
mes 1.0*int(a)/int(b)
文字の表示を利用して、影文字を表示します。表示する文字を変数に入れておけば、複数の文字列を指定する必要がありません。(「boxf」命令はこの先の図形の描画のページで説明。)
// 赤色で塗りつぶし
color 255,0,0
boxf
data="HSP Programming\nHSP sun"
font "",30,1+16
// 文字を表示するXY座標
x=100
y=100
// 黒色で下に表示
pos x+2,y+2
color 0,0,0
mes data
// 白色で上に表示
pos x,y
color 255,255,255
mes data