アイテムをランダムに配置する
今回はアイテムをランダムで配置するプログラムを作成します。
~今回の内容~
バナナと階段が表示されています。更新ボタンを押します。
リンゴと階段が表示されています。更新ボタンを押します。
バナナと階段が表示されています。更新ボタンを押すたびにアイテムがランダムに表示されていることがわかると思います。
~プログラムの説明~
今回のプログラムは、前回作成したランダムで表示されるマップの中に、さらにランダムでアイテムを出現させるものになります。
下が今回の主なプログラムになります。
前回作成したmapselect関数の中をいじりました。
180~201行目の内容は、簡単に言ってしまうと配列map内の要素の値を変更するものになります。
181~182行目の2重for文では配列map内の値を一つずつ参照するのに使います。
183行目では「参照した配列の要素の値が1の時かつflag1がfalseの時」を条件としています。この場合、階段がマップ上に存在しないときとなります。
184行目では0~1000未満の乱数を作成しています。
185行目では乱数の値が0だった場合の処理を記述しています。その時、参照した配列の要素の値を3に変え、flag1をtrueとします。3は、本ゲームにおいて階段を意味する値です。そして、flag1をtrueとすることで、作成したマップ内に階段が存在することをゲームが認識します。
186行目では乱数で生成した値が0じゃないときに処理を抜けることを意味しています。
190~195行目では上述したのと同じような内容となっております。
190行目でマップ上に階段が生成された際にこちらの条件式が真となるため、マップ上に階段が生成された時点で処理の内容がこちらに移行します。
191~193行目では乱数で生成された値が0、1、2の際にマップ上に様々なオブジェクトを配置するプログラムとなります。
199~201行目では、マップ上に階段が生成されなかった場合にもう一度mapselect関数を実行する処理となります。
おわり
アイテムをランダムで生成するというのは、当初想定していた以上に手間取りました。ですが、今回の記事で完成させることができてよかったです。でも、実はこのプログラムの内容では、ゲームに多大なる欠陥が発生することがわかってしまいました。また別の方法を考えないといけませんね。頑張ったのに。。。
次回の記事はそんな欠陥を改良するものになります。
コメント
コメントを投稿