【はじプロ】ランダムノードンを攻略:初心者がつまづきやすいポイントを解説してみた

はじプロ解説
この記事はこんな人に読んでもらいたい
  • ランダムノードンをどのように使えるかイメージできていないあなた
  • ランダム要素をもったゲームを作りたいあなた
この記事を読めばこんなことがわかる
  • ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
  • 入力された数値が0か、0以外か判断して出力する
  • 1/60秒前の数値から変わったかどうかを判断して出力する

お疲れ様です。YUmarunosuke(ゆうまるのすけ @YUmaru16061307)です。

「ナビつき!つくってわかる はじめてゲームプログラミング」(はじプロ)でゲームを作ろうと頑張っているお子さんも多いでしょう。

ナビ付きレッスンをクリアしたうえでゲームを作っていくと、

クリアのしかたを覚えちゃったら飽きちゃうよね・・・。

毎回違う仕掛けを作るにはどうすればいいのかな?

と、せっかく作ったゲームを何回も楽しんでもらいたい、と欲がでてくるのではないでしょうか?

今回は、「ナビつき!つくってわかる はじめてゲームプログラミング」(はじプロ)の”ランダムノードン”の解説をします。

過去に私が作ったゲームをご紹介しています。

ぜひ一度ご覧になってから、あるいは何度かプレイしてから読んでいただければ、より理解が深まります。

私がつくったゲームには、1〜4の数字がかかれたパネルを順番にタッチする、というミニゲームがあります。

ランダムノードンを使わないと、1〜4のパネルは毎回同じ場所に出現してしまいます。

押す場所がわかってしまっているとミスのしようがないので、ゲームとして飽きてしまうと思いませんか?

また、皆さんは『ドラゴンクエスト』、『ファイナルファンタジー』、『ポケットモンスター』をプレイしたことはありますか?

どのゲームでも冒険中に敵が出てきますが、皆さんは敵が出現するタイミングを100%知ることができるでしょうか?

おそらく大半のかたは知ることができないでしょう。

これらのゲームでは、敵が出てくるタイミングがランダムに決まる、いわゆる”ランダムエンカウント”と呼ばれる仕組みが使われています。

この仕組みがあることで、プレイヤーに予測をさせないように工夫しているのですね。

この記事を読めば、ランダム要素をもった仕組みをご自身のゲームに組み込むことができます。

ランダムノードンとは?好き勝手に数字を出力する気まぐれな子

ランダムノードンの役割を覚えよう

ランダムノードンの特徴を一言でいうと、

ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子

です。身近なもので例えると、

ランダムノードン = ビンゴゲームのガラガラ

と覚えてもらえたら、とてもイメージしやすいと思います。

ランダムノードンをわかりやすく例えると
ランダムノードンをわかりやすく例えるとビンゴゲームのガラガラ
(画像引用元:https://www.nintendo.co.jp/switch/awuxa/reference/contents/Pages/Page_810688278.html)

ランダムノードンの役割は、ざっくり2つあります。

ランダムノードンの役割
  • あらかじめ決められた数字の範囲から
  • ランダムに1つだけ出力する

ランダムノードンを使うために覚えること

ランダムノードンには、

  • 入力ポートが2つ
  • 出力ポートが1つ

あります。

ランダムノードンの入力ポート
  1. 「?」(はてな)
    • 0が入力された場合:出力ポートから何も出力しない
    • 0以外が入力された場合:出力ポートからあらかじめ決められた範囲の数字をランダムに出力する
  2. リセット
    • 0が入力された場合:何もしない
    • 0以外が入力された場合:0を出力する(=リセットする)
ランダムノードンの出力ポート
  • あらかじめ決められた範囲の数字をランダムに出力する
  • 出力したい範囲は、設定>出力はんい で設定することができる
    • 出力する範囲=『ビンゴのガラガラの中に、1からいくつまでの数字が書かれた玉を入れるか?』

(設定画像)

なお、設定画面のなかで理解が難しいポイントとして、『数を更新するタイミング』があります。

設定>数を更新するタイミングの詳しい解説
  1. 0から変わったしゅんかん:入力ポート「?」に入る数値が0から変わった瞬間”だけ”、出力ポートからランダムに出力する
  2. 0以外のときずっと:入力ポート「?」に入る数値が0でないときは”ずっと”、出力ポートからランダムに出力する

ここで、はじプロのルールについて復習です。

過去記事:【はじプロ】カウンターノードンと時間表示を攻略:つまづきやすいポイントを解説してみた で説明していますが、ノードンガレージで作られたプログラムは、1/60秒ごとに処理を行っています。

ランダムノードンを例にとると、次のような処理が1/60秒ごとに行われています。つまり、1秒間に60回行われているのです。

1/60秒の間にカウンターノードンが行っている処理
  1. ランダムノードンの入力ポートにつながっているノードンから、入力を受け取る。
  2. 入力された数値が 0か?0以外か? 判断する。
  3. 0以外の数値だったら、決められた範囲の数字をランダムに選ぶ。
  4. 出力ポートから次のノードンへ選んだ数字を送る。

この説明と、『数を更新するタイミング』とどんな関係性があるのか、定数ノードン&ランダムノードン&数つきモノノードンをつなげたプログラムで確認してみましょう。

確認する前に、どんな違いが見られるようになるか、一度ご自身で考えてみてくださいね。

設定>数を更新するタイミングの詳しい解説 と 出力される結果の違い
  1. 0から変わったしゅんかん:入力ポート「?」に入る数値が0から変わった瞬間”だけ”、出力ポートからランダムに出力する
    【出力結果】ランダムな数値が1つ表示され、いつまでたっても表示される数値は変わらない。
  2. 0以外のときずっと:入力ポート「?」に入る数値が0でないときは”ずっと”、出力ポートからランダムに出力する
    【出力結果】ランダムな数値が1秒間の60個表示され、目で追うことができないほど表示される数値が変わり続ける。

実際のゲーム画面で見てみましょう。

(0から変わったしゅんかんに設定した場合)

(0以外のときずっとに設定した場合)

設定の違いを擬人化するように例えてみました。

0から変わったしゅんかん:ランダムな数値が1つ表示され、いつまでたっても表示される数値は変わらない。

0以外のときずっと:ランダムな数値が1秒間の60個表示され、目で追うことができないほど表示される数値が変わり続ける。

まとめ

今回は、「はじプロ」におけるランダムノードンの解説を行っていきました。

本記事のまとめ
  • ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
  • 入力された数値が0か、0以外か判断して出力する
  • 1/60秒前の数値から変わったかどうかを判断して出力する

今回、ランダムノードンをとりあげた理由として2つあります。

解説するノードンとしてランダムノードンをとりあげた理由
  1. YUmarunosuke がつくったゲームで使用しており解説したいから
  2. 『重複しない乱数』を見つけて感動したから

私も自身でゲームをつくっている際、発生する乱数が重複(ちょうふく・じゅうふく)してしまう問題にぶち当たりました。

そのときに調べた際に見つけたプログラムが『重複しない乱数』だったのです。

ランダムノードンの出力をそのまま使うのではなく、ランダムノードンの大小関係を使ってランダムな順番を生み出す、という言葉では表現しにくいしくみが考えられています。

発想が柔軟だと思って感動し、ぜひ知ってもらいたいと思ったので、まずは基礎知識として必要なランダムノードンの解説をしました。

次回はこの『重複しない乱数』の解説をしたい、と考えられています。

では、次の記事までごきげんよう。

コメント

はじプロから次のステップへ
詳細をチェック!
はじプロから次のステップへ
詳細をチェック!
タイトルとURLをコピーしました