連載
» 2012年10月03日 10時00分 公開

孤独な笑みを画面にさらして、ペン先で打ち込む「1画面プログラム」の美学プチコンで始めるBASIC新世代育成“虎の穴”(6)(3/3 ページ)

[スマイルブーム マイコン部,MONOist]
前のページへ 1|2|3       

残す最大の難関を攻略せよ!

インテリ

残す最大の難関が、1行目のラベルですね。ラベルだけにコロンでつなげられないし、まるまる1行が占領されてしまいます。

神崎

つまり、ラベルを使わなければいい……。でも、そんなことできるの?


ハカセ

もちろんじゃ。このプログラムの場合は、要するにループさえすれば何でもいいわけじゃよ。


ワンパク

カンタンに言ってくれるゼ……。ループする命令っていえば、『FOR〜NEXT』文とかその辺だろうがヨ……。


インテリ

なるほど! ソレは使えるよ!


ワンパク

え、FOR〜NEXTでループすんのか? でも『FOR (変数)=(初期値) TO (終了値)』の終了条件満たしちまったらもうオシマイじゃねェ? 『FOR A=0 TO 65536』とかか?


神崎

うーん……。それも案外カンタンに終わっちゃいそうだけど……。


インテリ

逆に、終了条件を満たさない方法を考えればいいのさ。つまり、こうだね。



  @GAME …… GOTO @GAME

  

  FOR A=0 TO 1 …… A=0:NEXT



ワンパク

そんなのありかヨ! FOR文って、こんな風に使うモンじゃねェと思うんだが……。


神崎

でも確かに、これなら終了しないね、このループ……。



ついに完成 図6 ついに完成! 末尾にまだ空白が!! 何か処理を追加しても面白そう 【画像クリックで拡大表示】

インテリ

正しいFOR文の使い方じゃないけど、『3行プログラム』という制約をクリアするための、“普通のプログラムでは出てこない発想の転換”というところだね。


ハカセ

いかにも。そこが超ショートプログラムの面白みじゃな。今回使ったテクニックはまだまだ序の口。黄金期から現在に至るまで、1画面プログラムの先達が生み出してきたテクニックはまだまだあるぞ。ここまで偉そうに言っておったワシも、1画面プログラムを作る時はぶっちゃけイロイロ参考にさせてもらっておる。


神崎

本当にぶっちゃけたなあ。


ソースコード2 とうとう3行になったプログラム。実機で見るよりは読みやすいかも?

    FOR A=0 TO 1:CLS:COLOR 9:FOR I=0 TO S:LOCATE RND(28)+4,RND(24):?"■";:NEXT:COLOR 15:Y=12
    FOR X=0 TO 31:B=BUTTON():Y=Y-(B<=0)*(Y>0)+(B>0)*(Y<23):WAIT 10:IF CHKCHR(X,Y) THEN S=0:END
    LOCATE X,Y:?"●";:NEXT:S=S+10:A=0:NEXT

QR2 「3行プログラム」のQRコード


 さて、いかがでしたでしょうか、3行プログラムの世界。プログラムはそれだけでも楽しい(苦しい?)ものですが、こんな“縛り”を設けると、さらに一風変わった論理パズル的な楽しみが味わえます。

 発想の転換を武器に遊ぶ知的遊戯、1画面/1行/3行プログラム。皆さんもチャレンジしてみませんか?

 最後に、マイコン世代のあなたの上司をシビれさせるキーワード、BASICトークのススメをお届けします。



今回のBASICトークのススメ

リピート・アフター・ミー

1画面プログラム並みにきっちりしたコードを書いてみせますよ



 ここまでお読みになった方はもうお分かりでしょう。マルチステートメントや独自のテクニックが使われるショートプログラムは、短くて(ある意味)エレガントではあるものの、はた目にはかなり判読しづらいもの。あなたの上司も「待ちたまえ、キミ……」と来るに違いありません。

 ですが、ここであなたがごく普通なコードを書くとどうでしょう。「心配してたよりもずっと読みやすい!」と、あなたの上司も思わず評価が2割増し――。世の中がそんなに思い通りにいくとはさすがに筆者も思えませんが、可能性はゼロではないはずです。

 最初の段階で頓挫してもしなくても、また次回お会いしましょう。(次回に続く)

本家Webサイトへのリンク:
プチコンmkII
プチコンmkII 購入の手引き

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.