【 ストレトリ 製作過程 】 |
---|
Home | PC-6001mkII | Program | etc |
関連リンク |
●ストレトリ
● (P6)Making「ストレトリ」 |
---|
更新日:2007/08/25 作成日:2006/08/27 HSPプログラムコンテスト2006 にエントリしたプログラムの製作過程を綴ってます。 完成版のページはこちらにあります。 |
2006/08/25〜27:なにを作ろうか... |
今年は、コンテスト用に何を作るか...。今年も一般部門には見向きもせずショート部門で攻めて行きたい。という思い以外、正直なところ何も考えてなかった。 とりあえず、現在エントリーされているショート部門のプログラムを参照...う〜む、鑑賞モノのレベルが高いなあ。ちょっと今からではアイディアもないし太刀打ちできそうにないので、なにか遊べる系統のものが良いかな。 はじめに考えたのは、キーボードシューティングだった。 一発撃つとこちらに向かって襲ってくる敵や非常に小さく見づらい文字の敵、複数の文字が重なって表示される敵、突然画面内に出て襲ってくる敵...などと考えて行くにつれ、ショートプログラムに収まる気がしなくなってきたので、とりあえずお蔵入りにする。 次に考えたのは、動くジグソーパズル。 これなら、見た目より少ない容量でできそうかもと思ったが、「動くジグソーパズル」を探してみると実に12万件以上もヒット...。類似が多いからダメという訳ではないけど、作るからには何かひとさじ加えたいな、と考えていたが、これといったアイディアが思い浮かばない。というわけでまたお蔵入り。 これは何かアイディアが思い浮かんだら復活させよう。 とやっているうちに27日になってしまった。 ここで、ふと昔作りかけていたパズルゲームを思い出す。盤面上にある数字から連続した数字を取っていく詰めパズルで、昔P6で途中まで作っていた...ような気がする。 よし、ここで思い出したのも何かの縁(?)だし、これでいこう。 |
2006/08/27:基本ルールとやりたいこと | ||||||||||||||||||||||||||||||||||||
プログラムを作るにあたって、基本的なルールを書きとめておく。
あと、今時点でやりたいこと(できるかどうかは別として)を忘れないうちに列挙しておく。どこまで収まるのか??
|
2006/08/29:画面っぽいもの |
面のデータ形式を考える。4KBというサイズの中では面データも無視できない大きさになるのでなるべく小さくしたいが、今の所は1マス1バイト(1面辺り36バイト)で考える。できれば8面くらい入れたいので、8面分のダミーデータを入れておく。 このデータを元に、簡易的に画面を作成し、カーソル移動のみ実装してみる。 この時点で、既にstart.axは 2,227バイト...。カーソルを回転させている場合ではなかったか?まだ判定ルーチンを全然入れていないのに大丈夫だろうか?と人ごとのように書いてみる。 |
2006/09/03:判定 |
「縦横に3つ以上連続した数字の範囲内で連続した数字の組合せになる」。当然の事ながら、これをプログラムで表現する必要がある。 例えば数字の組合せが「3,5,2,4」の場合、これを素直に処理として表現すると、以下のようになるだろうか。
ただこの方法では最初の並べ替えでプログラムが長くなる(ショートプログラムとしては厳しい)ので、今回は少し特殊に分類を使った処理を模索する。さきほどと同じく数字の組合せが「3,5,2,4」の場合を元に説明する。
この他に、数字を取る簡易的な処理とカーソルの処理を少しだけ書き加え、ようやく骨格の部分ができあがった。この時点で、start.axは2,796バイト。ここから、骨格部分のシェイプアップに移る。 |
2006/09/03:シェイプアップ | |||||||||||||||||||||||||||||||||||||||||||||
プログラムの骨格が出来上がったので、ここで一度 start.axの削減にとりかかる。まずは、以下に挙げる汎用的な項目を中心にサイズの削減を行う。これだけでも数%はプログラムの削減ができる、はずだ。
この先もこれらの基本的な項目や処理内容自身の組替えでプログラムを削減しつつ機能を追加しつつを繰り返す事になる。この辺りが苦しくもあり面白くもありだと思う。 この時点で、start.axは 2,632バイト。1割はサイズを削減させたかったが、そううまくは行かなかった。 |
2006/09/05:手詰まれ! |
9/3に作成した判定ルーチンを利用して、手詰まり判定の処理を追加する。 処理自身は単純で、画面内で縦横に取る全ての組み合わせ全てで判定ルーチンを実行し、最終的に取れない数字があれば手詰まりとなる。 試しに、手詰まり判定処理後に手詰まりとなる数字を赤く表示させてみた。初めの予定では、取れる数字がなくなったときに手詰まり表示という流れだったが、途中で手詰まりがわかった方が良いような気がしてきた。 この時点で、start.axは 3,360バイト。面クリアとやり直しを加えて画面レイアウトを変えたらほぼ一杯?マウス操作も入れたいけど...。 |
2006/09/09:マウス対応 |
やり直し部分は、Enterを押したら面の初期設定部分に移動,面クリア処理は残り数が0になったら面クリアのダイアログを表示 と、暫定だが最低限の処理を実装する。 で、マウス操作だ。これが無いと本作としては やっぱり片手落ちだろう。 妙なこだわりだが、マウスでプレイする時はキーボードに触らなくても良いようにしたい。という訳で、これまでキーボード用に行った以下操作系処理を全てマウス用に実装する事になる。
マウスでできる操作で比較的少ない処理でできそうな事と言うと...以下のようなマウス左右ボタンの組合せだろうか。
マウス右ボタンは、後に入るかどうか分からない「一手戻し」の操作でも使う事を見越して、非トリガータイプキーの指定はしたくない。という事で、3,4はとりあえず却下。 1の同時押し(マウス左右ボタンに非トリガータイプキーを指定しない)だと、タイミングが非常にシビアなので、これも却下。という事で、消去法ではあるが、2の処理で進めて行くことにする。 この時点で、start.axは 3,834バイト。あと262バイトしか使えないが、ここからの空き容量との攻防(?)がプログラム作成の醍醐味となる、と思う。 |
2006/09/13:減量 | ||||||||||||
プログラムの空きも少なくなったので、またstart.axのサイズの削減を行う。 この辺りになると、サイズの削減を行うにつれてリストがだんだん見辛くなってくる。ここでは、リストの見辛さと引き換えにサイズ削減を行う様子をいくつか書きとめておく。
この時点で、start.axは 3,702バイト。なんとか132バイト増えた。確証は無いが、何十回かリストを見直せば、後100バイト位は削れると思う。 |
2006/09/16:詰めこみ |
プログラムの仕上げとして、予定していた処理を入れるだけ入れてみる。
|
2006/09/18:面作成と名付け |
プログラムの処理とは関係ないが、面の作成を行った。 現在愛読している縦長の某パズル紙でもそうだが、やはり人間くささのあるパズルは面白い。という事で、各面にテーマを決めて作成し、唯一解になるように数字を調整していく。 面数順にちゃんと難しくなっていってるかは微妙なところだが、なんとか最初の予定だった8面分を作成した。 もう一つ、ちゃんと決めるべき事が残っていた。タイトルだ。 単純に(仮)を取って「ストレート」に決定しようと思っていたが、どうもタイトルが安直過ぎる。どうせなら Googleで検索したときに分かりやすいように、もうちょっとだけ変えておきたい。という事で、いくつか調べてみた。
|
− | ストレトリ | − |