「おっさんたちよ、これが現代のBASICだ。」――再びギャル降臨、ただし80年代風な!:プチコンで始めるBASIC新世代育成“虎の穴”(10)(1/3 ページ)
80年代は最高だった――。ニンテンドーDSi/3DSでBASICプログラミングが楽しめる「プチコンmkII」を題材に、マイコン全盛期の雰囲気を味わいながら“作る楽しさ”をお届け! 今回は、ラインとペイントで描かれた美少女がセクシーポーズ(!?)で降臨。で……、レッグウォーマーってそんなにはやったの?
これが新しいプログラムだ!!
前回「人工無脳は電気ヒツジの夢を見るか?」では、古典的な「20の質問」タイプのデータ蓄積プログラムを題材に取り上げました。そして、テキスト表示のみではあまりにも“昔風”過ぎる! ということで、ちょっぴり見た目もアレンジしてみました。
今回は、前回作成したプログラムをベースに、さらに“プチコンらしさ”を加えていきます!
では早速、生まれ変わった新しいプログラムを紹介しようかの。これじゃ!(ホイッ)
……。へ、変化のかけらも見当たらねェ!
うん。まあ、ワシも言い過ぎた気がすごくしてきたわい。この新しいプログラム、画面上の見た目からでは分からんのじゃが……。実は、メッセージを音声合成でしゃべっておるのじゃ。
あ、あぁ。……まぁ、見た目は同じだけど、確かに雰囲気はかなり変わったね。
リッチな雰囲気になった気はしますね。
なるほど、ある意味“フルボイス”ってコトか。それにしても少しくらい見た目を変えてもよかったんじゃねェの?
ううう……。そ、それでは追加した音声合成部分のソースコードを見てもらおうではないか(グスン)。
@TALKSUB SND$="@S9" LNGT=LEN(MSG$) FOR L=0 TO LNGT-1 M$=MID$(MSG$,L,1) M=ASC(M$) IF M$=="~" THEN M$="-" IF M$=="・・" THEN M$=" " IF M$=="-" THEN @SKIP IF M$==" " THEN @SKIP IF M$=="?" THEN @SKIP IF M$=="!" THEN @SKIP IF M<164 THEN M$="" IF M>224 THEN M$="" @SKIP SND$=SND$+M$ NEXT L @TALKWAIT IF TALKCHK() THEN WAIT 1:GOTO @TALKWAIT TALK SND$ PRINT MSG$ RETURN
以前はそのまま表示していたメッセージを、変数『MSG$』に代入してからこのサブルーチン『@TALKSUB』に飛ばすようにしたんですね。
『IF〜THEN』文が連続するのは少々安直じゃったが、“見やすさ重視”ということで……。
もちろん見やすさ重視のためなので(断言)、見ただけで想像は付くでしょうが、これらの「IF〜THEN」文では、プチコンのTALK命令の記法でエラーが出ないように調整しています。例えば“波線「〜」を伸ばし棒「ー」に変える”などですね。「あたたか〜い(TALK"アタタカ~イ")」と記述するとエラーになってしまいますが、「TALK"アタタカーイ"」ならほぼ意図通りに発音されます。
文字関数は、他の言語との違いもいろいろとありそうなので上から順に見ていくと、
- 変数「LNGT」に「MSG$」の総文字数を代入して(LEN()関数)
- この総文字数分だけくり返しで
- 1文字ずつ抜き出した文字(MID$()関数)を「M$」に代入してチェック
- さらにASCIIコードに変換(ASC()関数)した数値も「M」に代入してチェック
という処理をしています。
TALK命令で主に扱うカナ文字はASCIIコードでは“164〜224”なので、IF文の羅列の最後でカナ以外を丸ごと削除しているのが分かりますね。
こうして最終的に「"@S9アタタカーイ"」のように整形した変数「SND$」として、TALK命令で出力しています(先頭の「@S9」は声質をアニメ声にするパラメータです)。
発声中は新たな発声で遮らないように、TALKCHK()関数で発声中かどうかを確認して、ウェイトを入れています。ただし、こうした処理は好みの分かれるところです。きっと、スキップしたいという人もいることでしょう。
「ギャルゲー」再び、今度のはさらにセクシーに!?
ヘビーユーザーであれば気づいたかもしれんが、実はこのプログラム、プチコンにプリセットされたサンプル『GAME6』の姉妹編になっておるのじゃよ。
エッ……。
そういえばどっちも『音声合成でしゃべる』『女性キャラが』『対話形式で』『データを蓄積していく』ゲームか。内容的には近いのかも……?
さよう。蓄積されたデータの保存など、『GAME6』を参考に付け足しても面白いかもしれんな。
しかし、どっちにしても、キャラに手間が掛かってねェな! フリー素材だったりテキストキャラクターだったり……。もうちょっと何とかならねェのか?
キミキミ、そういうところが現代っ子っぽいのう〜。じゃが、さっきから画面の見た目が代わり映えしないと言われまくっておるのも事実。これで最終回じゃし、ワシらが総力を結集してグラフィックスを全面刷新した、さらに新しいプログラムをお目にかけようぞ! そりゃ!!
えっ、最終……? いやそれより、えっ?
な、何か古い! よく分かんねェけど、全体的にいろいろ古くせェー!!
い、言いたいことはたくさんありますが、なぜ今こんなタイプのレッグウォーマーを履いているんでしょうか。
あ、そこから? そこ気になっちゃうの!?
そう……、そんなオシャレが許された時代もあったのじゃよ。必要以上にダラッとしたり、破けたりしているスウェットとかのう。
何だかポーズも古くさいですね。というか、セリフとポーズがかみ合ってない気がするのですが……。
それはゲームを進めていくうちに、グラフィックスが(うまく言えないが)何らかの望ましい方向に変化するのでは? というプレーヤーの興味や期待を喚起し、意欲につなげる仕様になっているのです(棒読み)。
うるせェ!
実際、グラフィックスが変化するわけじゃないしね。
きりがなさそうじゃから言ってしまえば、この連載らしく温故知新で昔のグラフィックス・スタイルを再現してみたというところじゃな。いかにも古くさく感じるのは、線にアンチエイリアスがかかっていないのが大きいのではないかの?
ああ、そういえば……。色もぼかしやグラデーションがないというか、色数自体がすごく少ないですね。
タネを明かせば単純なことじゃが、全てラインとペイントで描かれているのじゃな。プチコンでいえばGLINE命令とGPAINT命令じゃ。
Copyright © ITmedia, Inc. All Rights Reserved.