2017年2月22日水曜日

高校生時代のプログラムの思い出

一番下の息子と話をしていました。

私「父さんが高校生の時、ポケコンというのを授業で使っていて、化学科なのに、全然関係ない「プログラム」に一番情熱かけてがんばってたんだよ。RPGを作って、クラス内で流行らせたりしてたんだ」

息子「あ!それ前にもきいたことある。友達を見て笑ってた話もう一回教えて?」

ポケコンとは

ポケットコンピュータ(以下ポケコン)とは、工業高校とかでは授業で使う小さなパソコン。今からみたら信じられないぐらい低スペックではあります。

画像はウィキペディアより。

両手で収まるぐらいの高機能電卓で、関数計算やBASICと呼ばれるプログラム言語を走らせる事ができました。

今はもう生産されていないようです。

ポケコンとの付き合い

「工業数理」という授業で、おもに使ったのかな。普段の(工業系の授業の)計算でも使っていました。BASICプログラムは基礎の基礎を授業で習っただけです。情報技術科とかの人はもっとやってたんでしょうけど、私は化学薬品を取り扱う科だったので、すぐにプログラムは授業から離れました。が・・・。

可能性にはまりましてね。

独学で勉強しました。勉強というか、プログラムをいっぱい書きました。最初はゲームブックみたいな、選択肢によって話が分岐するというだけのものでしたが、最終的には三部作となるRPGや、落ちゲー、パズルゲームの「倉庫番」を完成させられました。

何かをお手本としてプログラムを書くという事はなく、すべて自分のひらめきで書いていました。「あ、この関数をこういう書き方したら、こういう風な処理ができそう!この処理が出来たらこういうゲーム作れそうじゃない?」とか「こういうゲームを作るなら、どういう処理をさせればいいのかな?」って感じで考えていました。

5859バイトしか保存容量が無いため、短く書く工夫とかもここで学びました。メガでもキロですらなく、ただの5859バイトです。

そのためRPGのキャラのセリフも、当初は例えば「コノミチヲイッテハナラナイ(この道を行ってはならない)」だったのを「ココヲイッテハナラヌ(ここを行ってはならぬ)」とかに短く書き換え、少しでも容量を浮かせていました。そのほうが敵キャラの数とか増やせますからね。

このテクノロジーは現在、ツイッターに短く書くときに応用されています(^^)

対人戦ゲームを作った

当時はスト2とかが流行っていて、対人戦の面白さはわかっていました。何とか対人戦のゲームを作りたいと考えます。

しかしこの機種、BASICプログラムでは同時キー入力を受け付けません。同時にキー入力すると、どちらも押していないと判定されてしまいます。

交代で入力するシミュレーションゲームや、将棋なんかみたいなゲームしかダメかという固定観念ができてしまいがちです。

若きしゃくとりむしはひらめきました!

陣地取りゲーム

私が作ったゲームはこんな感じでした。(コンピュータ上では色の概念はありませんが、わかりやすくするため。)

難しいのはプログラムを閃くまでで、実際にプログラムを書き込むのは数分でできました。そういうものです。

ルール

  • 操作するボタンは左端と右端のふたつのボタンだけである
  • どちらか片側のボタンが押されている状態だと赤いゲージが増える
  • どちらのボタンも押されている、もしくはどちらのボタンも押されていないと赤いゲージが減る
  • 赤いゲージが満タンになったらプレイヤー左の勝ち
  • 赤いゲージが無くなったらプレイヤー右の勝ち

つまりプレイヤー左は相手が押したら離し、相手が離したら押せばゲージが増えます。

プレイヤー右は相手と同じ行動をとればゲージを減らせます。

ここで活かされたのが、同時入力を受け付けないという仕様。同時にボタンを押されていても、同時に離されていても、コンピュータとしては同じ認識をするわけです。その状態で同じ結果になれば、ゲームとして成立するのです。

一人プレイモード

ここまでは白しゃくとりむしですね。単純だけど楽しいゲームを作る事が出来ました。

次に考えたのはCPU戦です。ひとりでも遊べるように出来ないかな、と。

最初はコンピュータの行動パターンを最善のものにするようにしました。CPUはプレイヤー右なのですが、人間と同じ行動(ボタンを押す・離す)をとるようにしました。

人間が勝てるわけありません。当然ながらどうがんばっても一直線に決着します。

