ON/OFFスイッチの作り方【はじめてゲームプログラミング】

ON/OFFスイッチを作ってみます。

つけたらついたまま、切ったら切れたままのタイプです。

f:id:sadala:20211004153341p:plain

用意するもの

  • ボタン(任意の入力信号)
  • AND
  • フラグ

 

繋ぎ方

f:id:sadala:20211004150813p:plain

ボタンを押すとフラグがONになり、フラグがONの状態でボタンを押すとOFF(リセット)になります。単純明快!

拡張

ちょっとこれだけでは物足りないので拡張してみます。出来上がるのは2進数のカウンターみたいなもの?です。実用性は不明(笑)

スイッチの数を増やすので、今使ったフラグをAとして、次をB、その次をCとしていきます。

AがONかつボタンを押したらBがONになる

f:id:sadala:20211004151050p:plain

みやすさのためにワイヤーワープを使います。一応フラグの名前と同じです。

ANDノードンにボタンの出力とフラグ(A)の出力を繋ぎます。

フラグ(A)がONのときにボタンが押されるとANDノードンが1を出力するという状態です。

ANDをボタンに見立てて1つ目と同じようにつなぐ

1つ目のフラグ(A)と同じように繋ぎます。

違うのはボタンノードンの出力を直接つなぐのではなく、上でつないだANDノードンの出力をつなぐ点だけです。

このフラグはBとします。

さらに拡張

f:id:sadala:20211004151740p:plain

AとBがONかつボタンが押されたらという風にどんどん拡張していきます。

次はCですね。

 

ANDをたくさん繋げるのはめんどう

f:id:sadala:20211004152314p:plain

さて、このまま拡張を続けるとどんどん必要なANDノードンが増えて大変なことになってしまうので、少し変えてみようと思います。

つなぐフラグ(n番目)よりも前のフラグが全てONであるとき1を出力するノードンがあればいいわけです。※n番目:Aは1番目,Bは2番目,Cは3番目、8番目を考えるならH

今回はくらべるノードンを使ってみようと思います。

はじプロでは「1つの入力に対して複数の出力をつないだ場合、足し算された値が入力される」という仕様があります。

なので、くらべるノードンの入力の片側にn番目を除いた全てのフラグの出力を集め、もう片側にその最大値(n-1)となる定数をつなぐと、うまく機能するはずです。

f:id:sadala:20211004152942p:plain

拡大

定数を間違えるとダメになるのでANDを繋いだ方が確実ですが、ノードンの数を減らせるという大きな利点があるかと思います。

わざわざ2進数作って何するのという話ではありますが、、