6月14日「【はじプロ】数を保持してみよう(変数を実現しよう)」
今日は「ナビつき! つくってわかる はじめてゲームプログラミング」をさわっていました。今日「も」ですね。
公式略称は「はじプロ」らしいので以後はそれで呼んでいきます。
さて、ノードンたちと戯れていてちょっと気になることがありました。
「変数ノードンっていないの?」
0と1を保持できる「フラグノードン」をはじめ、「カウンターノードン」など、数を保持しているノードンはたくさんあります。
いちばんふつうの「モノノードン」だって位置座標をもっているので、数を保持しているといえます。
ところが、「好きな数をいつでもセットして、いつでも参照できる」いわゆる、「変数」のノードンは用意されていないようです。
「ええ~? 変数がなかったらなんにもできないんじゃないの?」って思う人は、まだ「はじプロ」を触ったことがない人かもしれません。
変数がなくても、ほとんどの動作は「その場で計算する」「カウンターを使う」「フラグを使う」「マッピングを使う」などの便利なノードンでなんとかなっちゃうんですね。
ただまあ、たまには使いたいこともあると思うんです。
たとえば、こんな例はどうでしょうか。
ジャンプしたときの高さの、最大値を知りたい、みたいなときです。
下の数字は、「位置センサーノードン」のYポートの値をつないだ「数つきモノノードン」。いま現在の高さがリアルタイムで出ています。
上の数字は最大値。ジャンプのいちばん高い頂点での高さです。地上に戻ってきて、下の数字はもとに戻っていますが、上の数字はいちばん高い位置が保持されています。
こういうことができる「変数」があると便利そうですよね。
「そもそもコンピューターというのはだね……」
そもそも変数はあるんですよ。「フラグノードン」は0と1しか保持できないけれど、りっぱな変数です。8個ならべたら、0から255までの数を表せるんです! 16個なら65,535個、32個なら4,294,967,295個なんですから、フラグノードンを並べたら変数なんかすぐできるんです!
「うわあああああああああああああ」
ごめんなさい。フラグノードンを並べるのは大変ですね。
ノードンの数をせつやくするなら、カウンターノードンを使った方がよさそうです。
カウンターノードンでつくる「変数」
というわけで、カウンターノードンを使ったらすぐにできました。ノードン4個です。
変数のぶぶんだけ拡大すると、こうです。
「S」は「セットシグナル」。ここに0以外の値が来た時、変数を書き換えします。0が来ているときは変数の値は保持されます。
「I」はインプットで、ここに変数に入れたい値を渡します。
「O」はアウトプットで、変数の値がほしい時はここから取れます。
上のANDノードン、Sの値をどっちにも入れてます。これはSに99.9とかが入っていても1.0にするテクニックです。もっと楽な方法があるかもしれませんのでテクニックとか言っちゃってるの恥ずかしいかも。
2つあるけいさんのうち、「かけざん」は「1かける」と「0かける」のどちらかしか発生しないようになっています。Sが0の場合こたえは0になり、カウンターの値は保持されたままです。
「ひきざん」は新しい値と古い値のひきざんをしています。カウンターノードンは「値を増やす」「値を減らす」「リセットする」の3通りしかできないので、好きな値をじかに指定することはできません。
カウンターを「新しい値」にするために、「古い値と新しい値との差分値」を「値を増やす」に入れてやる必要があるわけです。
どうでしょうか。これでもう、「変数がない」とは言わせないですよ!
カウンターノードンにはひとつ注意点がありまして、あつかえる値が -1000~1000までしかありません。これを超える数を扱いたい場合は、さらに工夫が必要です。ですが、工夫すればなんとかなりそうですよね?
以上です。ここまで読んでいただいて、ありがとうございました!
この記事が気に入ったらサポートをしてみませんか?