だてしむソフトウエア開発室挑戦!HSP>一から始めるHSP(3)


 

一から始めるHSP(3)

BACK<<

|INDEX|

>>NEXT

 

7.スクリプトを見てみよう・・  

▼next

▲top

ここでは、前のセクションで実行したスクリプトを見ながら解説をしていきます。

前のセクションのスクリプトは次のようなものでした。

 1:
 2:
print "Hello HSP!"
stop

スクリプトの左側に「1:」とあるのは行の番号です。ここでは便宜上使っているので、実際にスクリプトエディタに表示されたりしませんし、スクリプトエディタに入力する必要もありません。


スクリプトの構成 〜命令とパラメータ〜

HSPのスクリプトでは通常、1行に1つの命令(ステートメント)を書きます。また、命令の動作を指定するために「パラメータ」という部分を付加する場合があります。パラメータは「命令」の後に1文字以上の空白を開け、その後に記述されます。また、パラメータが複数個必要な場合は、パラメータを「,」(カンマ)で区切って表現します。

1行に1命令とありますがHSPでは「:」(コロン)を挟んで1行に複数個の命令を書く事もできます。(これを「マルチステートメント」といいます)

スクリプトの1行目を見ると・・・「print」が命令、「"Hello HSP!"」がパラメータとなっています。このprint命令というのはウインドウに文字列を表示する命令です。表示したい文字列はパラメータとして命令の後ろに記述します。また、文字列は"(ダブルクォート)で囲むきまりがあります。つまりこの1行目を解釈するとprint命令を使ってウインドウに「Hello HSP!」と表示しなさい。ということになるのです。

次にスクリプトの2行目を見ると・・・「stop」が命令で、パラメータはありません†1。このstop命令というのはスクリプトの動作を停止する命令です。ここでのstop命令はウインドウが閉じられてしまうのを防ぐ働きをしています†2

†1「パラメータの数」や「パラメータの持つ意味」は命令によってそれぞれ違います。また、このstop命令のようにパラメータがない命令もあります。
†2HSPでは最後の行までスクリプトが実行され終わるとプログラムが終了しウインドウを閉じてしまいます。そこでstop命令を使うことによってスクリプトの実行を止めて、ウインドウが閉じられてしまうのを防ぎます。

スクリプトの流れ 

これまでは1命令ずつの動作を見ていましたが、今度はスクリプト全体でどういう動作になるかを見てみましょう。スクリプトは一番上から1命令ずつ順番に実行されます。つまり、前のセクションで入力したスクリプトは全体で

1行目で、画面に「Hello HSP!」と表示して・・
2行目で、ウインドウを開いたまま動作を停止する。

という動作をするスクリプトだったのです。

 

8.スクリプトの改造・・  

▼next

▲top

ここでは、前のセクションで解説したスクリプトの改造をしてみます。参考までに、前回までのスクリプトを書いておきます。

 1:
 2:
print "Hello HSP!"
stop

では、このスクリプトを実際にいろいろ改造してみましょう。でも、「改造」といっても、そんな大袈裟なものではなく、スクリプトを少し書き換えて動作を変えてみるだけのことです。これが、結構プログラミングを勉強していく上で役に立ったりします。命令の使い方を覚えたら、サンプルを片っ端から改造してみてください。(^^)

では、先程入力したスクリプトを以下のように書き換えて実行してください。スクリプトの書き換えは普通のワープロと同じような操作でできます。変更場所は赤の太字で書いてあります。

改造例:1)

 1:
 2:
print "いいぞ阪神!負けるな巨人!"
stop

※文字列を”(ダブルクォート)で囲むことを忘れないようにしましょう。また、”は必ず半角文字で(日本語入力をoffにして)入力してください。(^^;)

実行結果:

改造して実行できたでしょうか?ウインドウに表示される文字列が上のようになったと思います。このようにprint命令は自分の表示したい文字列をウインドウ上に表示する事ができます。では、今度は次のように改造してみてください。

改造例:2)

 1:
 2:
3
:
4:
print "(^^;)"
print "(;^^)"
print "(^^;)\n(;^^)"

stop

実行結果:

先程と同様に実行できたでしょうか?今度は上のようになったと思います。このようにprint命令を続けて書くと、前に表示された文字列の下に次の文字列が表示されます。

