2011-10-09 3 views
0

특정 카드 (예 : 1.png)를 항상 표시하는 대신 내 이미지 폴더에있는 카드의 표시를 임의 화하려면 어떻게해야합니까?무작위로 객체 선택

여기 내 코드입니다. 나는 숫자를 무작위로 추출하는 방법을 알고 있지만이 상황에서는 설정 폴더를 사용하지 않습니다.

package java_gui; 

import java.awt.GridLayout; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class Images extends JFrame { 
    //create JLabels 
    JLabel card1 = new JLabel(); 
    JLabel card2 = new JLabel(); 
    JLabel card3 = new JLabel(); 

    public Images(){ 
     //create GridLayout 
     setLayout(new GridLayout(1,4,5,5)); 
     //set images 
     card1.setIcon(new ImageIcon("image/card/card/1.png")); 
     card2.setIcon(new ImageIcon("image/card/card/2.png")); 
     card3.setIcon(new ImageIcon("image/card/card/3.png")); 
     //add JLabels 
     add(card1); 
     add(card2); 
     add(card3); 
    } 
} 

답변

1

이미 배열 요소를 셔플하기위한 좋은 알고리즘이 있습니다. Fisher-Yates shuffle을보십시오.

+0

알고리즘이 이미있을뿐만 아니라'Collections.shuffle' (http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java)에 바로 구워졌습니다. .util.List)). – Pops

1

이미지를 반복하지 않고 랜덤 화하려면 먼저 필요한 모든 이미지 번호의 배열을 만들어야합니다. 셔플 한 후 다음

cardsArrayNumber = {1, 2, 3} 

: 배열이 포함됩니다

cardsArrayNumber = {3, 1, 2} 

을 그리고 이미지 할당이 배열을 통해 이동 :

card1.setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[0]) + ".png")); 
card2.setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[1]) + ".png")); 
card3.setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[2]) + ".png")); 

가 팁 : 경우가 더있을거야 당신의 카드는 배열의 일부이며 0부터 이미지 번호 매기기를 시작하므로 어떤 이미지라도 쉽게 처리 할 수 ​​있습니다.

for (int i = 0; i < cardsArray.length; i++) { 
    cardsArray[i].setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[i]) + ".png")); 
} 

배열은 shuffle이고 배열은 JavaDoc입니다.