コンピューターの理論を学ぼうと思っても、複雑な専門書を読む必要があったり、講習を受ける必要があったりと、高いハードルに圧倒されて諦めてしまった経験がある人は多いはず。そんなコンピューターの理論やプログラミングの基礎を手軽に学べるゲームが「Turing Complete」です。今回はTuring Completeがどんなゲームか気になったので、実際にプレイしてみました。

Steam:Turing Complete

https://store.steampowered.com/app/1444480/Turing_Complete/

Turing CompleteはSteam上で配信されており、上記リンクから購入可能です。販売価格は2050円。以下は起動した画面で、「Play Campaign」をクリックしてプレイを開始します。



Turing Completeは「宇宙人にさらわれた主人公が生存のために知能テストを受ける」という設定のゲームです。



まずはチュートリアルから。画面上の「『Input』の下にある緑色のアイコンをクリックして入力コンポーネントをオフにしなさい」という指示に従い、アイコンをクリックします。



すると、「Input」のアイコンが赤く変わり、回路がオフになりました。それに伴い、「Output」のアイコンも赤に変化しました。これでクリアなので、「Next Level」をクリックして次のチュートリアルに進みます。



続いて「NANDゲート」に関するチュートリアルが開始されます。このチュートリアルでは、2種類の「Input」のオン・オフを切り替えた場合の「Output」を理解するというものです。



先ほどのチュートリアルと同様、「Input」をクリックしてオン・オフを切り替えます。それぞれの「Input」のオン・オフを切り替えると、「Output」の色も変化するので、それに応じて画面下部の「?」の欄をクリックして同じ「Output」を示します。「Input 1」がオン、「Input 2」がオフの場合、「Output」はオンになるので、それに合わせて画面下部の「Output」の欄をクリックして緑のアイコンに変えます。



全て完了したら「Check」をクリック。



宇宙人から「Correct!(正解だ!)」という称賛が得られました。



チュートリアルの最後は「NOTゲート」を実際に構築するというもの。



始点からドラッグすることで回路を伸ばすことが可能です。



また、適宜右上の「NAND」をクリックして、正しい位置に「NAND」を設置します。



回路が完成したら左上の「Next」または「Run」をクリック。



Inputのオン・オフに応じた結果を出力してくれます。



クリア画面が表示されたら「Onwards」をクリックします。



これから進むべきステージが表示されました。クリア済みのステージが緑、黄色が未クリアのステージ、赤は未解放のステージです。



以下は「ANDゲート」を構築する動画です。

コンピューター理論が学べるゲーム「Turing Complete」でANDゲートを作る様子 - YouTube

「NORゲート」を構築した動画が以下。

コンピューターの理論が学べるゲーム「Turing Complete」でNORゲートを作成してみた - YouTube

「ORゲート」はこんな感じ。与えられた指示に対して適切に「NAND」や「NOT」を使用して解き進めていくことが重要です。

ゲーム「Turing Complete」でORゲートを作成する様子 - YouTube

ステージを進めていくと、「Input」が4つ以上の複雑な問題が出題されることがあります。



これまでの問題の知識を生かして解くことも可能ですが、どうしても解答がわからない場合もあります。その際には、左上の「?」をクリックします。



「答えを表示しますか?」と尋ねられるので、「Yes」をクリック。すると、自動的にブラウザが立ちあがり、該当の問題の答えを示す動画がYouTube上で再生されます。



ステージを進めるにつれて、問題はどんどん複雑になっていきます。ステージの後半では、8ビットの回路やレジスタを作成したり、CPUを作成したりすることになります。Turing Completeは基本的な操作はマウスだけという手軽さながら、細かく分けられたステージをクリアしていくごとに、次第に複雑なコンピューターの理論を学習することが可能です。



なお、Turing Completeは、Steamにて税込2050円で販売されています。

Steam:Turing Complete

https://store.steampowered.com/app/1444480/Turing_Complete/