こんにちは。ヤマヤタケシです。
この瞬間は、36歳です。独身です。親が真剣に心配しています。
さて、プログラムを始めたきっかけを書いてみます。
完全にはっきりしていて、小学校に入る前からMZ-1500をいじっていた同級生の影響です。A君としましょう。
A君の家に遊びに言った時に、マイコンベーシックマガジンやMSXマガジン、MSXファンに載っているアルファベット羅列を入力するとゲームができるんだぜ!って教えてもらいました。
A君はそのころMSX2に乗り換えたところでした。MSX2はMZ-1500よりもすごい良い!とか言っていたので、自慢したかったのかもしれません。
ゲームと言うのは数千円するので子供のお小遣いを遥かに超えた金額です。それが数百円の雑誌に載っているリストを入力するだけで遊べるというなんとも信じがたい事実でした。
ゲームに飢えていたことに加えて、ゲームの仕組みに興味がありました。時計はもちろん分解するくらいには技術っぽいのが好きだったようです。
自分も、ベーマガのリストを入力してゲームで遊びたくなりました。
パソコンが欲しくてたまらなくなりました。
オヤジに頼みました。
「パソコンが欲しい、X68000とかすごい高いけど、MSXなら5万円くらいだし、むしろそれが良い。」
オヤジはのらりくらりとかわしました。
今思えば、田舎とはいえ、5人兄弟なのでいろいろ金がかかる時期だったと思います。誰でも渋りますね。
そんな小学校5年生の時に、学校の授業でなにかしらのコンクールに応募しようっていうのがありました。
絵や作文など、いくつかのコンクールから選んで提出しろと。ズッコケシリーズとか、ルパンとか、比較的読書好きだったので、物語を書きました。
ある日小学生が、道端で拾ったバッジを近所の兄さんに渡すと、それを狂ったようにパソコンに入力すると、ドエライことがおきて、肝心なところで夢オチになる物語です。
どうにもパソコンが欲しかったようです。
その物語がなんと!新聞社の大賞になって、新聞に顔写真とその物語が掲載されました。
さらに、同時期、弟の一人が腹痛で入院しました。腸がねじれて、つまって、腸の一部が壊死するほどに進行していました。即日手術です。日を開けて、全手術です。最初の開腹の時には、ガスがたまった腸が飛び出してきたとのことです。そんな、生死を彷徨う事態でしたが、なんとか回復しました。
オヤジはいろいろ嬉しかったのでしょう、ボーナスの大半を使ってPC-9801DXとプリンタをセットで買ってきました。
あとで聞いたら60万円くらいしたようです。
オヤジ自身もこれからはパソコンの時代だと認識していて、勉強するつもりだったようです。
僕はゲームしか興味がないので、MSXが良かったし、その値段をだすならX68000の方が良かったと思いつつも、PC-9801はエロゲーの影響で普及率が高く、普通のゲームもたくさん売っていました。MSXに負けない盛り上がりがあったのです。
PC-9801DXは、PC-9801シリーズの最後の16bitマシンです。FM音源が内蔵されているのでゲームのBGMがちゃんと鳴ります。
当たり前かと思っていまいしたが、本来は別売りのサウンドカード(定価25,000円)を拡張スロットに挿す必要があります。
ファミコンが15,000円くらいなので、えらいこっちゃですね。
えーっと、プログラミングの話でした。
そんなわけでPC-9801DXを手に入れた僕は学校から帰ったらすぐに、マイコンベーシックのゲームのプログラムリストをチマチマと入力しました。左手の指で抑えて、右手で入力するスタイルです。今でも、右手だけでそこそこの速度で打てます。
A君には色々教わりました。プログラムリストの入力の仕方、修正の仕方、保存の仕方など。寝る前はN88日本語Basicマニュアルを見て、サンプルコードの意味なんかを考えていました。
小学生なので、英語を知りません。LINEはエルアイエヌイーとおぼえていました。FORはエフオーアール。IFはアイエフ… A君も同様でした。
入力したプログラムリスト、いまならコードって言いたいですが、当時はリストと言ってました。
お、こんなところに、N88日本語Basicのリストが載っています。 N88BASICでシューティングゲームを作りたい!!
このサイトにあるようなベーマガのリストを気の遠くなるような時間をかけて入力していました。
入力が終わって、達成感を感じつつ、F5キーを押します。
(F5はRUN命令のショートカットキーになっていました。)
実行すると、絶対、かならず、100%、動きません。
入力ミスがあるからです。
ものすごい時間をかけて入力したのに、ゲームが動作しないのです。
絶望しかありません。
泣きたくなります。
とはいえ、修正方法は習っています。
答えは手元にあるんです。
入力をミスっているだけなのです。
リストは300行とか400行とかあります。
C言語とは違いBASICは1行に結構詰め込みます。
入力ミスを探すのはなかなかツライのです。
ひとしきり絶望したら、エラーの修正モードに入ります。
かなりの時間的な投資をしているので諦めるわけにはいきません。
実行する、エラーがでる、修正する、実行する、、、を繰り返します。
最初はシンタックスエラーがでます。Syntax Error 130 みたいに、行番号とともにでます。illigal function callも同様です。それらは比較的簡単です。その行に必ず入力ミスがあります。LINEがLNIEみたいにじっくり見ればわかります。
問題はその後です。
実行しても、タイトル画面がでなかったり、ゲームが始まってもゲームとして成立していないことがあります。
今思えば、これを修正するには、プログラムを理解する必要があります。しかし、当時はまったくわかりません。ただ、黙って写しているだけです。しょうがないので、プログラムの最初から最後までチェックします。多くの場合は変数名が間違っています。まれに、GOTOの行き先の行番号が間違っています。
BASICはC言語やC++などと違って変数の宣言は不要です。なんでも使えます。TANK=1とすぐに書いて、そのあとTAKN=TANK+1とかなっているたりしてもエラーはでません。
ただ、挙動がおかしくなるだけです。
挙動がおかしいと感じても、正しい挙動は知りません。
遊んだことがないゲームのリストを入力しただけです。
おかしいと感じるので、ベーマガに載っている画面写真と実行画面を真剣に見比べたり、ゲームの説明を真剣に読んだりしました。
結局、そこそこ遊べるかなくらいで切り上げて、自分がそこそこ遊んだら弟や妹に遊ばせて、充実感を感じていました。
そんなことを繰り返すうちに、プログラムの意味を徐々に理解するようになりました。意味を理解しないと修正できないという切実な需要があったからです。
そして、他人のゲームを入力するよりはオリジナルゲームを作りたくなっていきます。
気づけば今もゲームを作っていますが、やってることはあまり当時と変わりません。
プログラムリストを見るのではなく仕様書みながら実装しています。
毎日デプロイして、遊んだり、遊んでもらったりして、フィードバックをしたり、されたりしています。
そんじゃまた。