次に、若干のラグをつけるようにしました。こっちが押した(離した)一瞬の後、コンピュータが行動を変えるというパターンです。

リズムゲーの完成です。一定テンポで押す・離すを繰り返すと勝てるゲームになりました。

どちらもゲームの本質がずれてしまっています。

黒しゃくとりむし登場

陣取りゲームという本質を成立させるため、次はランダム要素を取り入れることにしました。最初はレスポンスのスピードをランダムにする予定だったとは思うのですが・・・。

コンピュータの動きを、完全ランダムにしてみました。押す・離すという行動がまったくのランダムで入れ替わります。

そうするとゲージの動きもランダムなんですよね。激しく増えたり減ったりします。

黒しゃくとりむしはひらめきました!

「これ人間が操作しなくても、ほとんど一緒の結果だよな」

思い切って、人間のボタン入力を受け付けるプログラム部分を削り取りました。プログラム上では、ゲージが運によって増減するというプログラムの完成です。

プレイヤーが介入できる部分が、プログラム上に存在しません。

しかしクラスの友達に「CPU戦ができるようになったんだけど」と、やらせてみたところ「おお、いいね!相手の反応がわからない分難しいな!」と一生懸命プレイして楽しんでくれました。

その姿を見てたらおかしくておかしくて仕方ありませんでした。黙ってましたけど。

その時点で対人戦ゲームへの情熱はすっかり満たされ、それ以上のプログラムの改善を施されることもなく、あの陣地取りゲームは最終形となったのです。

今になって思うこと

あのゲームってパチンコと本質がそっくりだよな・・・。

彼は今でもきっとパチンコを楽しんでいるんだろうなぁ・・・(遠い目)。

7 件のコメント:

  1. 文系の私には縁遠い話ですが……
    なんていうかもう天才的ですよね。こういうアイディアを閃く若者が欲しいという企業はたくさんありますよ。
    今もお仕事でプログラムとかやられていらっしゃるのですか?

    返信削除
  2. しゃくとりむし2017年2月28日 21:51

    あ、ああ。若者ね、若者。

    自分の得意な事は、何か思った時に、まったく関係なさそうな事とつなげて考えられる事です。発想の転回というか。
    プログラムではその能力が発揮できました。

    今は全っ然プログラムには携わっていません!
    大人になってからは、webサイト作りにPHPという言語をほーんのすこし触ったぐらいです。

    返信削除
  3. 高校生のしゃくとりむしさんも、その発想力で引く手あまただったと思いますけど、今のしゃくとりむしさんには知識や経験がプラスされてますからね~(^^)
    私は発想を飛ばすことが苦手なので、凄い憧れます!既存のものを少し良くするくらいが精一杯なので(>_<)
    今プログラムに関わっていないなんてもったいない。多才な方は能力をいかしきれないのが辛いところですね(>_<)

    返信削除
  4. しゃくとりむし2017年3月2日 23:50

    なんかのマンガで読んだんですけど、刀は抜かなくても持っているだけで意味があるそうです。

    使い道が来ない自分の才能は、遊びに使って人生を楽しむタイプです!

    臼田さん(名前変わってるよ・・・)も、私にない才能もたくさんあることでしょう。既存のものを少し良くできるのも、立派じゃないですか。カイゼンってやつですね!

    返信削除
  5. 刀を持っていれば、いざという時に抜いて困難を切り抜けることができるかもしれませんよね!
    遊びがいつか本業になったり…人生どう転ぶか分からないから面白い(^^)

    ほんとだ!名前変わってる!!失礼しましたーこの名前に思い入れが無いのがバレバレ(苦笑)

    カイゼンが得意でもハツメイできる人には敵わないという劣等感(;^_^A

    返信削除
  6. しゃくとりむし2017年3月5日 23:00

    私の本業は、まだ臼井さんには話してない才能を有効活用していますよ。それに関してはプロレベルです。(当たり前だ)

    人と才能が違うのは、役割分担のためですよ。一人で生きてるんじゃないんですからね。

    返信削除
  7. 才能ありまくりですね!私はどちらかといえば一芸に秀でたスペシャリスト系なので、オールラウンダーな人に憧れます(*^^*)
    私にも才能があるはず!なので、これからの人生それを活かしていきたいです。

    返信削除

お気軽にコメントをどうぞ