ホーム > タグ > リレー
リレー
リレーと論理回路
TTLのビデオゲームについて少し前に書きましたが、それ以前に作られていた電子回路を使わないゲーム、いわゆるエレメカでは、こうした機械式のリレーが論理回路として働いていました。TTLによるゲームも論理回路で構成されていますし、そもそもコンピューター(CPU)の中身も論理回路です。
つまり現在のゲームやPCが動作する原理の原始的な形がコレと言えなくもありません。
リレーは、電流が流れると電磁石の力でスイッチを引き寄せます。そして、電流が止まるとバネの力でスイッチが戻ってしまいます。簡単に言うと、別な回路のスイッチをON/OFFするのがリレーの役割なわけで、ゼルダの伝説で言うと床のスイッチを踏むと、遠くにある扉も一緒に開いたり閉じたりするのと似ています。
真空管やトランジスタ、ICチップであっても仕組みは同じことで、考え方の基本にあるのはデジタルの1と0を電流が流れているか、いないかで分けるということです。これだけの仕組みで計算ができてしまうのが驚きです。詳しくは触れませんが、興味のある人は以下のページなど参考にしてみてください。
http://www.infonet.co.jp/ueyama/ip/logic/adder_r.html
こういった論理回路によって、0か1かの情報、さらにそれを集めた2進数の情報を保持でき、複雑な動作が可能になりました。
たとえばピンボールゲームだと、ゲームのスタートボタンを押すとスコアなど各種設定がリセットされてボールが出てきます。そして、「A」「B」「C」のターゲット全部にボールが当たると1000点入るなどのギミックが動くようになります。
こういった最初にこれをやって、次にこうなって、その次はこれ…といったシーケンス動作は、コンピューターのプログラムが得意とする部分です。特に手続き型言語(BASICとかHSPとか)は、まさに動作の順番を書いていくだけです。
手続き型で考えるとだいたい、こんな感じになります。
-
1. スタートボタンが押されるまで待つ
↓
2. スコアや各種設定をリセット
↓
3.「A」のターゲットにボールが当たったら変数Aを1に
↓
4.「B」のターゲットにボールが当たったら変数Bを1に
↓
5.「C」のターゲットにボールが当たったら変数Cを1に
↓
6. 変数A~Cがすべて1ならば1000点加算
↓
7. 3.からの動作を繰り返し
これと同じことをリレーが行なうと、
-
1. スタートボタンが押されたら設定を保持している回路を切断(0)する
また、ゲーム中であることを示す回路を接続(1)する
2. 「A」のターゲットにボールが当たったらAの回路を接続(1)する
3. 「B」のターゲットにボールが当たったらBの回路を接続(1)する
4. 「C」のターゲットにボールが当たったらCの回路を接続(1)する
5. 回路A~Cがすべて接続されると1000点加算
のような感じになります。
それぞれのスイッチごとに、どのような動作を行なうか、他の回路とどのような関係を持つかなどを考慮して設計する必要があります。特に「ゲーム中であることを示す回路(リレー)」は、エレメカ時代のゲームには必ずついていて、お金を入れるまではプレイヤーの操作などゲームに関わる回路に電源が繋がらない仕組みになっていました。これがタイマーにより一定時間で切れたり、カウンターが進むと切れるようにすることでゲームオーバーを作っていたわけです。
こうした考え方は、今注目されているマルチスレッドプログラミングや関数型言語に近いものがあるように思います。何か一周してきたようで不思議なものです。
ところで、機械式のピンボールにはまだ一部アナログ的な動作も残っています。たとえば5000点加算するような場合、論理回路で5回カウントさせるのは規模もコストもかかります。そこで、オルゴールのように回転する円盤が物理的に5回スイッチを入れるようになっています。これはスコアモーターと呼ばれているもので、必要に応じて1回、3回、5回などのパルス(スイッチのON/OFF)を発生させます。ある意味で、これがエレメカゲームの心臓部と言えるかもしれません。
その後、ビデオゲームが登場しTTL制御の時代になっても、プログラムという手続き型の動作ではなく、エレメカの論理回路が行なっていた仕組みを継承し、より複雑なものになっていきました。
そう考えると、ブロック崩し(Breakout)などはどんな動作になっているのか興味深くなってきませんか?
- Comments: 0
- Trackbacks: 0
Home > Tags > リレー
- Search
- Feeds
- Meta