Salve a tutti ho trovato sul web questo codice sorgente del memory e vorrey capirne meglio il funzionamento dato che sono una principiante del Java. Soprattutto vorrei capire il significato del codice dellella classe hiddenButtons. Ringrazio tutti per l'attenzione![]()
codice:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GameGuess extends Frame implements ActionListener { ///////////////////////////Variables Declaration///////////////////////// ///////////////////////////////////////////////////////////////////////// JButton[] button = new JButton[30]; JButton[] hiddenButton = new JButton[30]; MenuBar menuBar = new MenuBar(); MenuItem newGame = new MenuItem("New Game"); MenuItem exit = new MenuItem("Exit"); MenuItem instructions = new MenuItem("Instructions..."); MenuItem features = new MenuItem("Features..."); MenuItem aboutUs = new MenuItem("About us..."); int check = 0; String name[] = new String[30]; JButton btn = new JButton(); String str = ""; int chance = 0; int correct = 0; //////////////////////////////////Constructors/////////////////////////// ///////////////////////////////////////////////////////////////////////// GameGuess() { super(); } GameGuess(String title) { super(title); setLayout(null); setBounds(84,50,629,498); setBackground(new Color(64,0,128)); addWindowListener(new Winhandler()); setResizable(false); Image icon = Toolkit.getDefaultToolkit().getImage("icon.jpg"); setIconImage(icon); theMenuBar(); gameButtons(); hiddenButtons(); setVisible(true); } ///////////////////////////////MenuBar Method//////////////////////////// ///////////////////////////////////////////////////////////////////////// public void theMenuBar() { setLayout(null); setMenuBar(menuBar); Menu file = new Menu("File"); Menu options = new Menu("Options"); Menu about = new Menu("About"); file.add(newGame); file.addSeparator(); file.add(exit); exit.addActionListener(this); newGame.addActionListener(this); options.add(instructions); options.addSeparator(); options.add(features); instructions.addActionListener(this); features.addActionListener(this); about.add(aboutUs); aboutUs.addActionListener(this); menuBar.add(file); menuBar.add(options); menuBar.add(about); } ///////////////////////////////Button Method///////////////////////////// ///////////////////////////////////////////////////////////////////////// public void gameButtons() { setLayout(null); int temp2 = 7; int temp1 = 0; Icon ic; for(int i=0 ; i<button.length ; i++) { ic = new ImageIcon("scene.jpg"); button[i] = new JButton(ic); if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) { temp1 = 0; button[i].setBounds(temp2+=103,54+temp1,100,85); } button[i].setBounds(temp2,54+temp1,100,85); add(button[i]); temp1+=88; button[i].addActionListener(this); } } ///////////////////////////////Hidden Buttons////////////////////////////// /////////////////////////////////////////////////////////////////////////// public void hiddenButtons() { setLayout(null); int temp2 = 7; int temp1 = 0; Icon ic; String picName="1.jpg"; int pic[] = new int[30]; int pi = 0; for(int r=0 ; r<2 ; r++) { int t[] = new int[150]; int temp[] = new int[150]; outer: for(int k=0 ; k<150 ; k++) { t[k] = (int)((Math.random()*15)+1); for(int m=0 ; m<k+1 ; m++) { if(t[k] == temp[m]) { continue outer; } } temp[k] = t[k]; pic[pi] = t[k]; pi++; } } for(int i=0 ; i<hiddenButton.length ; i++) { picName = pic[i]+".jpg"; ic = new ImageIcon(picName); name[i] = picName; hiddenButton[i] = new JButton(ic); if(i == 5 || i == 10 || i == 15 || i == 20 || i == 25) { temp1 = 0; hiddenButton[i].setBounds(temp2+=103,54+temp1,100,85); } hiddenButton[i].setBounds(temp2,54+temp1,100,85); add(hiddenButton[i]); temp1+=88; } } /////////////////////////Implementation of ActionListener//////////////// ///////////////////////////////////////////////////////////////////////// public void actionPerformed(ActionEvent ae) { actionOnMenuBar(ae); actionOnButtons(ae); } /////////////////////////Action Performed on MenuBar//////////////////////// //////////////////////////////////////////////////////////////////////////// public void actionOnMenuBar(ActionEvent ae) { Object source = ae.getSource(); if(source == exit) { System.exit(0); } else if(source == newGame) { //setVisible(false); //new GameGuess("Guess The Picture"); } else if(source == instructions) { JOptionPane.showMessageDialog(this, "1- Ci sono 30 caselle sullo schermo\n\n2- alcune contengono delle immagini\n\n3- Devi selezionare 2 caselle con la stessa immagine \n\n4- Se hai selezionato uan casella \ncon un immagine diversa dalal prima \nsi perde una chance e si dovranno selezionare nuovamente 2 caselle\n perdendo una possibilità\n-5 Si hanno 10 possibilità." ,"Instructions",JOptionPane.INFORMATION_MESSAGE); } else if(source == features) { JOptionPane.showMessageDialog(this, "1- Ci sono 30 caselle nello schermo \n\n2-Alcune caselle contengono delle immagini al loro interno. \n\n3- Di seguito sono fornite le istruzioni di gioco.\n\n4- Se si vuole riavviare il gioco durante \nla partita basta cliccare nel menu \ne selezionare l'opzione desiderata. \n\n5- Durante il gioco,hai solo 10 chance \n per completare il gioco prima dello scadere del tempo." ,"Features",JOptionPane.INFORMATION_MESSAGE); } else if(source == aboutUs) { Icon myPicture = new ImageIcon("me.jpg"); JOptionPane.showMessageDialog(this, "XX XX, esame infomatica lb" ,"About Us",JOptionPane.INFORMATION_MESSAGE,myPicture); } } /////////////////////////Action Performed on Buttons//////////////////////// //////////////////////////////////////////////////////////////////////////// public void actionOnButtons(ActionEvent ae) { Object buttonSource = ae.getSource(); for(int i=0 ; i<button.length ; i++) { if(buttonSource == button[i]) { ++check; button[i].setVisible(false); if(check==2) { check=0; if(name[i].equals(str)) { correct++; button[i].setVisible(false); btn.setVisible(false); if(correct == 15) { JOptionPane.showMessageDialog(this, "Congratulazioni, hai vinto." ,"Congratulazioni!",JOptionPane.INFORMATION_MESSAGE); } } else { /*for(int n=0 ; n<3 ; n++) { button[i].setVisible(true); try { Thread.sleep(1); } catch(InterruptedException ie) { button[i].setVisible(true); } } */ button[i].setVisible(true); btn.setVisible(true); chance++; if(chance == 30) { JOptionPane.showMessageDialog(this, "Spiacenti,hai perso. \nhai 30 chances." ,"Hai perso !",JOptionPane.INFORMATION_MESSAGE); chance = 0; System.exit(0); } } } else { btn = button[i]; str = name[i]; } } } } }

