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

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

「スパゲッティ」になったって構わない。オレはただ、ソースコードを1画面に収めたいだけなんだ。い、いや、3行に収めたいんだっ!! ニンテンドーDSi/3DSでBASICプログラミングに挑戦。

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

いきなりイクぜ!!

ハカセ

いきなりじゃが、今回は完成済みのプログラムリストから見てもらおうかのう。

ワンパク

オイオイ、マジでいきなりだナ。のっけから地味なコードが並んだら、読者が減るんじゃねェの?


ハカセ(涙)

そ、そう言われるとミもフタもないが……。一応、簡単で短いプログラムじゃから見てくれんかのう。



スクリーンショット 図1 な、何とか画面を華やかにしようと、先に「スクリーンショット」をお見せします(汗)

ソースコード1 ご安心ください。さすがに難しいことはやっていません

    CLEAR 'ショキカ
 
    @GAME
    'カベ
    CLS 'ガメンクリア
    COLOR 9
    FOR I=0 TO S
     LOCATE RND(28)+4,RND(24)
     PRINT"■";
    NEXT
 
    'ゲーム
    COLOR 15
    Y=12
    'メインループ
    FOR X=0 TO 31
     B=BUTTON()
     IF B!=0 THEN Y=Y+1 ELSE Y=Y-1
     IF Y<0 THEN Y=0
     IF Y>23 THEN Y=23
     WAIT 10
     IF CHKCHR(X,Y)!=0 THEN END
     LOCATE X,Y
     PRINT"●";
    NEXT
 
    'クリア
    S=S+10 'カベ フヤス
    GOTO @GAME

QR1 「ソースコード1」のQRコード
プチコン機種依存文字 注:本稿で紹介するソースコード中の『■』は左のタイル状のプチコン機種依存文字に、『●』は右のUFO(?)型のプチコン機種依存文字に読み替えてください


 いかがでしょうか? いきなりのサンプルプログラム、驚かれましたか?

 内容は至って単純で、UFOを操作し、青い障害物を避けながら進むゲームです。UFOは強制的に右上に向かって動いていきますが、ボタンを押している間だけ右下に下降します。画面右端まで着いたら障害物が増えて、また左端から再スタートします。

 このルールと画面でピンときた人も多いことでしょう。これはいわゆる「ワンキーゲーム」です。マイコンゲーム黎明期から現在まで脈々と続く、シンプルな操作がそのままジャンル名になったゲームです。

 キー(またはボタン)入力のON/OFFだけで進むというルール以外は全て自由。操作系のプログラミングが手軽なので、ショートなアクションゲームに多く見られ、プログラム初心者の“友”でもありました。


ハカセ

例によって、BASICは読み下しが比較的カンタンじゃし、コメントも付いておるので1行ごとの説明はせんが……、ここで1つ挙げるとするなら、『BUTTON()』関数はニンテンドーDSi/3DSのボタンの押下状態を取得する命令じゃな。全ボタンの状態がビットで返ってくるのじゃが、今回のプログラムはワンキーゲームなので全て“OFF(0)”かどうかだけをチェックしておる。


インテリ

見慣れないと言えば、『CHKCHR()』もそうですね。見たところ、指定された座標にあるキャラクターをチェックしているようですが……?


ハカセ

さよう! 本来はキャラクタコードが返ってくるのじゃが、今回は障害物に当たったかどうかだけ分かればよいので、これまた戻り値が“0”かどうかだけをチェックしておるな。便利な命令じゃが、かつてのマイコンのBASICでは、マシンによってこの手の命令があるかないかまちまちで、『方言』に泣いたユーザーも多かったものじゃ。


神崎

大体分かったけど……。これってもう完成してるよね。今回はこれで終わり?


ワンパク

まさかな。さすがにシンプル過ぎるから肉付けしていこうって話じゃねェの?


ハカセ

す、するどい……。が、むしろ真逆じゃ! このプログラムをこれから短くしてゆくぞ!


ワンパク


インテリ

!?


神崎

な……、なぜ?



ようこそ、「1画面プログラム」の世界へ

 皆さん、「1画面プログラム」という言葉をご存じでしょうか。

 ウィンドウUIや画面解像度の向上もあって、現在は「1画面」と言ってもさまざまですが、昔の“マイコン”では文字サイズ・画素数ともに固定が普通(スクリーンモードや表示形式など、ある程度の変更は可能)でした。例えば、1画面に入る文字の最大数が横40文字×縦25行という感じです。

 そんな1000文字程度のスペースに、完結した実行可能なプログラムを何とか詰め込むのが1画面プログラムです。ショートプログラムの1つの目安として、また、ムダを省いた華麗なプログラムの形として、1画面プログラムは、かつてのコンピュータ誌で多くの誌面を彩ったものです。


インテリ

うーん……。ソースコードを見直したり、いわゆる『ダイエット』なら、今でも普通にあることですが……。


ハカセ

似たところはあるが、それはむしろ可読性や実行速度のためじゃろ。1画面プログラムは、『スパゲッティ』になろうが、何が何でも1画面に収めるのがゴールじゃから、全く別の世界じゃのう。もちろん、見やすいに越したことはないんじゃがのう。


インテリ

そこまでして“1画面に収める”理由がよく分からないのですが……。


ハカセ

フム、良い質問じゃぞ。

では、実際にソースコードを短縮しながら、ボチボチと理解してもらおうかのう。



1画面プログラム 図2 1画面に入りきりました。ですが、これは始まりにすぎません

ハカセ

今回のプログラムはもともと短いから、コメントとインデントを削ればもう1画面じゃな。とはいえ、プチコンの編集画面は『29文字×24行』じゃから、その意味では昔のマイコンよりも“キビシイ世界”かもしれんのう。


神崎

『ムダを省いた』とも言えるけど、何だか見づらいリストになった気もするなあ……。


ハカセ

神崎よ、この程度で『見づらい』と言うのは、まだまだ早いぞ。ギリギリの詰め込みこそがロマンじゃな。

よし、おヌシら付いてこい! 『3行プログラム』に挑戦じゃ!


インテリ

3行プログラム?


ワンパク

ロ……、ロマン?


       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.