連載
» 2013年02月07日 08時30分 UPDATE

プチコンで始めるBASIC新世代育成“虎の穴”(10):「おっさんたちよ、これが現代のBASICだ。」――再びギャル降臨、ただし80年代風な! (1/3)

80年代は最高だった――。ニンテンドーDSi/3DSでBASICプログラミングが楽しめる「プチコンmkII」を題材に、マイコン全盛期の雰囲気を味わいながら“作る楽しさ”をお届け! 今回は、ラインとペイントで描かれた美少女がセクシーポーズ(!?)で降臨。で……、レッグウォーマーってそんなにはやったの?

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

これが新しいプログラムだ!!

 前回「人工無脳は電気ヒツジの夢を見るか?」では、古典的な「20の質問」タイプのデータ蓄積プログラムを題材に取り上げました。そして、テキスト表示のみではあまりにも“昔風”過ぎる! ということで、ちょっぴり見た目もアレンジしてみました。

 今回は、前回作成したプログラムをベースに、さらに“プチコンらしさ”を加えていきます!


これが前回作成したプログラム 画像1 これが前回作成したプログラムの画面

ハカセ

では早速、生まれ変わった新しいプログラムを紹介しようかの。これじゃ!(ホイッ)


そして、これが新しいプログラムだ!! 画像2 そして、これが新しいプログラムの画面だ!!

ワンパク

……。へ、変化のかけらも見当たらねェ!


ハカセ

うん。まあ、ワシも言い過ぎた気がすごくしてきたわい。この新しいプログラム、画面上の見た目からでは分からんのじゃが……。実は、メッセージを音声合成でしゃべっておるのじゃ。


神崎

あ、あぁ。……まぁ、見た目は同じだけど、確かに雰囲気はかなり変わったね。


インテリ

リッチな雰囲気になった気はしますね。


ワンパク

なるほど、ある意味“フルボイス”ってコトか。それにしても少しくらい見た目を変えてもよかったんじゃねェの?


ハカセ(涙)

ううう……。そ、それでは追加した音声合成部分のソースコードを見てもらおうではないか(グスン)。


@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
ソースコード1 プチコンの画面でざっくり1画面分

インテリ

以前はそのまま表示していたメッセージを、変数『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()関数で発声中かどうかを確認して、ウェイトを入れています。ただし、こうした処理は好みの分かれるところです。きっと、スキップしたいという人もいることでしょう。

QR1-1QR1-2 こうしてできたフルボイスバージョンのQRコード。左(1枚目)・右(2枚目)の順で読み込んでください

>>ソースコード全体をテキストで確認[ソースコード2]


「ギャルゲー」再び、今度のはさらにセクシーに!?

ハカセ

ヘビーユーザーであれば気づいたかもしれんが、実はこのプログラム、プチコンにプリセットされたサンプル『GAME6』の姉妹編になっておるのじゃよ。


「GAME6」はこんな感じでした 画像3 「GAME6」はこんな感じでした

ワンパク

エッ……。


神崎

そういえばどっちも『音声合成でしゃべる』『女性キャラが』『対話形式で』『データを蓄積していく』ゲームか。内容的には近いのかも……?


ハカセ

さよう。蓄積されたデータの保存など、『GAME6』を参考に付け足しても面白いかもしれんな。


ワンパク

しかし、どっちにしても、キャラに手間が掛かってねェな! フリー素材だったりテキストキャラクターだったり……。もうちょっと何とかならねェのか?


ハカセ

キミキミ、そういうところが現代っ子っぽいのう〜。じゃが、さっきから画面の見た目が代わり映えしないと言われまくっておるのも事実。これで最終回じゃし、ワシらが総力を結集してグラフィックスを全面刷新した、さらに新しいプログラムをお目にかけようぞ! そりゃ!!


総力を結集しました(ドヤッ) 画像4 総力を結集しました(ドヤッ)

インテリ

えっ、最終……? いやそれより、えっ?


ワンパク

な、何か古い! よく分かんねェけど、全体的にいろいろ古くせェー!!


インテリ

い、言いたいことはたくさんありますが、なぜ今こんなタイプのレッグウォーマーを履いているんでしょうか。


ハカセ

あ、そこから? そこ気になっちゃうの!?

そう……、そんなオシャレが許された時代もあったのじゃよ。必要以上にダラッとしたり、破けたりしているスウェットとかのう。


インテリ

何だかポーズも古くさいですね。というか、セリフとポーズがかみ合ってない気がするのですが……。


ハカセ

それはゲームを進めていくうちに、グラフィックスが(うまく言えないが)何らかの望ましい方向に変化するのでは? というプレーヤーの興味や期待を喚起し、意欲につなげる仕様になっているのです(棒読み)。


ワンパク

うるせェ!


神崎

実際、グラフィックスが変化するわけじゃないしね。


ハカセ

きりがなさそうじゃから言ってしまえば、この連載らしく温故知新で昔のグラフィックス・スタイルを再現してみたというところじゃな。いかにも古くさく感じるのは、線にアンチエイリアスがかかっていないのが大きいのではないかの?


インテリ

ああ、そういえば……。色もぼかしやグラデーションがないというか、色数自体がすごく少ないですね。


ハカセ

タネを明かせば単純なことじゃが、全てラインとペイントで描かれているのじゃな。プチコンでいえばGLINE命令とGPAINT命令じゃ。



       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

MONOist×JOBS

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

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

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

機械設計(変圧器)

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

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