2016-05-10 5 views
0

У меня есть школьный проект, чтобы сделать игру, я пытаюсь сделать игру с памятью, но могу использовать изображение только дважды, и нужно, чтобы это было случайным, вот что я до сих пор. Не знаю, как использовать случайные для этой конкретной вещи, так как изображения должны оставаться постоянными на протяжении всей игры, а случайные делают это очень сложно. Извините за формат, первый пост.Могу ли я сделать случайную кнопку?

public class Juego extends JFrame implements ActionListener{ 

JButton boton1 = new JButton(); 
JButton boton2 = new JButton(); 
JButton boton3 = new JButton(); 
JButton boton4 = new JButton(); 
JButton boton5 = new JButton(); 
JButton boton6 = new JButton(); 


public Juego(){ 
FlowLayout lay = new FlowLayout(); this.setLayout(lay); this.setDefaultCloseOperation(EXIT_ON_CLOSE); 



this.setSize(1080, 1080); this.setTitle("Memoria"); 




this.setBackground(Color.black); 
try { 
Image img = ImageIO.read(getClass().getResource("/videojuegos/media/card-back.jpg")); 
boton1.setIcon(new ImageIcon(img)); 
boton2.setIcon(new ImageIcon(img)); 
boton3.setIcon(new ImageIcon(img)); 
boton4.setIcon(new ImageIcon(img)); 
boton5.setIcon(new ImageIcon(img)); 
boton6.setIcon(new ImageIcon(img)); 



} catch (IOException ex){} 
boton1.addActionListener(this); this.add(boton1);boton2.addActionListener(this);this.add(boton2);boton3.addActionListener(this);this.add(boton3);boton4.addActionListener(this);this.add(boton4);boton5.addActionListener(this);this.add(boton5);boton6.addActionListener(this)this.add(boton6); 






boton1.setActionCommand("boton1"); 


boton2.setActionCommand("boton2"); 



boton3.setActionCommand("boton3"); 



boton4.setActionCommand("boton4"); 



boton5.setActionCommand("boton5"); 



boton6.setActionCommand("boton6"); 





this.setVisible(true); 

} 

public void actionPerformed(ActionEvent e) { 






if ("boton1".equals(e.getActionCommand())){ 
    try{ 
Image img = ImageIO.read(getClass().getResource("/videojuegos/media/card-back.jpg")); 
Image img1 = ImageIO.read(getClass().getResource("/videojuegos/media/Fool.jpg")); 
Image img2 = ImageIO.read(getClass().getResource("/videojuegos/media/empress")); 
Image img3 = ImageIO.read(getClass().getResource("/videojuegos/media/lovers")); 
boton1.setIcon(new ImageIcon(img1)); 
} catch (IOException ex){} 

}}} 
+0

Пожалуйста, не просите нас сделать домашнее задание. Любые конкретные программные вопросы, которые у вас есть, приветствуются, но ваши задания должны проверять или обучать вас. – Brody

+0

Просто хочу знать, как рандомизировать кнопку или любую альтернативу. Я не хочу, чтобы вы сделали домашнее задание, просто ответьте на этот вопрос. –

+0

Какая у вас желаемая функциональность? – 4castle

ответ

1

Вы можете использовать ArrayList для хранения набора изображений, а затем использовать Random передать их другому ArrayList в случайном порядке. Например:

Random rn = new Random(); 
ArrayList<Image> imageSet = importImages(); 
ArrayList<Image> randomizedSet = randomize(imageSet, rn); 

public static ArrayList<Image> importImages() { 
    ArrayList<Image> images = new ArrayList<>(); 
    // put some code here to add each image to images twice 
    return images; 
} 

public static ArrayList<Image> randomize(ArrayList<Image> imageSet, Random rn) { 
    ArrayList<Image> images = new ArrayList<>(); 
    while (!imageSet.isEmpty()) { 
     images.add(imageSet.remove(rn.nextInt(imageSet.size()))); 
    } 
    return images; 
} 

randomize() метод в этом примере будет удалить один элемент случайным образом из imageSet и добавить его в images, не делать, пока imageSet не имеет остальные элементы.

Смежные вопросы