前提・実現したいこと
プログラム暦一ヶ月の初心者です。
トランプゲームを作っていて、インスタンスを生成するとコンストラクタ内でシャッフルして山札を作るDeckクラスというのを作りました。画像呼び出し用のstr配列(画像はc01.pngのような名前で保管している)とカードの数字のint配列、スーツ用のstr配列を三つ用意していてそれぞれシャッフルしたあとも紐付けておきたいです。
発生している問題
画像呼び出し用の配列だけとりあえず作ってしっかりシャッフルされて画像も呼び出されていたので、さあ数字とスーツ用の配列も作ろうと思いましたが、ただシャッフルメソッドを使うだけではこの三つをしっかり紐付けできないことに気付きどうしようかと途方に暮れています。
Collections.shuffleを使いつつ三つをしっかり紐付けされたままに出来るのか、はたまた紐付けしたままにしたいなら違うシャッフルのやり方をしないといけないのか、お教え頂きたいです。
該当のソースコード
java
1import java.util.*; 2 3public class Deck { 4 5 ArrayList<String> cards = new ArrayList<String>(); 6 ArrayList<Integer> numbers = new ArrayList<Integer>(); 7 ArrayList<String> suits = new ArrayList<String>(); 8 9 Deck(){ 10 for(int i=0; i<4; i++) { 11 for(int j=1; j<14; j++) { 12 String card; 13 int number; 14 String suit; 15 if(i==0) { 16 if(j<10) { 17 card = "c0" + j; 18 number = j; 19 suit = "c"; 20 } else { 21 card = "c" + j; 22 number = j; 23 suit = "c"; 24 } 25 } else if (i==1) { 26 if(j<10) { 27 card = "d0" + j; 28 number = j; 29 suit = "d"; 30 } else { 31 card = "d" + j; 32 number = j; 33 suit = "d"; 34 } 35 } else if (i==2) { 36 if(j<10) { 37 card = "h0" + j; 38 number = j; 39 suit = "h"; 40 } else { 41 card = "h" + j; 42 number = j; 43 suit = "h"; 44 } 45 } else { 46 if(j<10) { 47 card = "s0" + j; 48 number = j; 49 suit = "s"; 50 } else { 51 card = "s" + j; 52 number = j; 53 suit = "s"; 54 } 55 } 56 cards.add(card); 57 numbers.add(number); 58 suits.add(suit); 59 } 60 } 61 Collections.shuffle(cards); //←このシャッフル結果にnumberとsuitも合わせたい 62 } 63} 64 65 66 67
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/04 16:05