dxlibでテトリスを作っているんですけど、

ベストアンサー

0

ThanksImg質問者からのお礼コメント

コードを詳しく書いていただき本当にありがとうございました。 これでなんとか7種1巡が作れそうです。

お礼日時:4/19 19:51

その他の回答(2件)

0

std::vector<int> block = {1,2,3,4,5,6}; const auto s = block.size(); const auto n = rand()%s; const auto r = block[n]; block.erase( block.begin()+n ); s が 0 になったら、blockを再初期化します。

std::shuffle というそのものなものもあります。こちらは初期化時点で block の内容をランダムに入れ替えます。乱数の設定がいるので若干面倒くさい気がします。

0

要は、1から7までの数値を、重複せずにランダムに並べたい。 ということですよね? それであれば、まず最初に7この配列を用意して、そこに順番に1から7までの数値を入れておきます。 そして、その要素一つ一つに対して順番に 0〜6の乱数を作る 今の番号の値と、乱数の番号の値を交換する これを要素数分繰り返すことで、値の並びはランダムになります。 ランダムですが、入れ替えただけなので重複する事はありません。 トランプをシャッフルするのと同じです。 あとは、それで作ったセットを元にブロックを出していって、7個目を出したら 再び初期化してシャッフルしてください。