先日は、
にて、直列回路と並列回路について書きました。
現在のマイクラのバージョンは、
になっていますが、このバージョンでは桜のアップデートなどが来ています。回路を作る際に使用できる機能が増えていたり、しよが変わっているものもありますが、基本部分は同じです。
レッドストーン信号は、二値ですから、伝達の有無で成立していますが、最小単位は
の状態なので、入力と出力の組み合わせになります。ここにスイッチのような分岐が含まれると、
のような変化を与えることが出来るのですが、これが、コンピューターで使用している1BITの処理になります。この状態がスイッチの挙動になりま菅これが2つに増えると、
のような4つのパターンが生じます。これがビット数が増えた場合のパターンの変化になります。これは、組み合わせの総数の変化なので、1からnまでの数値がある時の組み合わせで総数を算出できますが、制御をする場合、固定する場合には1の状態を維持して、変化を与える時には 【 操作 】 などで、 【 状態の変化 】 を与えることになります。
マイクラでは、透過ブロックと不透過ブロックがありますが、この2つでは信号の伝達方法が異なります。ガラスの場合、
のように信号を上下に分けて伝達することが出来ますが、不当化ブロックでは、
のように信号を遮ってしまいます。その為、
のように上下でパターンの階層を作ることが出来ます。レッドストーンは1ブロック開けて配置すると併設できるので、
のようなレイアウトにすることが出来ます。また、フルブロックだけでなく、
のようにハーフブロックを使うことも出来ます。統合版だとフルブロックでも大丈夫なんですが、JAVA番だとハーフブロックで分けるようにしないと問題があるようです。あと、
のように信号が下る仕様も統合版の特徴のようです。統合版のレッドストーン回路はシミュレーション距離の範囲内でのみ動作するので回路がこの範囲外になると止まってしまいます。その為、移動中に範囲外になった場所から順番に止まっていくことになるので、回路によっては壊れてしまいます。その為、
のように主電源と同サブに分けて構築することになります。
この構造だと、ボタンの部分が指定した処理を実行するトリガーになっていますが、ボタンは条件分岐なので、プログラミング言語の if と同じものになります。この条件ではブール値での判定をおこなているわけですが、複数の条件を用意して
if 条件〜 :
処理
elif 条件〜 :
処理
elif 条件〜 :
処理
else:
処理
のような構造にした場合、
のように先程のモジュールを3つ用意して回路を分岐して実装することになります。この時の else は何もしないと言う選択になりますが、イベントハンドラを使ったボタンの判定が先程の記述と同じ構造になりますから、ボタンと処理の関係をブロックで再現するとこのような構造になります。
この回路では回路が分岐しているので並列回路になっていますが、
のようにレッドストーンリピーターでブロックに信号を送ると、信号を送信した面以外の5面から信号を得ることが出来ます。
ただし、
のように信号を伝達できないブロックがあるので注意が必要です。物を同時に動かした場合には並列回路を組むことになりますが、常に動く場合には、
のような形になり、判定を使う場合には、
のような形になります。並列回路の構造は、
のように複数に処理が分岐する形になります。
サバイバルで序盤に作れるブロックには、一度信号を出して、特定の時間になるともう一度信号を出して信号を切ることが出来るパルサー回路のように動作する 【 ボタン 】があります。
これは、特定の時間だけ信号が出る仕組みになっていますが、
■ ドロッパー
■ 発射装置(ディスペンサー)
のようにアイテムを射出するブロックを使う際に使用します。このブロックはプレイヤー歯科操作できないので、エンティティやMOBに挙動によって操作できない仕様になっています。
その為、建物の部屋の外側から開ける際に使用する入力装置として使用することが出来ます。鉄の扉を作ると、MOBが開閉できないだけでなく、 【 ハードモードにしてもMOBにドアを壊されなくなる 】 ので、その開閉用に使用することもできます。
MOBが操作できないブロックには、 【 レバー 】 がありますが、これはラッチのように信号の状態を維持する特性があります。
ラッチやフリップフロップ回路はメモリーと同じように信号の維持が出来るのですが、操作によってメモリーのように状態を記録できるのがレバーになります。その為、扉の開閉でしよすると、開閉の状態を維持することが出来ます。この時に信号の状態を変更しない限り現在の状態が維持されます。
このブロックは種類があって、それぞれに異なる特性があります。最初に作れるのが、 【 木の感知板 】 になりますが、これは、
■ アイテム
■ エンティティ
が上に乗ると動作する仕組みになっています。
これは、板の上にものが乗った時に信号が出て何もない時に切れるので、接触を検知するセンサーと考えることも出来ますが、
のようにアイテムをドロップするだけで、木の感知板は反応します。
これに対して石の感圧番は、
のようにアイテムでは動作しませんから、エンティティが乗る状態で動作する仕組みになっています。その為、プレイヤーやMOBなどを検知する際に使用できます。
これとは別に
■ 感圧板(軽)
■ 感圧板(重)
がありますが、これは検知だけだと
のように区別がつかないのですが、感圧板にアイテムをドロップしてみると信号強度2以上を得る差異に日強雨になるブロックの数が違います。実際にブロックを投げてみると、軽のほうは、2スタック未満で大丈夫なんですが、重のほうは5スタック投げ込んでも信号強度2に到達しません。
このように 【 アイテムの個数で信号強度に差が出るブロック 】 なので、アイテムの個数で判定を入れたい場合に使い分けることになります。ちなみに、木の感知板は二値で動いているので、上にエンティティやアイテムが乗ると信号強度15のレッドストーン信号がでます。
中学校2年生の理科では電気のカリキュラムで電磁力やオームの法則を学習しますが、この中で、
■ 直列回路
■ 並列回路
が登城します。直列回路は、
のように順番に動くものになりますから、最初の入力から次の入力に向かって動く形になります。順番で制御をする場合、自動処理だとラグを入れて管理をすることになりますが、パターンを切り替える場合だと、シフトレジスター回路やマルイプレクサー回路を使うことになります。複数のパターンをデコーダーで用意しておいてシフトレジスターで制御をすると
のようになりますが、自動処理だとこの順番を遅延や状態の維持で管理することになります。この順番で制御をする処理を花火の発射の順序を実装したモジュールに置き換えると
のようになります。並列回路の場合だと、同時に処理をする仕組みなので、
のように同時進行をする構造になりますが、異なるブロックを時間差で動かすと
のようなこともできます。
判定を考える
先日は、一つの入力に対して結果が決まっている
■ 直列回路
■ 並列回路
を暑かったのですが、並列回路にも判定を実装できうるので、
のような判定用のモジュールを用意して
のように分岐の先に実装することも出来ます。これは、直列回路のモジュールを並列回路に組み込んだものになりますが、直列回路も組み方で処理の方法が変わってきます。
のモジュールでは、両方の条件が成立しない限りレッドストーンランプが点灯しない仕組みになっていますが、直列回路にスイッチを追加するとこうした作りにすることが出来ます。当然、これは、
のように延長することが出来ます。この処理の間に判定結果の結果を追加すると
のような構造になります。まず、最初に左のレバーを動かして信号を出すと
のようになります。これは、他の部分が断線しているので当然の結果になりますが、接点を使って電流を流すパーツとして使用するスイッチも同じ考え方になります。なので、残りの3つの接点の部分はスイッチと同じ構造になります。ちなみに、この物理的な座標が変わる仕組みを電気制御をするパーツが 【 リレー 】 になりますが、この回路の構造は中学校2年生の物理で登場する 【 電磁石 】 を使ったものになります。電気工作のパーツだと 【 遅延回路 】 のモジュールとして販売されていますが、短いパルスに対応できない特徴のあるパーツですが極当たり前に前に入手できます。
電気の分野ではコイルと鉄棒を用意して電流を流した時の挙動が色々とでてきますが、高校の物理ではインダクターとしての特性について学習できるので、コイルと鉄棒と電流の面白い特使絵について学ぶことが出来ます。
中学校の物理では 【 仕組みと特性 】 について学習しますが、高校では 【 制御をするためのもの 】 を学習することになります。
この構造物のスイッチを
の四にすると接点がつながるので、次のレッドストーンランプが点灯しますが、これは、両方のレバーがオンの状態でなければ成立しません。これと同じ条件が、
でも存在しているわけですが、このような 【 複数の条件を満たさなければ成立しない 】 と言う判定を直列回路を使うだけで実装できます。これは電気工作でも使用する仕組みになります。
この判定はオンとオフで行っているので二値論理を用いたものになりますが、この時の判定をする時に論理演算を用いることになります。コンピューターの場合だと、ブール演算でこうした処理を行いますが、ifを使用した時にも複数の条件で判定をする場合がありますが、そうした処理をする場合に論理演算を用います。この処理は数学になりますが、高校の選択科目の数学Aでこれを扱います。この分野では集合と論理を扱うので、
■ 集合 : 集まりに対する条件抽出
■ 論理 : 確定した結果の組み合わせによる判定
を行うことになります。数学Bは、ベクトルなので、グラフィックの基礎分野になりますが、これ多次元化したものが数ベクトルなので、線形代数の分野で使用する行列とセットで使用するものになりますが、この分野はAIで使用します。
論理演算はコードを書いたり回路を作る時には日強雨になりますし、判定を婚が得る時には使用するので、三角関数などと同じレベルで使用Sるうことになります。また、集合と論理は、 【 日常で使用している志向や判断を体系化して処理できるようにしたもの 】 になりますが、これが二値や集合なので、機械や配列に対して使用できるのでハードウェアやソフトウェアの制御だったり、データを扱う上で使用できるようになっています。現在は情報Iが必修科目化されていますから、論理はその分野ででてきますし、集合も多次元化したデータとして使用するので条件ちゅうすつをする際に同じことを行います。
論理演算には、
■ 論理積 : AND
■ 論理和 : OR
■ 論理否定 : NOT
がありますが、これが論理演算の基本となる3つの判定になります。高校の物理では普通科でも半導体や電気を扱いますから、電気の流れなどを学習するので、キルヒホップの法則やド・モルガンの法則も登場します。
このド・モルガンの法則が先程の3つの判定があればすべての判定が作れるというものになります。これは人の思考でも同じなので、ブール代数で対応できるのですが、全く同じことが機械でも使用できるので二値論理を使えば、機会にも判定を実装できるようになっています。
先程の判定は、条件が全て揃わなければならないものですから、 【 論理積 : AND 】 になります。
中学校では並列回路も登場しますが、閉回路の上歌いを見ると処理側が分岐した形で登場します。通常の並列回路はそうなっていますが、これを入力側に変えると
のようになります。この場合、いずれかを選べば動作するようになりますが、このような判定が 【 論理和 : OR 】 になります。この場合、
■ 単数
■ 複数
でも動作するので、【 選択肢の中の1つだけで動くものではない 】 ので注意が必要です。ちがみに、これを出力側に持ってきたものが同時稼働をする時などに使用する 【 並列回路 】 になります。
この2つは中学校の物理で登城しますが、この判定だけだと、入力値は常にスイッチの結果に依存するので、逆のデータを入力することができません。この場合、二進数の演算を行う時に不便になりますが、回路を作る場合も少し不便になります。
こうした、 【 逆の結果を生成する判定 】 として、 【 論理否定 : NOT 】 があります。マインクラフトだと、
のようにレッドストーン松明をブロックに挿して、ブロックの信号を与えることで反転させて使用することでNOT回路を作ることが出来ます。画像では、信号がオフの状態ですが、レッドストーン松明は点灯しているので、信号がでています。つまり。ここにレッドストーンを繋ぐと信号強度15のレッドストーン信号が流れます。レバーを動かしてブロックに信号を送るとレッドすT-ん松明は消えるので、信号が判定していることになります。
このようにこの構造にするだけで、 【 論理否定 : NOT 】 の判定を作ることが出来あます。
上方向だとこの上にレッドストーンでどうっさするブロックを置くだけで操作できるので、
のような変化を与えることが出来ます。この時にレバーを配置した不当化ブロックはレッドストーン信号を伝達できるので、
のように動作します。
NOT回路を使う
サバイバルモードでゲームをしていると、瓢湖の高い場所だと鉄と石炭を入手しやすくエメラルドなども出やすいのですが、レッドストーンと鉄を集めると 【 ピストン 】 を作ることが出来ます。ピストンはブロックを押すことは出来ますが、引き戻すことが出来ないのでブロックを操作する時には 【 吸着ピストン 】 を使うことになります。JAVA版だと短いパルスを送るとピストンが剥がれてピストンヘッドが戻ってくるのでその特性を回路内でも使用できるのですが、統合版にはそれがないので、押し出すか引き戻すだけの処理をするブロックになっています。その為、吸着ピストンを作ろうと思うとスライムチャンクを探す必要がありますが、通常のピストンでも使い方によっては回路を組むことが出来ます。例えば、
のようにNOT回路を使ってピストンヘッドを持ち上げて、その上にブランチマイニングで貯まってきた砂利を置いたり、地上で確保できる砂を配置すると、自由落下をしますから、ピストで押し上げ他あとに、ピストンを戻すと落下する特性があります。これを使うと、
のような半自動の農作物の回収機を作ることが出来ます。通常のブロックだとピストンを戻してもブロックの位置は変わりませんが、砂や砂利の場合、下が空気ブロックだと落下するので、
のようにピストンを動かして水を流すことが出来ます。
現行版の仕様変更
PS3版から統合版に変えた時にコンソール版でHできていたことが全くできなくなっていて驚いたのですが、多分、PS4版が統合版になった時にも同じような印象を受けた人が多いのではないかなと思います。統合版では、畑の上の作物をホッパーで吸い込むことができないので、
のようなブルジョア式回収機のような構造にする必要がありました。なので、回収部分を作るだけでも結構な鉄が非強雨になっていたので、結構な数の鉄を掘らないとなりませんでしたが、少し前のバージョンまでは鉄の分布の変化とは別に鉱脈が登場していたので鉄が回収しやすくなっていましたが、現行版では、JAVA版と童謡の仕様になったので、畑の作物は
の形で回収できるようになっています。その為、
のような回収も行えるようになっています。
のようになりますが、畑が荒れないようにドアで遮蔽すると、段差では丈を破壊することがなくなります。また、階段で降りることになりますから、何かしらの段差を用意することになります。流石に、サバイバルの序盤にコンクリートをこれだけ大量に作れるとは思えないので、石と木材になると思いますから、
のような感じになりそうですが、統合版だと透過ブロックは光を通すので、画像のように下に松明などの光源ブロックを置くと脇き潰しが出来ます。
この構造だと全てを地下で行えますが、水を流すのも地下だと少し不便なので地上に上げることになります。この場合、ガラスを使って
のように交互にブロックを並べると
のようにレッドストーンがつながった状態になります。この状態で、
のようにレバーで信号を送ると水が流れます。
これが畑のモジュールになるので、耕作面積を広げようと思うと、横方向に同じモジュールを併設することになります。
回収装置
今回は、論理ゲートのNOT回路を使った回収装置を作ったのですが、こうした回収装置の場合、モジュールを作って横方向に併設することになります。なので、単一のパーツで広範囲に効果が出るようなものだと作り方が少し違ってきますが、一つのモジュールで一つの処理を完結させる場合にはモジュールの構造を考えることになります。
プログラミングを行う際にも 【 処理の塊 】 で分けることが出来るので、関数やクラスで独立させることが出来るようになっていますが、回路の場合も 【 処理の塊 】 で考えて分けたほうが構造を考えやすくなります。
モジュールを作る場合、
のように比較をすることになりあMすが、比較をしてでパフォーマンスが高い方を採用することになります。ちなみに、この2つの回路は統合版専用なので、JAVA番だとBUD回路が働くので使うことは出来ません。
モジュールが出来たら併設をし提唱することになるので、
のような形でモジュールを用意して運用することになります。こうしたモジュールを併設して運用するものだとアイテム仕分け機も単一のモジュールを併設して運用するタイプのものになりますが、処理をする場合には、モジュールを作って併設して使用することになります。同じモジュールを組み合わせたものだと、
になりますが、これは、コンパレーターでの信号の比較と論理ゲートによるANDの判定で単一の値を取得するモジュールを併設してANDゲートで判定を行ったものになります。