![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Flashの勉強をし始めた者です。ソフトはSuzukaを使っております。
トランプの簡単なゲームを作りたいと思っております。
52枚から自分の手札としてランダムで5枚のカードを引きます。
その時に、2枚目以降のカードは前に引いたカードと重複させたくないのですが
どのようにしたら良いのでしょうか。
1枚目のカードをランダムにひくASは以下の様に記述しました。
カードをランダムに配るスプライトのアクションレイヤーに記述。
------------------------------------------------------
//カードを配りたいタイミングで21~72の間にフレームを飛ばす。
Array=["21","22" ~省略~ ,"71","72"];
frameName=Array[Math.floor(Math.random()*52)];
gotoAndPlay(frameName);
------------------------------------------------------
"21" ~~~~ "72"
で52枚のカードをランダムに出すようしてあります。
ここまでは問題無いのですが、次 2枚目以降はどうしたらよいのでしょうか?
1枚目と全く同じようにアクションスクリプトを記述してしまうと、
重複したカードが出てしまう可能性があります。
お詳しい方いらっしゃいましたら、ご教授宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
「マスクでトランジション」
マスクを使った画面転換の例と,重複しない乱数の列挙。
http://suzupara.iinaa.net/kiso121.html
ココ↑にもかいてありますが
中身をシャッフルした配列を作成しておいて
配列要素を先頭から順に引いていくと重複は起こりませんよ。
21,22,23,24,…,71,72
からランダム要素を引くのではなくて
あらかじめランダムシャッフルされた配列
55,30,26,65,…,22,45
の先頭要素から順に引くということですね。
--- --- ---
あと配列 Arrayクラス にはsplice メソッドがあります。
Flashドキュメンテーション splice (Array.splice メソッド)
http://livedocs.adobe.com/flash/8_jp/main/000019 …
(使用できるバージョン : ActionScript 1.0、Flash Player 5)
これで
21,22,23,24,…,71,72
からランダムに引いては、その要素を消す
ということをしても重複は起こりません。
「だるま落とし」の積み木をランダムに叩いてはじき飛ばすような方法です。
ただこれを使った場合配列の要素がだんだん減って行くわけですから、
つまり元の配列自体が壊れてしまうので、
再使用したい場合は配列を再作成しなおすような必要があります。
また「引いた履歴」が配列には残りませんから
もし履歴を残したい場合は
引いた要素と引いた順などを別に記録しておく必要が出てきます。
お礼のレスが遅れてしまい申し訳ありません。
事情でFLASHの勉強ができずにいたのですが、最近再開いたしました。
回答で頂いたページのASを使ってみたところ、重複しない乱数の生成とArrayからの数値呼び出しが上手く出来ました。
ありがとうございました。
今度またご指導いただけましたら幸いです<(__)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学の問題です 「ジョーカーを除く1組のトランプ52枚から1枚のカードを引くとき、次の確率を求めよ。 5 2022/04/06 18:18
- 統計学 確率の問題です。 7 2022/05/07 01:08
- 数学 数学A、確率の問題です。 nを4以上の自然数とする。数字の1からnが書かれたカードが1枚ずつ、合計n 3 2023/07/02 22:54
- クレジットカード 楽天カード 1 2022/09/20 12:21
- 数学 ポケモンカード 確率 計算 2 2023/05/11 05:47
- クレジットカード 楽天カードで1枚目も2枚目も同じビザの国際ブランドにしています、 カードの話は疎いのですが JCB 6 2023/04/05 01:11
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Excel(エクセル) 図書カードの分配 7 2023/05/09 15:57
- 数学 当たりが出るまでクジを引くには。 3 2023/05/29 13:22
- 数学 「1~5の数字が書かれたカードが5枚ある。(すべてのカードには異なった数字が書かれている) この5枚 4 2023/02/16 11:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET の配列の要素数
-
VBでボタンを押すと画像をラン...
-
IDの自動採番について
-
正規表現でタグの中身を抜き取...
-
ランダムに数字を並び変える方法は
-
エラー(型が一致しません。)...
-
エラー438でオブジェクトの...
-
VB6でユーザー定義型がNothing...
-
LRESULTとHRESULT
-
ifdefとenum
-
時間差を取得結果を求めるには
-
ATLについて
-
三辺の長さから角度を求めたい...
-
int型やfloat型などの範囲を返...
-
サムネイルの写真にリンクをつ...
-
#define 文
-
調和関数について
-
【至急】大学のVBA授業の課題に...
-
Javaのコンストラクタについて ...
-
TextChangeイベントが発生しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET の配列の要素数
-
変な質問ですみません、n番目の...
-
配列の要素番号を取得するには?
-
重複しない乱数の生成
-
VBでボタンを押すと画像をラン...
-
DataGridでCTRLキーを押さずに...
-
重複しない乱数整数を発生させる。
-
景品パネルの作り方
-
VB6 複数行のテキストをリスト...
-
ランダム表示を重複させないよ...
-
ランダムに6つの数字を選びその...
-
Flashでランダムクイズゲームを...
-
【数字ランダム】計算問題ラン...
-
複数の変数宣言を、for文で一気...
-
[Objective-c]多次元配列のアク...
-
Vba 配列の中の特定文字列の位...
-
二次元配列
-
データ構造のテキスト保存につ...
-
簡単な当たり判定作りたい
-
絵を描き、その都度のxy座標を...
おすすめ情報