見出し画像

消えるピアノのプログラム

叩いた鍵盤が消えるピアノです。
最後の一音をちょっと間を空けてから気持ちを込めて叩くとき、何をやってるんだろうなぁと笑いました。
ちなみに私はピアノを弾けません。

これは教育用プログラミング言語「ドリトル」で書いたプログラムです。

// 消えるピアノのプログラム

// プログラミング言語「ドリトル」

// (インストール版ドリトルで実行してください)

// 2020.06.04  蕪木 孝


拡大率 = 2// この値を変えると表示の大きさが変わる

// ----- 鍵盤の基本設定 -----
白鍵幅 = 16 * 拡大率。
白鍵高さ = 117 * 拡大率。
黒鍵幅 = 9 * 拡大率。
黒鍵高さ = 74 * 拡大率。
白鍵の隙間 = 2// ----- 25鍵盤の設定 -----
白鍵数 = 15。
左端の音 = 4// 1ド  2レ  3ミ  4ファ  5ソ  6ラ  0シ
音程 = -7。 	 // 音程は真ん中のドまでの音の距離(半音の数)。
           // 初期値は左端白鍵からの半音の数。真ん中のドの音程は0。

真ん中のド = メロディ ! "ド" 作る。	// この音を基準にして他の音を作る
真ん中のド ! (楽器 ! 1 作る) 設定。	// 楽器はグランドピアノを指定

背景色 = 色 ! 25 25 25 作る。
画面 ! (背景色) 塗る。

カメ = タートル ! 作る    1 線の太さ。


// ----- 白鍵を作るための図形オブジェクトを作る -----
カメ ! 0 向き    (白鍵幅) 歩く    90 右回り    (白鍵高さ) 歩く。
カメ ! 90 右回り    (白鍵幅) 歩く    閉じる。
白鍵 = カメ ! (白) 図形を作る    消える。


// ----- 黒鍵を作るための図形オブジェクトを作る -----
カメ ! 0 向き    (黒鍵幅) 歩く    90 右回り    (黒鍵高さ) 歩く。
カメ ! 90 右回り    (黒鍵幅) 歩く    閉じる。
黒鍵 = カメ ! (黒) 図形を作る    消える。


// 鍵盤の左上隅の座標
鍵盤x = (白鍵幅 + 白鍵の隙間) * 白鍵数 / 2 * (-1)。
鍵盤y = 白鍵高さ / 2。

カメ ! 消える。


// ----- 消えるピアノを作る -----

黒鍵番号 = 0// 黒鍵の数を数えるための変数

「
	| i |	// i は繰り返した回数(1 ~ 白鍵数)


	// --- 白鍵を作る ---

	プログラム文字列 = "白鍵" + i + " = 白鍵 ! 作る。"。
	プログラム文字列 ! 実行。

	プログラム文字列 = "白鍵音" + i + " = 真ん中のド ! (" + 音程 + ") 音上げる。"。
	プログラム文字列 ! 実行。

	プログラム文字列 = "白鍵" + i + " : 動作 = 「白鍵音" + i
                          + " ! 演奏。白鍵" + i + " ! 消える。」。"。
	プログラム文字列 ! 実行。

	白鍵x = 鍵盤x + (i - 1) * (白鍵幅 + 白鍵の隙間) + 白鍵の隙間 / 2。
	プログラム文字列 = "白鍵" + i + " ! (白鍵x) (鍵盤y) 位置。"。
	プログラム文字列 ! 実行。


	// --- 黒鍵を作る ---

	// 音番号は今作った白鍵の音を表す(1ド  2レ  3ミ  4ファ  5ソ  6ラ  0シ)
	音番号 = (i + 左端の音 - 1) % 7。

	(1 < i) ! なら	// 左端は白鍵のため繰り返し処理の1回目で黒鍵作りはない// 今作った白鍵がレ, ミ, ソ, ラ, シのどれかなら左側に黒鍵を作る
		「どれか ! (音番号 == 2) (音番号 == 3) (音番号 == 5)
			(音番号 == 6) (音番号 == 0) 本当」 ! なら
		「
			黒鍵番号 = 黒鍵番号 + 1。

			プログラム文字列 = "黒鍵" + 黒鍵番号 + " = 黒鍵 ! 作る。"。
			プログラム文字列 ! 実行。

			プログラム文字列 = "黒鍵音" + 黒鍵番号 + " = 真ん中のド ! ("
					+ 音程 + " - 1) 音上げる。"。
			プログラム文字列 ! 実行。

			プログラム文字列 = "黒鍵" + 黒鍵番号 + " : 動作 = 「黒鍵音" + 黒鍵番号 
					+ " ! 演奏。黒鍵" + 黒鍵番号 + " ! 消える。」。"。
			プログラム文字列 ! 実行。

			黒鍵x = 白鍵x - 黒鍵幅 / 2 - 白鍵の隙間 / 2。
			プログラム文字列 = "黒鍵" + 黒鍵番号 + " ! (黒鍵x) (鍵盤y) 位置。"。
			プログラム文字列 ! 実行。
		」実行。
	」実行。

	// --- 次に作る白鍵の音程を設定する ---

	「どれか ! (音番号 == 3) (音番号 == 0) 本当」 ! なら
	「
		// 次の白鍵は「ファ」「ド」のどちらかなので半音上げる
		音程 = 音程 + 1。
	」
	そうでなければ「
		// 次の白鍵は「レ」「ミ」「ソ」「ラ」「シ」のどれかなので全音上げる
		音程 = 音程 + 2。
	」実行。

」 ! (白鍵数) 繰り返す。

// 真ん中のドの音を確認するためのプログラム(コメントアウトを外して使う)
//白鍵 ! 現れる    (白) 塗る。
//白鍵 : 動作 = 「真ん中のド ! 演奏」。

インストール版ドリトルで実行してください。
インストール版ドリトルは以下のサイトからダウンロードしてください。
https://dolittle.eplang.jp/download
パソコンのOSがWindowsなら「Windows用」をクリックするとダウンロードがはじまります。
ダウンロードしたら解凍してください。
解凍したフォルダに入っている dolittle.bat をダブルクリックするとドリトルが起動します。
プログラムを貼り付けて「実行!」をクリックすると消えるピアノが表示されます。

パソコンによっては音が鳴らない可能性があります。
楽器を基本の「グランドピアノ」に設定したので鳴るとは思いますが。

実行して演奏してくれたそこのあなた、えらい。

この記事が気に入ったらサポートをしてみませんか?