プロデルでメディアアート作品を作る

[プロデル Advent Calendar](https://qiita.com/advent-calendar/2019/produire)のnipoさんの代打ということで、完全に思い出話になってしまいますが、ご容赦下さい。
今日は、クリスマスツリーをプロデルで描いてみます。

今回紹介するクリスマスツリーは、昔書いたTTSneoのプログラムが元ネタです。それを最新のプロデルで動かしてみた。という話です。

[クリスマスツリー - TTSneoプログラム掲示板](https://tts.utopiat.net/cgi/progbbs3/forump.php?mode=view&id=229)

プロデルを開発する前に、[TTSneo](https://tts.utopiat.net/)という日本語プログラミング言語を作っていました。TTSneoを作り始めたのが1999年なので、今年は20周年の記念の年になります。あの頃はTTSneoを有名ニュースサイトや書籍で取り上げて頂き、こぢんまりながらコミュニティも盛り上がり、とても作りがいあった気がします。(しみじみ)

そんな思い出に浸りつつ、試しにWindows10 1909 (19H2)にTTSneoをインストールして、クリスマスツリーを実行してみると、、、

> ちゃんと動きました！

![コメント 2019-12-23 193819.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101225/55945f7f-3794-a65f-7398-8d8f9102c61d.png)

未だにVB6アプリを動く状態にして頂いてるMicrosoftさまに感謝です。

さて、当時のTTSneoのプログラム掲示板の投稿をよくみると、TTSneoで作ったクリスマスツリーを投稿したのが2007年12月でした。プロデルをリリースした年だったようです。

実は、その後、TAKAさんがこのクリスマスツリーをプロデルに移植され、投稿して頂いたプログラムがプログラム掲示板に残っていました。

[クリスマスツリー - プロデルプログラム掲示板](https://rdr.utopiat.net/cgi/progbbs/forump.php?mode=view&id=30)

まるで押し入れに仕舞われたクリスマスツリーを掘り出すかのように、このプログラムを今のプロデル1.6.988で実行してみると、、、、

> 動かない...

調べると、プロデルライブラリの軽微な定義ミスが原因でした。その部分を修正したところ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101225/61156936-553e-2718-dbbf-3e5a1ae60f2f.png)

> 動きました！

プロデル1.6.989では正しく動作します。

プログラム自体も少し手直しが必要ですが、プロデル版は、電飾も動くようになり、見ているだけで楽しくなってきます。:santa_tone1:　:christmas_tree:

## 改良する

このクリスマスツリーは、[「カメ」種類](https://rdr.utopiat.net/docs/reference/pgraphics/kame.htm)というLOGOライクに図形を描画する機能を使って描いています。
最新のプロデルでは、キャンバス部品上でもカメを使って図形を描くことができるため、キャンバス上の図形と組み合わせて、文字やJPEG画像を入れることも可能です。

プロデル移植版では、「窓」というピクチャー部品を使っていましたが、その部分を「キャンバス1」というキャンバス部品に置き換えてみました。多少のプログラムを整理しましたが、それ以外はほとんど修正していません。

```
LEDは、0
葉色は、「#00C500」
色配列は、｛「緑」、「赤」、「黄色」、「ピンク」、「水色」、「オレンジ」｝
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
メイン画面を表示する
待機する

メイン画面とは
	ウィンドウを継承する

	はじめの手順
		初期化する
		カメさんというカメを作る
		カメさんの位置は、｛-5，-5｝
		カメさんをキャンバス1に表示する
		カメさんを隠す
		キャンバス1へ「Merry Christmas!」という文字を描く
		　　その位置は、｛50,5｝
		　　そのフォントを「Yu Gothic」に変える
		　　その文字色を緑色に変える
		　　その文字サイズを20に変える
		キャンバス1へ「Merry Christmas!」という文字を描く
		　　その位置は、｛52,7｝
		　　そのフォントを「Yu Gothic」に変える
		　　その文字色を白に変える
		　　その文字サイズを20に変える
　　		クリスマスツリーを表示する
		タイマー１というタイマーを作る
		タイマー１の時間になった時の手順は、時間になった
		タイマー１の間隔を800に変える
		タイマー１を開始する
	終わり
	
	初期化する手順
	ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
	この実質大きさを｛304,311｝に変える
	この初期位置を「中央」に変える
	この内容を「クリスマスツリー」に変える
	初期化開始する
	キャンバス1というキャンバスを作る
		その位置と大きさを｛0,0,304,311｝に変える
		そのドッキング方向を「全体」に変える
	初期化終了する
終わり

	時間になった手順
		LEDを点灯する
		0.7秒待つ
		LEDは、0
	終わり

	クリスマスツリーを表示する手順
ーー地面を描く
		図形描画によって円をキャンバス1に｛60,270｝から｛180,30｝まで「白」色で描く
		図形描画によってキャンバス1を白で｛80,280｝へ塗りつぶす
ーー幹を描く
		カメさんの向きは、180
		カメさんの太さは、2
		カメさんの色は、茶
		カメさんの位置を｛135,228｝に変える
		カメさんを55だけ前へ進ませる
		カメさんを90だけ左へ回転させる
		カメさんを30だけ前へ進ませる
		カメさんを90だけ左へ回転させる
		カメさんを55だけ前へ進ませる
ーー左の枝を描く
		カメさんの太さは、3
		カメさんの色は、葉色
		カメさんの位置を｛150,70｝に変える
		カメさんを145だけ左へ回転させる
		カメさんを80だけ前へ進ませる
		２回繰り返せ
			カメさんを145だけ左へ回転させる
			カメさんを30だけ前へ進ませる
			カメさんを145だけ右へ回転させる
			カメさんを80だけ前へ進ませる
		繰り返し終わり
		カメさんを145だけ左へ回転させる
		カメさんを50だけ前へ進ませる
ーー右の枝を描く
		カメさんの向きは、０
		カメさんの位置は、{150，70}
		カメさんの色は、葉色
		カメさんを145だけ右へ回転させる
		カメさんを80だけ前へ進ませる
		2回繰り返せ
			カメさんを145だけ右へ回転させる
			カメさんを30だけ前へ進ませる
			カメさんを145だけ左へ回転させる
			カメさんを80だけ前へ進ませる
		繰り返し終わり
		カメさんの太さは、3
		カメさんを145だけ右へ回転させる
		カメさんを50だけ前へ進ませる
		カメさんを20だけ左へ回転させる
		カメさんを70だけ前へ進ませる
ーー星を描くーー
		カメさんの位置は、｛151，42｝
		カメさんの色は、黄色
		カメさんの太さは、1
		カメさんを110だけ右へ回転させる
		S＝38
		Pを5から5ずつ増やしながら25まで繰り返す
			5回繰り返せ
				カメさんを144だけ右へ回転させる
				カメさんをSだけ前へ進ませる
			繰り返し終わり
			カメさんの位置は、｛151，42+P｝
			S＝S-10
		繰り返し終わり
ーー枝を塗りつぶす
		カメさんに｛150，100｝を「緑色」で塗りつぶす
ーー幹をを塗りつぶす
		カメさんに｛150，240｝を「茶色」で塗りつぶす
		カメさんに｛150，270｝を「茶色」で塗りつぶす
ーー背景塗りつぶし
		カメさんに｛50，50｝を「紺色」で塗りつぶす
		カメさんを隠す
		LEDを点灯する
	終わり
ーーーーーーーーーーーーーーーーーー
	LEDを点灯する手順
		カメさんを隠す
		（LEDが50）になるまで繰り返す
			Cは、1から30までの乱数
			もしC＞7なら。C=1。もし終わり
			Xは、（80から220までの乱数）*2
			Xは、（Xを1で四捨五入したもの）/2	　
			Yは、（90から225までの乱数）*2
			Yは、（Yを1で四捨五入したもの）/2
			カメさんの向きは、135
			カメさんの太さは、4
			もしX<150ならば
				補正は、-8
				そうでなければ
				補正は、8
			もし終わり
			カメさんの位置は、{X+補正，Y+5}
			DCは、カメさんの下部色
			カメさんの位置は、{X，Y}
			もしDCが「#008000」なら
				カメさんの色は、色配列（C）
				カメさんを4だけ前へ進ませる
				LED=LED+1
			もし終わり
		繰り返し終わり
	終わり
終わり
```

![コメント 2019-12-23 202430.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101225/3b2ab0f8-95e0-7781-d42f-67732cb4bf95.png)

ちょっとしたクリスマスカードのような作品になってきました。

キャンバスにさらに図形を加えて、粉雪が降るように作ってみたい気がしますが、明日になりそうなので、今日はここまでということで...

#まとめ
「メディアアート作品」と呼ぶには、単純で可愛らしいものではありますが、TTSneoを作り始めた当時はこういった見て楽しむシンプルな作品を作る方がたくさんいらっしゃったと思います。例えばスクリーンセーバーやFlashアニメなどが一例に挙げられるかと思います。

現在は、スマホで動画や写真を気軽に撮影でき、しかもYouTubeなどのSNSに簡単に作品をアップロードできる時代になりましたので、このような作品をわざわざプログラムで作る楽しみ方をしなくなってしまった(?)ように思います。

もしよかったらプロデルで、メディアアート作品を作ってみませんか？