昨日は、レッドストーンリピーター(反復装置)について特集しました。今日はレッドストーンコンパレーターについて見ていきましょう。
コンパレーターは、ON/OFFの概念だけではなく、信号の強さに影響することができるという面白い装置です。
目次
コンパレーターの設置

コンパレーターは、リピーターと同じようにブロックの上に置くことができます。こちらにも前後がありますので、画像で確認してください。

また、上から見ると三角形のマークが描かれています。この三角形の向く方向が前だと覚えておいてもよいでしょう。

コンパレーターの入力は、後ろと横(左右どちらか)の2つです。この後ろと横の信号を比較して、なにかの計算結果を出力してくれるのです。出力は前から。また、どの方向でもリピーターや別のコンパレーターを直接つなげることもできます。

コンパレーターは、タップするたびに前のトーチがついたり消えたりします。これは演算モードを切り替えていることを表します。トーチがついているときと消えているときでは、計算方法が違うのです。
コンパレーターの役割
それでは、コンパレーターの役割について見ていきましょう。前述のとおり2つの演算モード、そしてさらにもう1つ特別で重要なはたらきをします。
点灯時:2つの信号強度を減算(引き算)する
点灯時は、「後ろの信号強度 – 横の信号強度」の計算をします。結果は前から出力されます。

例えば上の画像だと、後ろから入力されている信号の強度は9です(レバーが強度15の信号を出し、そこから6ブロック運ばれているため)。重量感圧板には7エンティティが乗っているため、横から入力されている信号の強度は7ですね。
よってコンパレーターにて「9-7」の計算が行われ、強度2の信号を出力しています。これによって、コンパレーターから2マス離れたランプがギリギリ点灯しているわけです。
消灯時:2つの信号強度を比較する
消灯時は、後ろの信号強度と横の信号強度を比較します。どちらが強いかによって出力が変わります。
条件 | 出力信号の強度 |
---|---|
後ろの信号強度≧横の信号強度 | 後ろの信号強度と同じ |
後ろの信号強度<横の信号強度 | 強度0(OFF) |

この場合、「後ろの信号強度≧横の信号強度」を満たしています。よって、後ろの信号強度をそのまま出力します。

この場合は「後ろの信号強度<横の信号強度」となっているので、出力の信号強度は0となります。つまり出力がOFFとなります。
インベントリを持つブロックから信号を取り出す
上に書いたように、信号強度を使って計算した結果を出力するというのが主な機能ではあるのですが、もう1つ重要な機能があります。

インベントリを持つブロック、すなわちアイテムを自分の中に保有できるブロック(チェスト、ホッパー、ドロッパー、大釜など)の中身がどれくらいあるかを、信号強度に変換して取り出してくれるのです。

ほとんどのブロックでは、アイテムが1個も入っていなければ強度0、全スタックが満杯で埋められれば強度15を取り出します。中のアイテムの数と出す信号はほぼ比例します。

ただし大釡だけは特別です。そもそも水やポーション(※)で満たしてから瓶で汲み出せるのは3杯分なので、最大でも強度3までしか出力しません。
※PE限定要素(0.14.0~)。ポーションを大釜に瓶3個分ためておくことができる

また、チェスト付きトロッコやホッパー付きトロッコなどのトロッコにインベントリがついたものは、直接隣にコンパレーターを置くだけでは取り出せません。ディテクターレールを踏ませて、そのディテクターレールから信号を取り出すようなイメージになります。
コンパレーターを使った回路例
それでは、以上の「横と後ろの信号強度をもとに計算をする」「アイテムの量を信号として取り出す」という機能を使ってできる回路の例を紹介しましょう。
コンパクトなXOR回路
XOR(エクスクルーシヴ・オア)回路は論理回路の1つで、2つの入力が同じときOFF、異なるときONを出力する回路です。
このXOR、どうしても回路が複雑になってしまいます。レッドストーントーチのみを使用し、かつ平面で収まるようにすると、上の画像くらいの大きさが限界です。
ここでコンパレーターを使うと、驚くほどコンパクトになってしまいます。

これです。点灯モード(減算を行う)のコンパレーターをたった2個だけでOK。でもなぜこれでXOR回路になるのか、入力の組み合わせごとに考えてみましょう。
ある地点のワイヤーの信号の強さを数字で書き込みました。言葉での説明は要らないくらい一目瞭然ですね。
両方OFFのとき

両方ONのとき

片方だけONのとき

—
というような感じです。両方OFF、両方ONのときだけOFFが出力されるのは、すべてのコンパレーターの入力が同じ値になってしまうせいで、減算した結果が0になってしまうということを利用しているんですね。
最速クロック回路
リピーターを使ってコンパクトで速めなクロック回路を作れることは昨日お伝えした通りですが、コンパレーターを使うと非常に速い(というより、ゲーム中最速の)クロック回路を作ることができます。

