[StarLogo/fujim2]
[ トップ ]   [ 差分 | バックアップ | リロード ]   [ 一覧 | 単語検索 | 最終更新 | ヘルプ ]

CONTENTS

  • FrontPage
  • StarLogoについて
  • こんな人におすすめ
  • StarLogoのインストール
  • StarLogoの簡単な入門
  • StarLogo TIPS
  • StarLogoのサンプル解説
  • StarLogo関連リンク集
  • OpenStarLogo
  • StarLogoTNG
  • StarLogoNova
  • 実験・研究
  • Petit-Hack
  • 文献
  • ご意見ご感想など
  • このページについて

最新の10件
2019-12-28
  • タートルグラフィックス
2019-01-27
  • FrontPage
  • StarLogo日本語化
  • Petit-Hack
  • このページについて
  • コメント/ご意見ご感想など
  • ご意見ご感想など
  • 文献
  • 実験・研究
  • こんな人におすすめ

マウスイベント処理

Last-modified: 2019-01-27 (日) 03:09:07 (1518d)

StarLogo TIPS

tips-mouseevent.PNG
  • > Go Web Version( Java Applet )

StarLogoウィンドウ内マウス位置を取得したり、発生するマウスイベントを 感知して使う事ができます。


  • 利用できるマウスイベント
  • マウス位置
  • StarLogoによるマウスイベント処理
    • マウスが押されたかどうかを感知
  • 例
    • TurtleProcedure
    • ボタン作成
    • 画像(マウスボタンを押す前)
    • 画像(マウスボタンを押した時)

利用できるマウスイベント †

マウスイベントとしては、

  • マウスが押されているか
  • マウスが放されているか

など、単純なものだけが用意されています。

↑

マウス位置 †

現在のマウス位置は次の2つの変数に入っています。

--変数
x座標mouse-xcor
y座標mouse-ycor

この変数を利用して、マウスが押された場所を取得し、その位置を 使ったStarLogoプログラムを作ることができます。

↑

StarLogoによるマウスイベント処理 †

マウスイベントを扱う「古いタイプ」のプログラムでは、プログラマが 「イベントループ」という、

  • イベントを取得し、
  • その種類によって処理を振り分ける

ようなプログラムを作り、処理しました。

StarLogoでは、シミュレーションのループ毎にマウスイベントをチェック する形をとります。実際には、タートルやパッチに対しての処理に対して 「forever」チェックボックスをOnにする事によって、繰り返し実行される TurtleProcedureやObserverProcedureを使うだけです。

↑

マウスが押されたかどうかを感知 †

現在マウスが押されたかどうかを感知するための手続きは

mouse-down?

です。これをif文でチェックすることによって、 マウスが押されたときに特別な処理を行うことができます。

↑

例 †

ふだんはランダムウォークしているタートルが、マウスが押されたらその 場所をめがけてやってくる、というもの。

↑

TurtleProcedure †

タートルの手続きだけです。次の様になります。

to go
   if mouse-down? [
       let [:sdx mouse-xcor - xcor]
       let [:sdy mouse-ycor - ycor]
       setheading (atan :sdx :sdy)
   ]
   rt random 30
   lt random 30
   fd 1
end

endの前の3行は、少し方向の付いたランダムウォークです。

そして、その前のifのブロックの中で、

       let [:sdx mouse-xcor - xcor]
       let [:sdy mouse-ycor - ycor]

の様にして、:sdx,:sdyにマウスカーソルの位置とタートルの位置の 差を入れています。

次の、

       setheading (atan :sdx :sdy)

で、:sdx/:sdyという傾きから求めた方向*1 へ、タートルの頭を向けています。

↑

ボタン作成 †

今回作ったボタンは次の様なものです。

ボタン説明
caタートルとパッチを全てクリアする
crt 100タートルを百匹生成する
go今回作成した手続き
↑

画像(マウスボタンを押す前) †

goボタンを押すと、ランダムウォークのシミュレーションがスタートします。

StarLogoTips_MouseEvent1.PNG
↑

画像(マウスボタンを押した時) †

タートルが動き回っているときに、適当な場所(パッチの外でも良い) マウスボタンを押すと、その場所にタートルが向いて、一斉に向かってきます。

StarLogoTips_MouseEvent2.PNG

Counter: 446, today: 2, yesterday: 0

Link: StarLogo TIPS(1518d)

*1 atanはtanの逆関数:アークタンジェント

添付ファイル: filetips-mouseevent.PNG 135件 [詳細] fileStarLogoTips_MouseEvent2.PNG 270件 [詳細] fileStarLogoTips_MouseEvent1.PNG 274件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-01-27 (日) 03:09:07 (1518d)
Link: StarLogo TIPS(1518d)
Site admin: anonymous

PukiWiki 1.5.0 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.6.40. HTML convert time: 0.015 sec.