Progetto esame net beans

di il
17 risposte

Progetto esame net beans

Salve a tutti mi sono iscritto ora a questo forum e sono un apprendista del linguaggio java pian piano sto imparando, solo che ho un esame universitario da sviluppare con il software netbeans entro il 5 febbraio, la mia idea è far piovere personaggi dei videogame (supermario,sonic,pacman....) e farli spiaccicare al suolo. Qualcuno potrebbe inviarmi un codice sorgente che sia in grado di fare questo?? anche una cosa molto semplice. Grazie mille Federico

17 Risposte

  • Re: Progetto esame net beans

    Ciao avevo gia per caso una cosa simile. Sempre che non sia gia apposto...

    sono dei quadrati che cadono assieme.


    la classe dove viene lanciato il programmino
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.util.LinkedList;
    
    import javax.swing.JFrame;
    
    public class Main {
    
    	private JFrame frame;
    	
    	public Main() {
    		frame =  new JFrame("Piove");
    		frame.setSize(new Dimension(300,300));
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLayout(new BorderLayout());
    		frame.getContentPane().add(getFilledCPanel(),BorderLayout.CENTER);
    		
    		frame.setVisible(true);
    	}
    	
    	private Component getFilledCPanel() {
    		LinkedList<Characters> list = new LinkedList<Characters>();
    		for (int i = 0; i < 4; i++) {
    			list.add(new Characters((i*40),0));
    		}
    		return new CustomPanel(list);
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    }
    
    Il pannello dove vengo disegnati i quadrati.
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.util.LinkedList;
    
    import javax.swing.JPanel;
    
    public class CustomPanel extends JPanel {
    	
    	private LinkedList<Characters> list;
    	
    	public CustomPanel() {
    		setSize(new Dimension(300,300));
    		setBackground(Color.white);
    	}
    
    	public CustomPanel(LinkedList<Characters> a){
    		this();
    		list = a;
    	}
    	@Override
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		for (Characters c : list) {
    			c.draw(g);
    		}
    		repaint();
    	}
    }
    
    e infine quelli che diventeranno i tuoi personaggi.
    import java.awt.Color;
    import java.awt.Graphics;
    
    public class Characters extends Thread {
    	private int x;
    	private int y;
    	public Characters(int a,int b) {
    		x = a;
    		y = b;
    		start();
    	}
    	
    	@Override
    	public void run() {
    		for (int i = 0; i < 15; i++) {
    			y += i;
    			try {
    				Thread.sleep(200);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	
    	}
    
    	public void draw(Graphics graphics){
    		graphics.setColor(Color.BLACK);
    		graphics.draw3DRect(x, y, 20, 20, false);
    		//qui metti l imagel
    		//graphics.drawImage(.....)
    	}
    }
    
    Spero ti serva

    Bye bye
  • Re: Progetto esame net beans

    Grazie veramente.... scusa la mia ignoranza, ma come faccio ad inserire le immagini? ( e possibile per ogni quadrato inserire immagini diverse??)
  • Re: Progetto esame net beans

    Ciao ti rimetto il code modificato cosi puoi inserire le immagini facilmente.

    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.util.LinkedList;
    
    import javax.swing.JFrame;
    
    
    public class Main {
    
    	private JFrame frame;
    	
    	public Main() {
    		frame =  new JFrame("Piove");
    		frame.setSize(new Dimension(300,300));
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLayout(new BorderLayout());
    		frame.getContentPane().add(getFilledCPanel(),BorderLayout.CENTER);
    		
    		frame.setVisible(true);
    	}
    	
    	private Component getFilledCPanel() {
    		CustomPanel panel = null;
    		LinkedList<Characters> list = new LinkedList<Characters>();
    		for (int i = 0; i < 4; i++) {
    			list.add(new Characters((i*40),0,panel));
    		}
    		panel = new CustomPanel(list);
    		for (Characters characters : list) {
    			characters.start();
    		}
    		return panel;
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    }
    
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Characters extends Thread {
    	private int x;
    	private int y;
    	private JPanel frame;
    	private Image im;
    	public Characters(int a,int b) {
    		x = a;
    		y = b;
    		im = Toolkit.getDefaultToolkit().getImage ("<Path to image>/a.gif");
    	}
    	
    	public Characters(int i, int j, JPanel frame) {
    		this(i,j);
    		this.frame = frame;
    	}
    
    	@Override
    	public void run() {
    		for (int i = 0; i < 15; i++) {
    			y += i;
    			try {
    				Thread.sleep(200);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	
    	}
    
    	public void draw(Graphics graphics){
    		graphics.setColor(Color.BLACK);
    		
    		//qui metti l imagel
    		//graphics.drawImage(.....)
    		graphics.drawImage(im, x, y,frame);
    	}
    	
    }
    

    Le cose cambiate sono due adesso la class Character ha anke una referenza al Jpanel e un attributo Image.
    Nel costruttore ce il sistema per fetchare l immagine.

    Ciao Buona serata
  • Re: Progetto esame net beans

    Ciao scusa se ti disturbo ancora ma si riuscirebbe a inserire piu immagini diverse l'una dall' altra di piccola dimensione e farle scendere fino al margine basso dello sfondo ? Mandando il tutto in loop (in modo che si ripeta all'infinito).
  • Re: Progetto esame net beans

    esploratore ha scritto:


    Ciao scusa se ti disturbo ancora ma si riuscirebbe a inserire piu immagini diverse l'una dall' altra di piccola dimensione e farle scendere fino al margine basso dello sfondo ? Mandando il tutto in loop (in modo che si ripeta all'infinito).
    Certamente devi modificare il costrutture che accetti dei percorsi diversi per le immagini che vuoi usare
       public Characters(int a,int b,String pathToImage) {
          x = a;
          y = b;
          im = Toolkit.getDefaultToolkit().getImage (pathToImage); //ci sara un path diverso per ogni immagine
       }
    Quando crei dei Characters gli passi i percorsi che vuoi.

    Dopo per arrivare in fondo gioca tu nel loop del metodo run() con un loop infinito o finito...
    e nello sleep cambi anke le velocita cosi che un elefante scenda piu velocemente di un gatto tipo...
    ciaop
    :
  • Re: Progetto esame net beans

    Come faccio a modificare il costruttore?? ho provato ad aggiungere degli int nella stringa public charters ma mi da errore
  • Re: Progetto esame net beans

    esploratore ha scritto:


    Come faccio a modificare il costruttore?? ho provato ad aggiungere degli int nella stringa public charters ma mi da errore
    Usa la modifica che ti ho messo nel post precedente al tuo. Poi nella classe Main quando crei i threads gli passi percorsi diversi per immagini diverse.

    se non riesci posta il code ok??

    Ciao
  • Re: Progetto esame net beans

    Ciao sei per caso iscritto all'uni di Bologna?
  • Re: Progetto esame net beans

    Posto il code completo:

    Classe main:
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.util.LinkedList;
    
    import javax.swing.JFrame;
    
    
    public class Main {
    
       private JFrame frame;
       
       public Main() {
          frame =  new JFrame("Piove");
          frame.setSize(new Dimension(300,300));
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setLayout(new BorderLayout());
          frame.getContentPane().add(getFilledCPanel(),BorderLayout.CENTER);
          
          frame.setVisible(true);
       }
       
       private Component getFilledCPanel() {
          CustomPanel panel = null;
          LinkedList<Characters> list = new LinkedList<Characters>();
          for (int i = 0; i < 4; i++) {
             list.add(new Characters((i*40),0,panel));
          }
          panel = new CustomPanel(list);
          for (Characters characters : list) {
             characters.start();
          }
          return panel;
       }
    
       public static void main(String[] args) {
          new Main();
       }
    }
    
    Classe CustomPanel:
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.util.LinkedList;
    
    import javax.swing.JPanel;
    
    public class CustomPanel extends JPanel {
       
       private LinkedList<Characters> list;
       
       public CustomPanel() {
          setSize(new Dimension(300,300));
          setBackground(Color.white);
       }
    
       public CustomPanel(LinkedList<Characters> a){
          this();
          list = a;
       }
       @Override
       protected void paintComponent(Graphics g) {
          super.paintComponent(g);
          for (Characters c : list) {
             c.draw(g);
          }
          repaint();
       }
    }
    

    Classe Characters:
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Characters extends Thread {
       private int x;
       private int y;
       private JPanel frame;
       private Image im;
       public Characters(int a,int b) {
          x = a;
          y = b;
          im = Toolkit.getDefaultToolkit().getImage ("/Users/federicobarassi/NetBeansProjects/OK/src/ok/java4.gif");
       }
       
       public Characters(int i, int j, JPanel frame) {
          this(i,j);
          this.frame = frame;
       }
    
       @Override
       public void run() {
          for (int i = 0; i < 15; i++) {
             y += i;
             try {
                Thread.sleep(200);
             } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             }
          }
       
       }
    
       public void draw(Graphics graphics){
          graphics.setColor(Color.BLACK);
          
          //qui metti l imagel
          //graphics.drawImage(.....)
          graphics.drawImage(im, x, y,frame);
       }
       
    }
  • Re: Progetto esame net beans

    Ciao,

    Nella classe main ti ho messo un hardcodata, un array di stringhe che sono tutti i tuoi percorsi alle immagini che vuoi.

    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.util.LinkedList;
    
    import javax.swing.JFrame;
    
    
    public class Main {
    
    	private JFrame frame;
    	private static final String[] paths = {"/Users/federicobarassi/NetBeansProjects/OK/src/ok/java1.gif",
    		"/Users/federicobarassi/NetBeansProjects/OK/src/ok/java2.gif",
    "/Users/federicobarassi/NetBeansProjects/OK/src/ok/java3.gif",
    "/Users/federicobarassi/NetBeansProjects/OK/src/ok/java4.gif"};
    	
    	public Main() {
    		frame =  new JFrame("Piove");
    		frame.setSize(new Dimension(300,300));
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLayout(new BorderLayout());
    		frame.getContentPane().add(getFilledCPanel(),BorderLayout.CENTER);
    		
    		frame.setVisible(true);
    	}
    	
    	private Component getFilledCPanel() {
    		CustomPanel panel = null;
    		LinkedList<Characters> list = new LinkedList<Characters>();
    		for (int i = 0; i < paths.length; i++) {
    			list.add(new Characters((i*40),0,panel,paths[i]));
    		}
    		panel = new CustomPanel(list);
    		for (Characters characters : list) {
    			characters.start();
    		}
    		return panel;
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    }
    

    E qua e la modifica che ti dicevo del costruttore...
    gli passi anke una stringha come param, quindi ogni thread ha una sua immagine....

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Characters extends Thread {
    	private int x;
    	private int y;
    	private JPanel frame;
    	private Image im;
    	public Characters(int a,int b) {
    		x = a;
    		y = b;
    	}
    	
    	public Characters(int i, int j, JPanel frame,String path) {
    		this(i,j);
    		this.frame = frame;
    		im = Toolkit.getDefaultToolkit().getImage (path);
    	}
    
    	@Override
    	public void run() {
    		for (int i = 0; i < 15; i++) {
    			y += i;
    			try {
    				Thread.sleep(200);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	
    	}
    
    	public void draw(Graphics graphics){
    		graphics.setColor(Color.BLACK);
    		
    		//qui metti l imagel
    		//graphics.drawImage(.....)
    		graphics.drawImage(im, x, y,frame);
    	}
    	
    }
    
    bye
  • Re: Progetto esame net beans

    Scusa ma per mandare in loop ho provato al posto del ciclo for a mettere un ciclo while ma mi da errore come devo fare ??
    Poi è possibile dare il play dell'azione con un pulsante?? Grazie
  • Re: Progetto esame net beans

    esploratore ha scritto:


    Scusa ma per mandare in loop ho provato al posto del ciclo for a mettere un ciclo while ma mi da errore come devo fare ??
    Poi è possibile dare il play dell'azione con un pulsante?? Grazie
    Xke il while??? cmq come fa a darti errore while ~= for ??? while(<condizione>){} ...

    Per il bottone si puo devi aagiungerlo al pannello nel main ... e poi ci aggiungi l action performed...

    cosi...
    JButton startB = new JButton("start");
    startB.addActionListener(new ActionListener(){
    
    	public void actionPerformed(ActionEvent e) {
    
    		//qui fai partire le immagini.. 
    	}
    	
    });
    posta la tua porzione di code con il while se non va
  • Re: Progetto esame net beans

    @Override
       public void run() {
    
          while (int i = 0; i < 22; i = i + 1) {}
         
              y += i;
            
             try {
                Thread.sleep(200);
                
             } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                System.out.println(i);
             }
          }
       }
    Scusa la mia ignoranza in materia ma sono ancora un apprendista , dove devo mettere il jbutton, nella classe main ok, ma dove??
  • Re: Progetto esame net beans

    esploratore ha scritto:


    @Override
       public void run() {
    
          while (int i = 0; i < 22; i = i + 1) {}
         
              y += i;
            
             try {
                Thread.sleep(200);
                
             } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                System.out.println(i);
             }
          }
       }
    Scusa la mia ignoranza in materia ma sono ancora un apprendista , dove devo mettere il jbutton, nella classe main ok, ma dove??
    Tranquillo tutti sono stati apprendisti... e da imparare ce sempre!

    code for JBUtton
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    
    public class Main implements ActionListener{
    
    	private JFrame frame;
    	private LinkedList<Characters> list;
    	private boolean isStart = false;
    	
    	private static final String[] paths = {"/Users/federicobarassi/NetBeansProjects/OK/src/ok/java1.gif",
    		"/Users/federicobarassi/NetBeansProjects/OK/src/ok/java2.gif",
    "/Users/federicobarassi/NetBeansProjects/OK/src/ok/java3.gif",
    "/Users/federicobarassi/NetBeansProjects/OK/src/ok/java4.gif"};
    	
    	public Main() {
    		frame =  new JFrame("Piove");
    		frame.setSize(new Dimension(300,300));
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLayout(new BorderLayout());
    		frame.getContentPane().add(getFilledCPanel(),BorderLayout.CENTER);
    		JButton button = new JButton("start");
    		button.addActionListener(this);
    		JPanel panel = new JPanel();
    		panel.setLayout(new BorderLayout());
    		panel.add(button,BorderLayout.CENTER);
    		panel.add(new JLabel("-------->"),BorderLayout.WEST);
    		panel.add(new JLabel("<--------"),BorderLayout.EAST);
    		frame.getContentPane().add(panel,BorderLayout.SOUTH);
    		
    		frame.setVisible(true);
    	}
    	
    	private Component getFilledCPanel() {
    		CustomPanel panel = null;
    		list = new LinkedList<Characters>();
    		
    		for (int i = 0; i < paths.length; i++) {
    			list.add(new Characters((i*40),0,panel,paths[i]));
    		}
    		panel = new CustomPanel(list);
    
    		return panel;
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    
    	public void actionPerformed(ActionEvent e) {
    		if(!isStart)
    			for (Characters characters : list) {
    				characters.start();
    			}
    		isStart = true;
    	}
    }
    
    Un paio di consigli...
    1) l errore che ti da e molto semplice, xke tu al posto della keyword for hai messo while =>> for (int i = 0; i < 22; i = i + 1) e tu lo hai trasformato in while (int i = 0; i < 22; i = i + 1) => allora non funzia cosi....
    Il for scritto cosi e giusto il while accetta solo valori booleani... quindi while(i < 22){}...
    2) Ti conviene riguardare un paio di cose dall inizio...
    3) FAtti amico google... xke all inizio aiuta di brutto. per suggeriemnti guide ecc ecc....
    4) impara bene il pto 3...

    Ciao have a nice day.
Devi accedere o registrarti per scrivere nel forum
17 risposte