たったこれだけ。点灯モードのコンパレーターの後ろから強い信号を入れ、コンパレーターの出力がコンパレーターの横に回り込んで入るようにします。
これをオンにしてみると、ものすごく速くランプが点滅するはずです(ただしランプの位置はとりあえずこの画像の通りにしておいてください。理由は後述)。それにしても、なぜこれでクロック回路になるのでしょうか。

まずレバーをONにした瞬間では、レバーは強度15の信号を出しますが横からの入力はOFF(強度0)です。つまり、15(後ろ)-0(横)という計算によって、次の瞬間には出力が強度15になります。

その強度15の出力が出力装置まで運ばれることでONとして扱われます。一方、コンパレーターの横に到達した信号は13に弱まっているので、次の瞬間には15(後ろ)-13(横)で2が出力されます(これは重要、後述)。

その強度2の出力は、このランプまで運ばれるうちに強度0になってしまい、OFFとして扱われます。よってランプが消灯します。同様に次にコンパレーターに入る信号強度も0となるので、次の瞬間には15(後ろ)-0(横)で15が出力されます。
これを無限に繰り返すことでクロック回路になっています。
クロック回路にならない場所がある
ただし、この回路には特に注意すべき点があります。

ワイヤーのすべての地点でONとOFFを繰り返す回路になっているわけではないということ。上でも「これは重要」と書いておきましたが、上の画像の矢印を付けたワイヤーでは「強度15と強度2を繰り返す」ことになります。
よって、上の画像のランプは点滅せず点灯しっぱなしです。なぜならこのランプには「強度14と強度1の繰り返し」が入力されることになり、OFFになる瞬間は存在しないため。

この不都合を解消するためにリピーターを追加するなどのやりようはありますが、それは無意味です。そもそもコンパレーター1個しか使わないことが、このクロック回路を最速たらしめているのですから。これを作るくらいなら、リピーターとトーチ1個ずつで作るものでも同じです。

よってこの回路を使いたい場合、コンパレーターの出力から必ず3ブロック分以上ワイヤーを通してから出力装置を置かなければなりません。気を付けましょう。
補充時期がわかるトラップ
次に、コンパレーターの信号を取り出すことを活用してみることを考えます。まずシンプルな使い方から。

たとえばディスペンサーに矢をセットしておき、感圧板を踏んだ敵にダメージを与える、このような回路があるとします。当然のことながら矢は消耗品なので、なくなったら補充しなければいけません。
もちろんディスペンサーの中身を見て確認してもいいのですが、一目でわかるようにしてみましょう。

コンパレーターでディスペンサーの内容量を信号として取り出し、ディスペンサーの出力をNOT回路につなぎます。NOT回路の出力はランプにつなぎます。
ディスペンサーの中身がまったくのカラッポになればコンパレーターの出力は0になりますから、そのときNOT回路の出力はONになります。つまり、ディスペンサーに矢を補充しなければならない場合、ランプが点灯して教えてくれるということになります。

余談ですが、NOT回路は無くてもかまいません。この場合は「ディスペンサーがカラ」=「ランプが消灯する」と意味が反転するだけです。
雨が降ってきたら何かを行う
これは小ネタという感じですが、大釜を雨にさらしておくと勝手に水がたまります。

つまり何も入っていない大釜からコンパレーターで信号を取り出しておけば、雨の降り始めを回路で判断できます(ただし大釜からの信号強度は0~3と弱いので、すぐリピートしています)。雨が降り始めてしばらくすればONが出てくるので、それをお好みの回路につなぎます。
で、これを何に使うかといっても全く思いつかなかったのです。計算機とか作る技術があるなら、日照センサーと数bitの保存装置を併用して「雨が降らない日数をカウント」とかできそうですが、この記事の話題からそれてしまうのでまた今度。
終わりに
コンパレーターの役割について説明しましたが、いかがだったでしょうか。
レッドストーン回路を作るときにはだいたい論理が絡んできますから、ONとOFFだけ考えていればよいことがほとんどです(だから長いワイヤーを使うとき、OFFになりそうになったらリピートしてONのままに保とうとするんですね)。
ですが、コンパレーターは信号の強さを扱うことに特化した装置です。最速クロック回路のところでも注意点として挙げましたが、ON/OFFだけではなく「信号の強さがどうなっているか」を考えないと思いもよらないところでつまずくことがあります。気を付けて使いましょう。
綺麗にまとまっていて、見やすく、参考になりました。
tt-f回路が作れない(向かい合うドロッパ?ディスペンサーを用いるものです。)もしよければ、それについても書いていただけるとうれしいです。
レッドストーン関係を読ませていただきましたが、
上の方も書かれているように、とても読みやすいです。
結果まで丁寧にかかれてあるので、とても理解しやすかったです。
ありがとうございました。
オブザーバーを使いクロック回路を作りました。
たぶん、1Tickです。
トーチのような焼き切れはありません。
ただ、レッドストーンの順番を間違えると動きません。
[…] 【Minecraft】レッドストーンコンパレーターの使い方 | ナギサ … […]