OBONO’s Diary

へっぽこプログラマの戯言

一か月で30本のミニプログラムを作ってみて (中)

先日(d:id:OBONO:20150804#p1)の続き。
せっかく30本もプログラム書いたんだから、そこから何か知見でも得られないかと思って、一通りプログラムのソースを見直してみる事にした。


WIDTH 16 で一画面に納めるために、タイトル画面とかゲーム終了後のリトライ待ちとかを書く余裕は無く、ほとんどのプログラムは

  • 初期化
  • メインループ開始
  • プレイヤーの入力の受付
  • ゲームロジックの各種処理
  • ビューの更新
  • ゲームオーバーじゃなければループ継続

というパターンになっている。ただ、一画面にするために、必ずしもこの流れの通りにコードが書かれているわけではなく、順番がごちゃ混ぜになっていたりする事もしばしば。
そこで、実際書いてみたプログラム達が、何の処理をどのくらいやっているのかを把握するために、プログラム内の各種命令を、以下の要素でカテゴリ分けしてみることにした。

  1. 初期化
  2. メインループとウェイト
  3. プレイヤーからの入力受け付けと制御
  4. その他(敵キャラ、ゲーム全体)の制御
  5. ビューの更新

例えば、バルーントリップもどきのソース。

これを、先程のカテゴリで別けると、こんな感じになる。

※色は、1.灰色、2.緑、3.赤、4.黄、5.青


これを30本全部でやってみて、処理内容でカテゴリ別の文字数を集計してみた結果が以下の通り。

このカテゴリ分けと集計の作業にアホみたいに時間がかかって、少し後悔。


で、集計してみて何か分かったかと言われると、う〜ん、正直良く分からない。
一応、各カテゴリの文字数の平均値を取ってみたわけだが、所詮、平均値でしかなく、この文字数の配分で一画面プログラムを書けば良い…なんて話には絶対にならない。ただ、各カテゴリの平均値の1.5倍程度が、そのカテゴリの文字数の限界…という目安くらいにはなるかもしれない。今後、WIDTH 16 で一画面プログラムを書く人の参考になるかもね。
プレイヤーからの入力受け付けについて。プレイヤーを上下左右に動かすようなゲームだと、プログラムの大半がそれの処理に取られてしまうので、ゲームロジックはあまり凝った事ができない。一画面プログラムでは、ワンキーゲーム、もしくはせいぜい左右に動くだけとか、そのくらいに留めておくべきなのかもしれない。まぁ、言わずもがなだとは思うが。
画面の見た目について。自分の場合はコンソール画面を使っているわけだが、LOCATE 命令がかなり文字数を食うため、極力シンプルにせざるを得ない。たくさんの登場人物を同時に動かすというのはかなり厳しくて、画面端に何かを PRINT して、あとは SCROLL 命令で全体を動かすというのが常套手段となってくる。昔の BASIC では、一番下で PRINT するなどして、スクロール方向は上のみ一択だったのだが、プチコン3号の SCROLL 命令は本当にステキだと思う。


っつーわけで、苦労して集計した割には、大した知見も得られず、ただただ虚しさだけが残ってしまった。


もうちょっとだけ続くんじゃ。