Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Gioco del memory in java

    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];
    				}
    			}
    		}
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Gioco del memory in java

    Originariamente inviato da Piccettina88
    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.
    Capirai che è leggermente difficile spiegarti quasi 300 linee di codice non commentato, vero?

    Originariamente inviato da Piccettina88 Soprattutto vorrei capire il significato del codice dellella classe hiddenButtons.
    Non esiste una classe del genere in quel codice...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Consulta un libro sul linguaggio Java.. In più rileggi il regolamento.

  4. #4
    Già non ho trovato nessun commento al codice.Comunque mi scuso volevo avere chiarificazioni sul metodo hiddenButtons

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Originariamente inviato da Piccettina88
    Comunque mi scuso volevo avere chiarificazioni sul metodo hiddenButtons
    Non ti preoccupare, comunque cosa non capisci della funzione hiddenButtons?
    Comunque Java ha una sezione a parte, ti preavviso che quasi sicuramente il post verrà spostato.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ma a parte quello, la comprensione del codice (per quanto sia ben scritto) è sempre un lavoro non indifferente e per questo motivo dovrebbe essere accompagnata da commenti.
    Ora in ballo qui vedo concetti un po' forti per una principiante (visto che è un programma fatto con le librerie swing) ergo inizia a leggere un po' di java e a fare esperienza e poi a chiedere cosa non hai capito del programma, non una spiegazione generica (che molti non hanno nemmeno il tempo di darti visto che dovrebbero prima decifrare il tuo codice e poi darti un messaggio valido)
    Buona giornata

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Non è possibile condurre discussioni di questo tipo, che poco hanno a che fare con un reale problema da risolvere ma più con la delega a terzi di interpretare codice altrui al proprio posto, senza sentire l'esigenza di documentarsi.

    Questo chiaramente non contribuisce alla diffusione di nozioni particolari o alla conoscenza di come risolvere un problema specifico, quindi risulta poco utile per questo spazio.

    Meglio documentarsi sul linguaggio Java, che non è un'operazione superflua, e cercare di capire autonomamente il significato del codice che si legge, ed eventualmente chiedere al forum un chiarimento molto specifico in merito che non richieda agli utenti di farsi carico del leggere e interpretare un intero pezzo di codice privo di commenti.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.