レッドストーン回路を使いこなせれば作れないものは無い。
かどうかは分かりませんが、マイクラに標準的に備わっている機能だけでもいろんなものが作れます。
作る過程でいろんなことを発想し、調べ、学べるのでマイクラはすごい。
ということで、完全文系の自分が独学で計算機を作ってみました。
※もっとすごい回路を組める方は世界中に山ほどいらっしゃると思いますので、この記事はあくまで独学の試行錯誤の結果としてお楽しみください。
この記事の最後にはダウンロードリンクがあります。
実際にワールドをダウンロードして計算機に触ることもできますよ。
(Windows10,ios,android端末ならたぶん可能です)
作成した計算機は3種
すべて足し算オンリーですが、3種類作成しました。
ちなみに装置の肝になる計算部はすべて共通です。
【1号機】インチキなしのベタ回路ver.
まずはコマンドブロックやストラクチャブロックを使わずに回路をベタ持ちした1桁足し算計算機。
9+9の計算だけでこんなにデカい装置が必要なんだ~。を実感。
【2号機】10進数表示部をストラクチャーブロックで省略ver.
計算には関係ない10進数の変換、表示がアホみたいに大変なのでストラクチャーブロックを使って表示部だけ簡素化。
【3号機】2桁足し算対応ver.
基本設計が出来たので、試しに桁を増やしてみました。
10進数表示部はストラクチャーブロックで簡素化。
煩雑になりがちな回路をコマンドブロックで適当に省略してます。
足し算回路の基本設計
1,10進数を2進数へ変換
どうやら普段使っている10進数(1~10の数字)のままで計算することが難しそうなので、数字を「0」と「1」だけで表せる2進数なるものを使用します。
2進数とは・・・
[1→1] [2→10] [3→11] [4→100] [5→101] というように、各桁が1,2,4,8,16,32・・・に対応した0or1のフラグで管理する感じの数列らしい。詳しくはググってください。
この装置では一桁の足し算が目標なので入力側(最大数は9)では[1,2,4,8]、出力側(最大数は18)では[1,2,4,8,16]があればOK。
2,2進数の足し算
2進数の足し算を各桁ごとに行います。
入力は[0or1]+[0or1]で、出力は[0or1or10]。
[10]は繰り上げて上の桁の[1]として扱う。
なので、実際の入力は下の桁からの繰り上げも含めて[0or1]+ [0or1] +[0or1]となる。
で、回路上では一発で3つの入力を計算するのが難しかったので([0or1]+[0or1])+[0or1]みたいな感じになってます。
なに言ってるか自分でもわからないので図でどうぞ。
3,2進数を10進数へ変換
計算結果を2進数で「10010」と表示して終わりなら簡単なんですが、ぱっと見意味が分からない。
ディスプレイに10進数を表示するためには2進数からの変換が必要。
この変換が一番めんどくさい。
で、回路をうまい具合に畳む方法が思いつかなかったのでここは0~18の全19通りをベタで持つことにしています。
2進数の解と比較して同じ配列になったら対応する10進数をON。
10進数ってめんどくさい。
2桁の足し算に対応してみる
1桁+1桁は出来たので、計算できる桁を増やしてみることに。
2進数に置き換えたときの桁を[・・・,64,128,・・・]って増やしてもいいんですが、これだと計算の桁を増やすごとに装置が馬鹿デカくなってしまう。
じゃあ1桁の計算を桁ごとに繰り返せばいいんじゃない?ということで、同じ計算回路を桁毎に繰り返して使用する感じにしてみました。
作成した計算機は99+99=198が最大値ですが、理論上は桁が増えても同じ処理を繰り返すだけなので脳内では無限桁計算機が完成しています。
まぁ実際は表示部とか制御部とかの回路が膨れ上がるので結局デカくなるんですけど。
ダウンロードはこちら
上記で紹介した3種の計算機がひとつのワールドにまとまってます。
細かい説明をするには限界があるので、興味がある人はダウンロードして実際に見てみてください。
「こうすればもっと小型化できるんじゃない?」
「こういう回路ならもっと桁数増やせるよ。」
「こうすれば引き算もできるじゃん!」
みたいなアレンジをどんどん考えてみよう。