株式会社リサイクルループ

ブログ

回収依頼お問合わせ

株式会社リサイクルループ

回収依頼

MENU

【HSPプログラミング講座#16】文字や画面の色を変えてみよう

プログラミング講座アイキャッチ

これまでHSP言語を使ってプログラムを作ってきましたが、動作についてわからないことが色々と出てきたので調べてみることにしました。説明書だけではよく分からなかったりする部分は、コミュニティのようなところで調べてみたり、誰かが作ったプログラムを眺めてみたりしました。

そして少しわかったことがあるので紹介していきたいと思います。

色を変える命令

文字を表示したり、線を描いたりしましたが、これまで「色を変える」というプログラムを作っていませんでしたね。。今回は色を変える命令を使って文字の色を変えるところから説明していきたいと思います!

HSPプログラミング_文字の色を変える01

簡単なところから始めていきますね! まず3行目はただ文字を表示しています。 ここは問題ないですよね(笑) 文字は色は通常「黒」ですね。 そして背景の色は通常「白」ですね。 そして5行目に出てくる「 color命令 」を使って色を変えることができます。 この「 color命令 」は次のような意味になります。

 color 赤の濃さ , 緑の濃さ , 青の濃さ

赤/緑/青の色の濃さを0~255の範囲で指定します。3色すべて0の場合は黒、3色すべて255の場合は白になります。(いわゆる光の三原色と言われているヤツです)それぞれ256段階あるので、合計で65536色を表現できます。

それから「 color命令 」は単体では意味を持ちません。 「 mes命令 」などのように文字や画像を表示させるときに意味を持ちます。

ちなみに14行目と15行目で白い色で「なにぬねの」を表示しています。 でも背景と同じ「白」なので見えないですからね!

実行すると下記のような感じです。

HSPプログラミング_文字の色を変える02

ここまでは文字の色を変える方法を説明しました。 あと疑問が残るとすれば文字ではない「 line命令 」とか「 cls命令 」の色も変えることができるのでしょうか?? 説明書には書いていないことがたくさんあるので、自分自身で実験してみるしかありませんね。

画面の色を変えてみる(応用編)

次は応用編です。文字ではなく画面の背景色を変化させてみたいと思います。色々調べていくと画面を塗りつぶす命令を発見したので、コレを使っていきたいと思います。 これからどんなことをするか説明すると、color命令 で指定できる赤、緑、青の色をそれぞれ順番に、色がだんだん濃くなるようにしていきたいと思います。 そして最後に赤、緑、青の色を同時にだんだん濃くしていきます。 ということで実際にプログラムを見ていきましょう。

HSPプログラミング_文字の色を変える03

全体的なプログラムの説明をすると、色ごとに256回繰り返す命令を4回やっています。4行目の繰り返し処理では、自動的にカウントアップしていく cnt変数 を利用して赤が256段階で色が変化させるようにしています。

5行目の boxf命令 は初めて登場しました。 これは画面全体を塗りつぶす命令です。 color命令によって指定された色で塗りつぶしています。 cls命令に似てますよね。。。 でもcls命令では、color命令で色を指定しても変わってくれませんでした。。。 たぶん意味の違いは cls命令は「画面を消す」ということ。 boxf命令は「画面に色を塗る」という違いなのだと思います。

6行目は毎度おなじみの wait命令 です。これを入れないと、あっという間に色が変化して終わってしまいますからね。 わかりますよね?

線(LINE命令)の色を変えてみる

前回のプログラミングでは「 line命令 」を使って線を描いて格子状の盤面を作成しましたね。 line命令でも色が変化するのか試してみましょう!

HSPプログラミング_文字の色を変える04

プログラムの内容は、先ほどの「 boxf命令 」のときとほぼ同じです。 boxf命令 の代わりに「 line命令 」で線を描いています。

横幅いっぱいに線を引いて、画面の上から下方向に移動しながら、だんだん色が濃くなってくるというプログラムになっています。 これぜひ実行してみてください。とてもキレイですよ!

では、最後に失敗例も紹介しておきます。 先ほども書きましたが「 color命令 」で色を指定してから「 cls命令 」で画面の色を塗りつぶそうとした例です。

HSPプログラミング_文字の色を変える05

実行しても全く色が変化しません。。。 背景の色が変わらないまま終わります。 cls命令は色を塗る命令ではなく、画面を消去する命令ですからね。 間違えないようしましょう!