はじめに
木村 明さん 1 の傑作かつ芸術的な日本語プログラムに「ポエム(Poem)」があり2 まして、先日に日本語プログラミング言語Mind開発者の@killyさんによりQiitaに公開されて好評を博しています。
経緯
ソースコードも完全な形で公開されていますので、動かしてみようかなと思いましたところ、Mind8のグラフィックス機能ライブラリはまだ公開されていないのでそのままではだいぶビルドエラーがでてしまいました。そこで、現状のMind8の標準ライブラリで動くよう、氏1 の傑作はそのままに、ビハインドの処理単語定義を調整してみました。木村さん、@killyさんごめんなさい。
ソースコードと実行画面
ソースプログラム後半の見どころは以下の部分で、ほぼオリジナルと同じです。
「愛を 弄び 恋を 弄び 幸福を 弄ぶ」はすみません、デバッグ用に変数の動きをコンソールに出力するものです。通常時「弄ぶ」は「捨てる」で等価定義しています。
また、踊ったあとの「戸惑う」がテキストスクロールをスムーズにさせるために、少し追加されています。
~略~
メインは
愛は 夢 恋は 夢 幸福は 夢 不幸は 夢
らんちき騒ぎのあとに
扉を開け
28日の 喜劇
回数を 弄ぶ
明日から 395日 ☆ 愛に 酔う
明日から 635日 ☆ 恋に 酔う
あさってから 77日 ☆ 幸福に 酔う
1日目から 7日目まで ☆ 着飾って
愛と 恋と 幸福の タンゴを踊り 戸惑う
愛を 弄び 恋を 弄び 幸福を 弄ぶ
幸福を 2つに 割って 不幸に 入れ
210日目から 330日目まで 眠る
黒を 着飾って
愛と 恋と 不幸の ワルツを踊り 戸惑う
愛を 弄び 恋を 弄び 不幸を 弄ぶ
愛と 幸福と 昨日に グッバイと 言って
愛に 酔う
恋が 不幸を 引きよせる
恋に 酔う
不幸と 明日に グッバイして
不幸に 酔う
愛が 今日から 399日間の 悪夢 でなければ もう一度 …
恋が 今日から 639日間の 悪夢 ならば
愛と 恋と 不幸の タンゴを踊る …
愛を 弄び 恋を 弄び 不幸を 弄ぶ
恋に 幸福を 加えれば 恋に 酔う
恋が 今日から 639日間の 悪夢 でなければ もう一度 …
愛と 恋と 不幸の タンゴを踊りつつ 戸惑う
愛を 弄び 恋を 弄び 不幸を 弄ぶ
繰り返しくりかえしくりかえし
扉を閉める。
実行画面はこんな感じです。グラフィック機能はまだ公開されていないので、コンソールアプリケーションとして動くように修正されています。
実行画面
C:\pmind\sample>poem2
作: 木村 明 (1986)
Mind8
● ●●● ●●●●●●●●●●●
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇
● ● ●●●●●●●●●●●●●●●●●●●
● ●●●●●● ●●●●●●●●●●●●●●●●●●●
● ●●●● ●●●●●●●●●●●●●
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇
● ●●●● ●●●●●●●●●●●●●●●●●
● ●●●● ●●●●●●●●●●●●●●●●●
● ●●●●●●●●●●●●●●●
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇
● ●●●●●●● ●●●●●●●●●●●●●
● ●● ●●●●●●●●●●●●●
● ●●●●●●●●●●●●●●
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇
● ●●●●●●●●●●●●●
● ●●●●●●●●●●●●●
● ●●●●●●●●●●●
〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇 〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇
もうちょっとランダムな感じがでればよかったのですが、力不足でした。実行画面の出来は主題ではないので、目立たないよう詳細非表示で隠しています。
解説
オリジナルの下記の定義ヶ所に対しまして、等価定義対象のグラフィックス処理単語が未定義エラーとならないように少し書き加えました。
タンゴを踊るは 円を塗ると 等価。
ワルツを踊るは 円弧をかくと 等価。
もうちょっと詩的な雰囲気がほしいところですが、「酔う」という単語に対してお酒しか連想できませんでした。すみません。
~略~
買って来るとは 割った余りと 等価。
乾杯は 複数空白表示と 等価。
返杯は 表示と 等価。
冷蔵庫にしまうは 一行表示と 等価。
残りは 「●」を 返すこと。
別のは 「〇」を 返すこと。
円を塗るとは
ビールは 夢
日本酒は 夢
ウィスキーは 夢
ビールに 酔う
日本酒に 酔う
ウィスキーに 酔う
ビールを 10本 買って来て ビールに 酔う
日本酒を 8本 買って来て 日本酒に 酔う
ウィスキーを 20本 買って来て ウィスキーに 酔う
ビールで 乾杯
残りを 返杯
日本酒で 乾杯
日本酒で 喜劇 残りを 返杯 繰り返しくりかえしくりかえし
ウィスキーで 乾杯
ウィスキーで 喜劇 残りを 返杯 繰り返しくりかえしくりかえし
残りを 冷蔵庫にしまうこと。
円弧をかくとは
チューハイは 夢
ハイボールは 夢
ワインは 夢
チューハイに 酔う
ハイボールに 酔う
ワインに 酔う
チューハイを 80本 買って来て チューハイに 酔う
ハイボールを 30本 買って来て ハイボールに 酔う
ワインを 30本 買って来て ワインに 酔う
チューハイで 喜劇 別のを 返杯 繰り返しくりかえしくりかえし
ハイボールで 乾杯
ハイボールで 喜劇 別のを 返杯 繰り返しくりかえしくりかえし
ワインで 乾杯
別のを 冷蔵庫にしまうこと。
オリジナルの下記の等価定義をそのまま使っています。
夢は 変数と 等価。
酔うは 入れると 等価。
喜劇は 回数指定と 等価。
参考情報
ソースコード全文
※タイトル 詩によるスマイルフェイス乱数表示プログラム
※ Version1.0(1986-03-07)
※ リンク ALL
※ 木村 明
※ 修正:片桐 明(2023-09-20) Mind8 新版暫定 向けに修正
※ リンク filew - guiLib - 9801Lib
※ 修正:@mylifewithviolin(2023-11-23) Mind8向けに修正 スマイルフェイス->●〇
※ リンク filew
夢は 変数と 等価。
酔うは 入れると 等価。
喜劇は 回数指定と 等価。
描画色設定とは 無処理。
角度設定とは 無処理。
図形の重なりを最上位へとは 無処理。
黒とは 無処理。
買って来るとは 割った余りと 等価。
乾杯は 複数空白表示と 等価。
返杯は 表示と 等価。
冷蔵庫にしまうは 一行表示と 等価。
残りは 「●」を 返すこと。
別のは 「〇」を 返すこと。
円を塗るとは
ビールは 夢
日本酒は 夢
ウィスキーは 夢
ビールに 酔う
日本酒に 酔う
ウィスキーに 酔う
ビールを 10本 買って来て ビールに 酔う
日本酒を 8本 買って来て 日本酒に 酔う
ウィスキーを 20本 買って来て ウィスキーに 酔う
ビールで 乾杯
残りを 返杯
日本酒で 乾杯
日本酒で 喜劇 残りを 返杯 繰り返しくりかえしくりかえし
ウィスキーで 乾杯
ウィスキーで 喜劇 残りを 返杯 繰り返しくりかえしくりかえし
残りを 冷蔵庫にしまうこと。
円弧をかくとは
チューハイは 夢
ハイボールは 夢
ワインは 夢
チューハイに 酔う
ハイボールに 酔う
ワインに 酔う
チューハイを 80本 買って来て チューハイに 酔う
ハイボールを 30本 買って来て ハイボールに 酔う
ワインを 30本 買って来て ワインに 酔う
チューハイで 喜劇 別のを 返杯 繰り返しくりかえしくりかえし
ハイボールで 乾杯
ハイボールで 喜劇 別のを 返杯 繰り返しくりかえしくりかえし
ワインで 乾杯
別のを 冷蔵庫にしまうこと。
着飾るは 描画色設定と 等価。
…は つぎと 等価。
眠りとは 角度設定と 等価。
タンゴを踊るは 円を塗ると 等価。
ワルツを踊るは 円弧をかくと 等価。
グッバイは 割ると 等価。
言うは 引くと 等価。
おまじないを言うは 無処理と 等価。
戸惑うとは 3 十ミリ秒単位待すること。
弄ぶとは 捨てると 等価。
明日は 5日。
あさっては 10日。
昨日は 3日。
今日は 0日。
悪夢とは 範囲?と 等価。
きちがい星は 夢。
らんちき騒ぎとは (・ → ・)
※----------※
※ 乱数の種を初期化 ※
※----------※
日時を得て
日を 分けて 和む
きちがい星のうたに 酔う。
☆とは
生は 夢 死は 夢 生と 死に 酔う
死に 1日を 加え 生を 引き 死に 入れ
101日を きちがい星に 掛け
10001日間 余を きちがい星に 酔う
きちがい星と 死の 余を 生に 加え。
文字作画1は 変数。
文字作画2は 変数。
テキスト描画とは
文言1は 文字列定数 「作: 木村 明 (1986)」
文言2は 文字列定数 「Mind8」
文言1を 一行表示し
文言2を 一行表示すること。
扉を開けるとは
テキスト描画する。
扉を閉めるとは
文字作画1を 図形の重なりを最上位へ
文字作画2を 図形の重なりを最上位へ。
メインは
愛は 夢 恋は 夢 幸福は 夢 不幸は 夢
らんちき騒ぎのあとに
扉を開け
28日の 喜劇
回数を 弄ぶ
明日から 395日 ☆ 愛に 酔う
明日から 635日 ☆ 恋に 酔う
あさってから 77日 ☆ 幸福に 酔う
1日目から 7日目まで ☆ 着飾って
愛と 恋と 幸福の タンゴを踊り 戸惑う
愛を 弄び 恋を 弄び 幸福を 弄ぶ
幸福を 2つに 割って 不幸に 入れ
210日目から 330日目まで 眠る
黒を 着飾って
愛と 恋と 不幸の ワルツを踊り 戸惑う
愛を 弄び 恋を 弄び 不幸を 弄ぶ
愛と 幸福と 昨日に グッバイと 言って
愛に 酔う
恋が 不幸を 引きよせる
恋に 酔う
不幸と 明日に グッバイして
不幸に 酔う
愛が 今日から 399日間の 悪夢 でなければ もう一度 …
恋が 今日から 639日間の 悪夢 ならば
愛と 恋と 不幸の タンゴを踊る …
愛を 弄び 恋を 弄び 不幸を 弄ぶ
恋に 幸福を 加えれば 恋に 酔う
恋が 今日から 639日間の 悪夢 でなければ もう一度 …
愛と 恋と 不幸の タンゴを踊りつつ 戸惑う
愛を 弄び 恋を 弄び 不幸を 弄ぶ
繰り返しくりかえしくりかえし
扉を閉める。