ウインドウに何かを表示する場合、その表示される位置の事を「カレントポジション」といいます。print命令を実行するとカレントポジションは1行分下へ移動します。また、カレントポジションを変更することによって、文字やオプジェクトをウインドウの好きな位置に表示できます。(詳しくはHSP「プログラミングマニュアル2・命令リファレンス」のpos命令を見てください)

ここで3行目を見てみましょう。文字列の中に\nという部分があります。これは「改行」を意味するコードです。HSPでは\マークは文字列の中特殊な意味に用いられます。覚えておくと便利です。

では、今度は改造例:2)の4行目にあるstop命令を削除して実行してみましょう。

改造例:3)

 1:
 2:
3:
4:
print "(^^;)"
print "(;^^)"
print "(^^;)\n(;^^)"
 

実行するとウインドウらしきものが出てきて、すぐに消えてしまいましたね。(^^;)
HSPでは最後の行までスクリプトが実行され終わると、ウインドウを閉じてしまうのです。今までは4行目にあったstop命令がスクリプトが終了しないように動作を止めていたので、ちゃんとウインドウが残っていたわけです。ではstop命令をスクリプトの途中に書くとどうなるでしょうか?

改造例:4)

 1:
 2:
3:
4:
print "(^^;)"
stop
print "(;^^)"
print "(^^;)\n(;^^)"

実行結果:

 

実行すると上のような結果になるはずです。どうしてかは、もう、おわかりですか?(^^;)
そうです、2行目にあるstop命令でスクリプトの動作を止めているので、3行目以降が実行されないのです。

 

さて、少し振り返ってみましょう.

ここまで進んでみましたが、どうだったでしょうか?特に今回は少々難しかったと思います。でも、実際に知っておけばいいのはこれくらいです。

判らない項目があれば、もう一度このセクションのサンプルを実際に入力しながら、確認していってください。また、他のHSPユーザの講座や、HSP付属の「HSP入門」を見てみるのもいいと思います。

上手く行かなくても肩の力を抜いて、「頭の体操」気分で気楽に気長にやってみてください。あと、質問のメールも歓迎します。

では、次のセクションでは、いろいろな命令を使ってみようと思います。

 

9.スクリプトに遊びごごろを・・  

▼next

▲top

ここでは、これまで作成したスクリプトに彩りを添える(笑)各命令について説明します。

HSPにはこれまで説明したprint命令やstop命令の他にも様々な命令があります。全てを覚えて使いこなすのは大変ですが、その中で比較的良く使う命令を重点的に覚えるのが上達への近道です。(^^)

それらの命令とその使い方を紹介しますが、「この命令。面白そう。」とか「こう使えそうだな。」などと感じたら積極的に使ってみてください。きっと、HSPがもっと魅力的に感じられると思います。

では、早速いってみましょう!


文字の色を変えてみる:color命令

使い方 : color (赤の成分),(緑の成分),(青の成分)

使用例 :  color 0,0,0            
  color 255,0,0
  color 255,255,255
  color 255,255,0 黄色
  color 128,128,128 灰色

print命令で表示される文字の色は初期状態で黒ですが、このcolor命令を使うと文字の色を変更する事ができます。color命令以後のprint文で表示される文字に適応されます。

パラメータは3つあり、光の三原色(RGB:赤、緑、青)の各成分の明るさで色を指定します。色の各成分は0が一番暗く255が一番明るくなります。128がちょうど中間の明るさになります。使い方はcolor と書いた後に半角のスペース(空白)を入れた後に赤・緑・青の順番に色の成分の強さを,(カンマ)で区切って並べて書きます。

例えば黄色を使う場合は光の三原色(上の図)から緑と赤を混ぜると良いので、[赤:255、緑:255、青:0]という組み合わせになり、color命令は color 255,255,0 となります。また、各値を220以上にするとパステル系の色が得られます。好きな方は試してみてください。

ちなみに、このcolor命令。凝りだすと、けっこうキリがありません。かなり色マニアな気分になる命令です。(笑) 実際にprint命令と組み合わせたサンプルは次のようになります。

サンプル:

 1:
 2:
