忍者ブログ
ゲームと工作と勉強と雑記のページ
×

[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」には、常に、その時のマウスの座標が入っているため、マウスを押しながら移動させたりしても円はマウスの位置にちゃんと描画されます。

 とても簡単だとは思いませんか?ここまでやってくれば、簡単なペイントソフトみたいなものは出来そうな気がしますね。

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
リンク
フリーエリア
最新CM
[08/30 masaya]
[06/17 Yu]
最新TB
プロフィール
HN:
ぴんかび
性別:
男性
趣味:
プログラミング、工作、囲碁
自己紹介:
_m_s_k_あっとまあくmail.goo.ne.jp
バーコード
ブログ内検索
最古記事
(06/15)
(06/16)
(06/17)
(06/18)
(06/20)
カウンター
アクセス解析

Copyright © [ PinCurve ] All rights reserved.
Special Template : 忍者ブログ de テンプレート
Special Thanks : 忍者ブログ
Commercial message : [PR]