[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今回はマウスを簡単に使ってみたいと思います。
マウスのボタンの入力は、前回触れたgetkey命令で取得できます。キーコードは、「HSP講座8」の表のとおり、左ボタンが1、右ボタンが2です。
キーボードと違うのは、マウスの座標の取得ですが、それは、システム変数の値を利用することで、簡単に取得できます。
システム変数とは、変数の一種です。今まで使ってきた、自分たちで初期化して使う変数とは違い、HSPのシステムであらかじめ用意されている変数のことです。システムが用意する変数であるため、変数の名前はあらかじめ決まっています。
例えば、「mousex」というシステム変数には、マウスカーソルのx座標が入っています。また、同じように「mousey」というシステム変数に、マウスカーソルのy座標が入っています。
実際に使ってみましょう。
次のプログラムは、マウスの左ボタンを押している間、カラフルで大小さまざまな円がマウスカーソルの位置に描画され、右ボタンを押すと、画面内が白でクリア(塗りつぶし)されると言うものです。
// 乱数初期化
randomize
repeat
// マウス左ボタン検出
getkey lclick, 1
// マウス右ボタン検出
getkey rclick, 2
// 条件:左が押されていれば
if (lclick == 1) {
// 色:ランダム
color rnd(256), rnd(256), rnd(256)
// 半径:1から100の間でランダム
r = rnd(100) + 1
// (mousex, mousey)中心の円描画
circle mousex - r, mousey - r, mousex + r, mousey + r
}
// 条件:右が押されていれば
if (rclick == 1) {
// 色:白
color 255, 255, 255
// 画面内塗りつぶし
boxf
}
wait 5
loop
if文の色をちょっと変えてみました。見やすいでしょうか?
実行すると、マウスを押している間、ずっと円が描画されると思います。円と次の円が描画されるまでの時間が、「wait 5」です。(実際は、他の処理も多少時間をとっていますが)
プログラムの説明ですが、getkey命令付近は、大体分かると思います。前回説明したとおりです。
今回は色と半径をランダムにしています。「r = rnd(100) + 1」の「+1」は「r」が0になるのを防ぐ役割があります。「+1」がなければ、rの範囲は0~99ですが、「+1」することで1~100となっています。
問題のマウス座標ですが、円描画の行を見てください。
circle mousex - r, mousey - r, mousex + r, mousey + r
となっています。このように、「mousex」「mousey」というシステム変数も、代入さえしなければ、普通の変数のように利用することが出来ます。この「mousex」「mousey」には、常に、その時のマウスの座標が入っているため、マウスを押しながら移動させたりしても円はマウスの位置にちゃんと描画されます。
とても簡単だとは思いませんか?ここまでやってくれば、簡単なペイントソフトみたいなものは出来そうな気がしますね。