条件付きの乱数の作り方を質問させてください。
スマホのパズルゲームを製作しております。(初心者、unity5.6使用)
10ピースのパズルがあり、
ゲーム開始時に、パズルピースをシャッフルします。
パズルピース
|1|2|3|4|5|6|7|8|9|10|
スロット
|A|B|C|D|E|F|G|H|I|J|
スロット「A」に対しては「1」が正解でスロット「B」に対しては「2」が正解とします。(同様に「J」まで続く)
(スロットは固定で、パズルピースがシャッフルされます)
その際に問題になる条件が、
シャッフル時に、偶然に正解位置に割り振られる事を避けたい、という条件です。
つまり、スロット「A」には「1」以外を、スロット「B」には「2」以外を割り振りたいです。
(もちろん数字の重複も避けたいです)
この場合、
下記のような、正解位置を避けたシャッフルパターンを手動で作るのがいいでしょうか?
例えば
|10|6|2|1|7|8|6|4|5|9|
のような数列をあらかじめ5パターンくらい用意して、
それをランダムに使い回すのがいいでしょうか?
(自分で作った数列5パターンをシーンロード時に
5パターンの中からランダムにどれかを選択し使用する)
または
正解位置を避けながら、なおかつ同じ数字の重複も避けたの乱数の制作はC#で可能でしょうか?
※シーンが進むにつれてパズルのピースは増えて50個~60個になる予定です。
現状のプログラムの状態
1 まずシャッフルしたパズルピースを実際にシーン上に配置
2 シャッフル時に偶然に正解位置に置かれていないかを、コリジョン判定を利用して調べる
3 偶然に正解があった場合はシーンをリロードして再シャッフル
(全部のピースが完全に正解位置を避けるまで何度もシャッフルする)
というプログラムを作ったのですが、
この方法ですとスマホの実機上で実行した場合、
特にパズルピースの数が多い場合に、実機のメモリの消費が激しいようなので、
メモリ消費の少ない方法を探しております。
ご教授よろしくおねがいいたします。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/11 11:20 編集
2017/10/11 11:39
2017/10/11 11:54 編集
2017/10/11 18:12
2017/10/12 00:47
2017/10/12 00:53
2017/10/12 01:02
2017/10/12 01:22
2017/10/12 01:47
2017/10/12 09:28
2017/10/17 11:47