【はじプロ】ランダムノードンを攻略:初心者がつまづきやすいポイントを解説してみた
2023.10.17更新
広告
【PR】この記事には広告を含みます。
この記事はこんな人に読んでもらいたい
- ランダムノードンをどのように使えるかイメージできていないあなた
- ランダム要素をもったゲームを作りたいあなた
この記事を読めばこんなことがわかる
- ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
- 入力された数値が0か、0以外か判断して出力する
- 1/60秒前の数値から変わったかどうかを判断して出力する
「ナビつき!つくってわかる はじめてゲームプログラミング」(はじプロ)でゲームを作ろうと頑張っているお子さんも多いでしょう。
ナビ付きレッスンをクリアしたうえでゲームを作っていくと、
クリアのしかたを覚えちゃったら飽きちゃうよね・・・。
毎回違う仕掛けを作るにはどうすればいいのかな?
と、せっかく作ったゲームを何回も楽しんでもらいたい、と欲がでてくるのではないでしょうか?
過去に私がつくったゲームには、1〜4の数字がかかれたパネルを順番にタッチする、というミニゲームがあります。
ランダムノードンを使わないと、1〜4のパネルは毎回同じ場所に出現してしまいます。
押す場所がわかってしまっているとミスのしようがないので、ゲームとして飽きてしまうと思いませんか?
また、皆さんは『ドラゴンクエスト』、『ファイナルファンタジー』、『ポケットモンスター』をプレイしたことはありますか?
どのゲームでも冒険中に敵が出てきますが、皆さんは敵が出現するタイミングを100%知ることができるでしょうか?
おそらく大半のかたは知ることができないでしょう。
これらのゲームでは、敵が出てくるタイミングがランダムに決まる、いわゆる”ランダムエンカウント”と呼ばれる仕組みが使われています。
この仕組みがあることで、プレイヤーに予測をさせないように工夫しているのですね。
今回は、このようなランダムなしくみをつくりだすことができる”ランダムノードン”の解説をします。
この記事を読めば、ランダムなしくみをご自身のゲームに組み込むことができますよ。
ランダムノードンとは?好き勝手に数字を出力する気まぐれな子
ランダムノードンの役割を覚えよう
ランダムノードンの特徴を一言でいうと、ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子です。
身近なもので例えると、ランダムノードン = ビンゴゲームのガラガラ と覚えてもらえたら、とてもイメージしやすいと思います。
ランダムノードンの役割をひと言でいうと次のとおりです。
ランダムノードンの役割
あらかじめ決められた数字の範囲からランダムに1つだけ出力する
ランダムノードンを使うために覚えること
ランダムノードンには、入力ポートが1つ、出力ポートが1つあります。
- ランダムノードンの入力ポート1つ目「?」(はてな)
- 0が入力された場合:何も出力しない
- 0以外が入力された場合:あらかじめ決められた範囲の数字をランダムに出力する
- ランダムノードンの入力ポート2つ目「リセット」
- 0が入力された場合:何もしない
- 0以外が入力された場合:0を出力する(=リセットする)
- ランダムノードンの出力ポート
- あらかじめ決められた範囲の数字をランダムに出力する
- 出力したい数字の範囲は、設定>出力はんい で設定することができる
ここで、設定画面のなかで理解が難しいポイントである、『数を更新するタイミング』を解説します。
- 数を更新するタイミングのくわしい設定
- 0から変わったしゅんかん:入力ポート「?」に入る数が0から変わったしゅんかん”だけ”出力ポートからランダムに出力する
- 0以外のときずっと:入力ポート「?」に入る数が0でないときは”ずっと”、出力ポートからランダムに出力する
ここで、はじプロのルールについて復習です。
過去記事:【はじプロ】カウンターノードンと時間表示を攻略:つまづきやすいポイントを解説してみた で説明していますが、ノードンガレージで作られたプログラムは、1/60秒ごとに処理を行っています。
今回解説しているランダムノードンは、1秒間のあいだに60回、次のような処理をやっているのです。
- ランダムノードンの入力ポートにつながっているノードンから、入力を受け取る。
- 入力された数値が 0か?0以外か? 判断する。
- 0以外の数値だったら、決められた範囲の数字をランダムに選ぶ。
- 出力ポートから次のノードンへ選んだ数字を送る。
この説明と、『数を更新するタイミング』とどんな関係性があるのか、定数ノードン&ランダムノードン&数つきモノノードンをつなげたプログラムで確認してみましょう。
確認する前に、どんな違いが見られるようになるか、一度ご自身で考えてみてくださいね。
・
・
・
- 数を更新するタイミングと出力される結果の違い
- 0から変わったしゅんかん
- 入力ポート「?」に入る数値が0から変わった瞬間”だけ”出力ポートからランダムに出力する
→【出力結果】ランダムな数値が1つ表示され、いつまでたっても表示される数値は変わらない。
- 0以外のときずっと
- 入力ポート「?」に入る数値が0でないときは”ずっと”、出力ポートからランダムに出力する
→【出力結果】ランダムな数値が1秒間の60個表示され、目で追うことができないほど表示される数値が変わり続ける。
実際のゲーム画面で見てみましょう。
(0から変わったしゅんかんに設定した場合)
(0以外のときずっとに設定した場合)
設定の違いを擬人化するように例えてみました。
0から変わったしゅんかん:ランダムな数値が1つ表示され、いつまでたっても表示される数値は変わらない。
0以外のときずっと:ランダムな数値が1秒間の60個表示され、目で追うことができないほど表示される数値が変わり続ける。
まとめ
今回はランダムノードンの使い方について解説しました。
ランダムノードンの使い方まとめ
- ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
- 入力された数値が0か、0以外か判断して出力する
- 1/60秒前の数値から変わったかどうかを判断して出力する
今回、ランダムノードンをとりあげた理由として2つあります。
- 解説するノードンとしてランダムノードンをとりあげた理由
- ゲームではひんぱんに使うしくみなので理解してほしいから
- 『重複しない乱数』を見つけて感動したから
私も自身でゲームをつくっている際、発生する乱数が重複(ちょうふく・じゅうふく)してしまう問題にぶち当たりました。
そのときに調べた際に見つけたプログラムが『重複しない乱数』だったのです。
- 重複しない乱数
- リンク:はじカミ Nintendo Switch『ナビつき! つくってわかる はじめてゲームプログラミング』のゲームID共有サイト 『重複しない乱数』
- ゲームID:G 000 K88 LX6
- プログラマーID:P 004 M9Y 4Y00
ランダムノードンの出力をそのまま使うのではなく、ランダムノードンの大小関係を使ってランダムな順番を生み出す、という言葉では表現しにくいしくみが考えられています。
発想が柔軟だと思って感動し、ぜひ知ってもらいたいと思ったので、まずは基礎知識として必要なランダムノードンの解説をしました。
次回はこの『重複しない乱数』の解説をします。
\あわせて読んでね/