3:
4:
5:
6:
7:
8:
9:
10:
print "でふぉると"
color 255,0,0
print "真っ赤"
color 100,0,0
print "暗い赤"
color 255,255,0
print "まっきっき"
color 0,0,255
print "青ぉ"
stop
;文字の表示
;色を赤にする

;文字の表示

;色を暗い赤にする

;文字の表示

;色を黄色にする

;文字の表示

;色を青にする

;文字の表示

;ウインドウは閉じない

※print と color 命令の後にはスペース(空白)が1文字分入っています。忘れないでね。(^^

実行結果:

うーん、黄色。見づらいですねぇ。(笑) それはともかく、上のサンプルでは、print命令の直前にあるcolor命令が有効になっているのがわかるでしょうか?
ちなみに、256色環境の方はコンピュータが使用している256色の中で一番近い色が選択されるので細かい色指定ができない場合もあります。


一定時間実行を停止する:wait命令

使い方 : wait (待ち時間[単位は1/100秒])

使用例 :  wait 100            1秒待つ
  wait 1 0.01秒待つ
  wait 1000 10秒待つ
  wait 前回のwait命令と同じ時間だけ待つ

スクリプトの実行を一定時間だけ停止します。タイマーやアニメーション等の画面効果を出す際にもってこいの命令です。また、連続した処理を行なう最中にWindowsや他のプログラムがスムーズに動くようにwait命令を使用したりもします。

サンプル:

 1:
 2:
3:
4:
5:
6:
7:
8:
9:
10:
print "1"
wait 100
print "2"
wait 100
print "3"
wait 100
print "ダァァァァァァーッ!!"
wait 500
print "また・・やってしまった。(^^;)"
stop
;文字の表示
;1秒待つ

;文字の表示

;1秒待つ

;文字の表示

;1秒待つ

;文字の表示

;5秒待つ

;文字の表示

;ウインドウは閉じない

※print と wait 命令の後にはスペース(空白)が1文字分入っています。忘れないでね。(^^

実行結果(4秒後):

color命令と組み合わせて、「ダァァァァァァーッ!!」を赤にするなり好きにして下さい。(^^;)
なお、「一人漫才」や「ラーメン用の3分タイマー」などこのサンプルの応用範囲は広いです。(笑)


画面をクリアする:cls命令

使い方 : cls (クリアする色の指定:0〜4)

使用例 :  cls 0            白で画面をクリアする
  cls 1 明るい灰色で画面をクリアする
  cls 2 灰色で画面をクリアする
  cls 3 暗い灰色で画面をクリアする
  cls 4 黒で画面をクリアする

指定した色で、ウインドウ内の情報を全てクリアします。色は白から黒まで5段階で選べます。

サンプル:

 1:
 2:
3:
4:
5:
6:
7:
8:
9:
10:
cls 1
wait 200
cls 2
wait 200
cls 3
wait 200
cls 4
wait 200
cls 0
stop
;明るい灰色でクリア
;2秒待つ

;灰色でクリア

;2秒待つ

;暗い灰色でクリア

;2秒待つ

;黒でクリア

;2秒待つ

;白でクリア

;ウインドウは閉じない

※cls と wait 命令の後にはスペース(空白)が1文字分入っています。忘れないでね。(^^

実行結果(2秒毎に変化):

cls命令はウインドウ内の全ての情報をクリアします、print命令による文字表示位置(カレントポジション)も左上に戻ります。ウインドウのグラフィックだけでなく、ボタン等のオブジェクト(後で説明)もクリアするので画面切り替えの時とか便利です。


とりあえず、簡単に使用できる3命令を紹介しましたが、これだけでも「こんなモノ作ってみようかな?」みたいな創作意欲を刺激されたのではないでしょうか?(^^)

HSPにある命令はまだまだ、こんな物だけではありません。グラフィックやボタン等のオブジェクト、さらには音楽や計算など、様々な機能を持った命令が用意されています。これから、少しずつ紹介していくつもりですが、待ちきれない方はHSPディレクトリのIndexもしくはIndex.htmをダブルクリックして「プログラミングマニュアル2・命令リファレンス」のページを読んでみてください。機能別にすべての基本命令が記載されています。

 

This Document was written by Dateshim.
A final renewal date is 99/12/10.
e-mail:
simodate@mail.mynet.ne.jp

 

一から始めるHSP(3)

BACK<<

|INDEX|

>>NEXT