01. VISCUIT
キーワード: OOP(Object-Oriented-Programming) オブジェクト クラス インスタンス化 継承 オーバライド パターンマッチ
オブジェクト指向プログラミング(Wikipedia)
今回は、
ビジュアルプログラム言語 VISCUIT (ビスケット) http://www.viscuit.com/
を利用して、OOPの概念、 クラス インスタンス化 継承 および、パターンマッチによるプログラム手法 について学ぶ。
※1 今回利用するのはFlash版のviscuit で iPadのviscuit ではありません。Flash版にある 雪だるまアイコン(継承) を利用します。
※2 継承機能の一部がiPad版のviscuitに実装される予定が有る様です。 https://twitter.com/viscuit/status/907970047330598912
概要:
絵 と 絵 を組み合わせて ルール(法則) を作る。
ステージ上の キャラクタ が 作成したルールに従って動き出します。
今回は、こちらのサイトの 「ぜんぶいり」 を利用して、
・パターンマッチ によるアルゴリズムの表現
・オブジェクト指向 の 継承 の概念
について学ぶ。
VISCUIT自体の操作方法については、上記サイトに掲載の動画を参照。
※ ぜんぶり の 大人用解説動画の 継承 は必見です。 http://www7.viscuit.com/howto/howto6/ 大人向け1の解説動画
大人向け1~4の最後の継承まで見ておいてください。
講義用ワークショップ:
ここから参加: develop.viscuit.com/3.1/index.html
ワークショップコード 2518958
を入力して、ワークショップに参加する。※ ↑のリンクからワークショップコードを画面の数字ボタンで入力して、さんか をクリックする。
課題提出:
作製した VISCUIT を 保存ボタンを押して、登録する。
データは、サーバ上に保存される。
保存された際、 各自の「ページコード」が決まるので、覚えておくこと。
Webclassの第1回課題 に 作品表示用の URL を コピー して書き込んでおく。
手順:
Viscuitの画面の右下コーナーの地球儀アイコンをクリックして保存 → ブログボタンを押す → ブログにはるパネルの、 メガネを見せる と URL をONにする → URL欄の コピーボタンを押す
→ WebClassの第1回課題に貼り付けて提出
〆切:来週まで。 同じ ワークショップコード と ページコード を利用すれば、課題の修正、追加ができる。
課題制作上のポイント:
継承(雪だるま)の仕組みを活用して、異なる種類のオブジェクトに共通のルールを設定してみよう。
例) 移動・回転 の速度
例) 衝突判定の対象
継承(雪だるま)の利用上の注意点: http://www7.viscuit.com/howto/howto9/ 大人向け4の解説動画
以下の例で)
赤い棒のルール:
1.上に移動
2.衝突すると消える
青い棒のルール:
1.赤い棒から継承したルールを変更(オーバライド)して、下に移動
2.赤い棒を継承 衝突すると消える
メガネ と異なり、雪だるまの上の丸には 部品は一つ だけ入れる。
下の丸に部品を2つ入れた場合は、2つの部品が組み合わさったときに、上の部品の性質を持つような1つの部品として振る舞う。
例)
参考1:
Viscuitではしゃぐ担当教員のtweet
参考:2 過去の受講生他の VISCUIT作品
2017年度受講生
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=85&smoothMotion=true&dynamicFile=false
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=91&smoothMotion=true&dynamicFile=false
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=94&smoothMotion=true&dynamicFile=false
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=100&smoothMotion=true&dynamicFile=false
2016年度受講生
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=81&smoothMotion=true&dynamicFile=false SA
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=78&smoothMotion=true&dynamicFile=false SA
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=76&smoothMotion=true&dynamicFile=false
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=73&smoothMotion=true&dynamicFile=false
http://develop.viscuit.com/3.1/Land.html?path=2518958&name=65&smoothMotion=true&dynamicFile=false
https://twitter.com/_kobashi/status/780661381460733952 2015年度受講生
https://twitter.com/_kobashi/status/647097586831130624 2014年度受講生
https://twitter.com/_kobashi/status/472288257385201664 2013年度受講生 ←このツイート、3作品紹介。どれも凝っている。
https://twitter.com/_kobashi/status/388230180785119232 他大学のワークショップ
https://twitter.com/_kobashi/status/407411908648513536 twitterで見かけた作品
Tips:
・ +-ボタン、 ぶひん箱のサイズが変更される。そのままサイズ変更されたぶひんを ステージに配置できる。 色変更、α値変更も同様。
・ ステージの編集、色の指定、絵が描ける。
・ めがねに微調整ボタンあり、小さな部品の角度指定に便利
・ 動作スピード変更 変化量が小さいので、遅くするボタン(<)連打する。
・ 地球へgo ボタンで、保存。忘れずに。
・ 音符や 矢印は10個くらい重ねて置いてあるので、使い切るとなくなる。
・ 親から継承したルールを持つ子にメガネで動作設定をすると、親から継承されたルールに追加されるのではなく、ルールが子供専用のものに変更される。
例) 横移動(親)+縦移動(子供)で、斜め移動にはならず、縦移動だけするようになる。
パターンマッチ
・ A→A' のメガネのルールで、 Aに似たようなパターンを作らないこと。 どちらが適用されるかコントロールが困難。
・ 移動 + 分裂 や 移動 + 発射 のルールは、1つのルールとして表現すること
・ 複数のオブジェクト が A の部分に来る場合、 オブジェクト間の距離に注意
2つのオブジェクトが 離れているパターン と 接近しているパターンは 別のパターン扱い
Aにおくオブジェクトの姿勢(角度) はパターンマッチに考慮されない模様。(距離だけで判定かも?)
作例)
・オルゴールでドレミ オルゴールを作るつもりがシーケンサになってしまった。