連載
» 2012年11月12日 10時00分 UPDATE

プチコンで始めるBASIC新世代育成“虎の穴”(7):「夏草や 負けるな一茶 夢のあと」――ランダム俳句プログラムで奇跡の一句は生まれるか!? (1/3)

懐かしのジョークプログラムの代表格「ランダム俳句プログラム」をプチコンのBASICで再現するとこうなった! 一風変わったデータ管理方法として、グラフィック面をメモリ代わりに使うテクニックも紹介するぞ。

[スマイルブーム マイコン部,MONOist]

一茶も苦労しとるのじゃな!

ハカセ

秋深き 兵(つわもの)どもが ここにあり』か……。ふむ、もうそんな季節なのじゃなあ。

インテリ

何だか雄々しい句ですが、全部間違ってるんじゃないでしょうか。


ハカセ

いやいや、ワシのミスではないぞ。ほれ、この通り、きちんとプチコンで表示されとるじゃろ(画像1)。


今回の実行画面。ちょっと地味? 画像1 今回の実行画面。ちょっと地味?
神崎

えーと、どこからつっこめばいいのか……。


ワンパク

チッ、まだるっこしい! 要するに俳句の“五・七・五”をランダムで組み合わせるプログラムだろ?


ハカセ

夏草や 負けるな一茶 夢のあと』か……。ふむ、一茶も苦労しとるのじゃな。


ワンパク

うるせえヨ!



 ハカセはしみじみとしていますが、もちろんこれは“ジョークプログラム”。現代でも、さまざまな環境で作られている人気のプログラムジャンルですね。懐かしのマイコン時代にも、「基本的にテキストだけで表現できる」&「作り自体は単純」にもかかわらず、結果はなかなか笑えるものに仕上がるということで、初心者のチャレンジにふさわしい定番プログラムの1つでした。

 これを現代のプチコンで再現すると、こんな感じになるでしょうか(ソースコード1)。

CLS 'カ゛メンクリア
CLEAR 'ショキカ
DIM WORD$(256,3)
WORD$(0,0)="ナツクサヤ"
WORD$(0,1)="ツワモノト゛モカ゛"
WORD$(0,2)="ユメノアト"
 
'メインルーチン
@MAIN
CLS
FOR I=0 TO 2 'ハイク セイセイ
 R=RND(NO+1)
 KU$=KU$+WORD$(R,I)+" "
NEXT
'ハイク ヒョウシ゛
PRINT KU$
KU$=""
PRINT
PRINT "ステキナ ク テ゛シタネ"
PRINT "(Space=ヨミナオシ Enter=ツイカ)"
'ニュウリョクマチ
@KEYWAIT
K$=INKEY$()
IF K$==" " THEN @MAIN
IF K$==CHR$(13) THEN @INPUT
WAIT 1
GOTO @KEYWAIT
 
'ハイク ツイカ
@INPUT
CLS
NO=NO+1 'トオシハ゛ンコ゛ウ ツイカ
INPUT "サイショノ5モシ゛ハ";WORD$(NO,0)
INPUT "ツキ゛ノ7モシ゛ハ";WORD$(NO,1)
INPUT "サイコ゛ノ5モシ゛ハ";WORD$(NO,2)
GOTO @MAIN
ソースコード1 ちょっとほのぼのしますね。えっ、そうでもない!? ちなみに[SPACE]キーで俳句の追加(五・七・五の順番で)ができます!

ソースコード1のQRコード ソースコード1のQRコード

 いかがでしょう。2次元配列「WORD$(n1,n2)」の“n1”が句の通し番号、“n2”が順に五・七・五のセンテンスであると、すぐにお分かりですね。

 「INKEY$()」関数は、BASIC以外の言語ではあまり見掛けませんが、キーボードからの入力1文字を返す関数です。毎フレームチェックが必要なので、ラベル「@KEYWAIT」の中でループし続けています(こういう「入力待ちループ」がいちいち必要になるところも、他の言語であまり使われない理由かもしれません……)。

ワンパク

話は分かったけどヨォ、随分と初心者向きのプログラムじゃねェか。MONOist読者には“いまさら”って感じじゃねェの?


インテリ

やってることは変数にセンテンスのデータを格納して、ランダムに読み出すだけですから、目新しさは感じませんね。


ハカセ(涙)

キミら、本当に遠慮なしにズバズバと指摘してくるのう……。じゃが、それももっともじゃ。そこで、「プチコン」らしいひとひねりを加えてみたぞい! ほれっ!!


    TALK "@T200@S3@E8"+KU$

神崎

な……、なるほど。「TALK」文で、音声読み上げしてるんだね。


ハカセ

そこは『読み上げ』よりも『詠み上げ』と言ってほしいのう(ドヤッ!!)。


ワンパク

うるせーッての! 第一、このMONOistの記事ページからは音声が聞こえねェから分かりづれェだろうが!!


ハカセ

ム、ム、ムッ!? パラメータを、“@T200(やや遅め)・@S3(女性)・@E8(単調に)”に設定して、何となく俳句っぽいイントネーションで詠み上げさせたんじゃが……。まあ、そのへんは実際にプチコンでQRコードをロードして、発音させてみてくれい。


QRコード2 「TALK」文で、音声読み上げを追加したプログラムのQRコード
インテリ

こ、これはかなり露骨な販促では……。



 販促かどうかはともかく、多彩なパラメータの発声をプログラム中に簡単に入れ込めるのは、プチコンのBASICならではですね(露骨な販促)。

 過去、いわゆる「PC-6000系」のマイコンにも採用されていた音声合成機能ですが、当時から“コンピュータがしゃべる(それも比較的突拍子もないイントネーションで)”というのは珍しくも愉快なものでした。当時、店頭に陳列されたデモ機の中に、誰かが打ち込んだ「変なフレーズを発声するプログラム」が放置されるという、ちょっとしたイタズラも横行したとかしないとか……。

 今回のプログラムも、音声が付いただけで“衝撃2倍”の面白さなので、できれば実機でお試しいただきたいところです。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

MONOist×JOBS

【年収1000万以上】人気求人ランキング

半導体開発<自動車用半導体パワーデバイス>

機構設計<新蓄電デバイスモジュール>

機械設計(変圧器)

燃料電池自動車(FCEV、FCV)開発戦略マネージャー

システムエンジニア/TPM<VED>