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におくオブジェクトの姿勢(角度) はパターンマッチに考慮されない模様。(距離だけで判定かも?)

作例)

ルールでドレミ

オルゴールでドレミ オルゴールを作るつもりがシーケンサになってしまった。