Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7

    [Java] Aiuto con programma

    Salve a tutti!
    Mi aiutate a capire cosa c'è che non va nel mio programma? In pratica il mio problema è che quando finisco una partita e voglio farne un'altra mi appare subito il JOptionPane con scritto che non ho colpito abbastanza bersagli.
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    import java.io.*;
    import java.lang.*;
    import java.util.*;
    import java.util.Formatter;
    
    class InfoFile{
    	
    	private Formatter output;
    	private Giocatore Player;
    	
    	InfoFile(Giocatore newPlayer){
    		Player = newPlayer;
    	}
    	
    	public boolean ApriPerScrivere(){
    		try{
    			output = new Formatter(Player.getNome());
    		}
    		catch(SecurityException securityException)
    		{
    			System.err.println( "Nessun accesso alla scrittura di questo file.");
    		}
    		catch(FileNotFoundException filesNotFoundException)
    		{
    			System.err.println( "Errore durante la creazione del file." );
    		}
    		
    		return (output != null);
    	}
    	
    	public void ScriviSuFile(int k){
    		try{
    			
    			ApriPerScrivere();
    			String testo = "";
    			Player.setPoints(Player.getPoints()+k);
    			
    			output.format("%d",Player.getPoints());
    			ChiudiFileScritto();
    		}
    		catch(FormatterClosedException formatterClosedException){
    			System.err.println( "Errore durante la scrittura del file." );
             	 	return;
             	}
            }
            
            public void ChiudiFileScritto(){
            	if (output != null)
            		output.close();
            }
            
            private Scanner input;
            
            public boolean ApriPerLeggere(){
            	try{
            		input = new Scanner(new File(Player.getNome()));
            	}
            	catch(FileNotFoundException exception){
            		System.err.println("Errore durante l'apertura del file.");
            	}
            	return(input != null);
            }
       	
       	public int Leggi(){
       		try{
       			ApriPerLeggere();
       			System.out.printf("%d", Player.getPoints());
       			ChiudiFileLetto();
       		}
       		catch(NoSuchElementException elementException){
       			System.err.println( "File con struttura errata." );
       			input.close();
       		}
       		catch(IllegalStateException stateException){
       			System.err.println( "Errore durante la lettura del file." );
       		}
       		return Player.getPoints();
       	}
       	
       	public void ChiudiFileLetto()
       	{
       		
       		if ( input != null )
       			input.close();
       	}
    }
    1° parte Prova10
    codice:
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import javax.swing.Timer;
    import java.util.ArrayList;
    import java.awt.Component;
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.io.*;
    
    public class Prova10 extends JPanel{
    	
    	public static void main(String [] args){
    		
    		JFrame finestra = new MyFrame();
    		finestra.setVisible(true);
    		finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    
    class MyFrame extends JFrame{
    	final int X = 530;
    	final int Y = 530;
    	private int schermoW, schermoH;
    	private int MaxBersagli = 10;
    	private GiocoPanel myGioco;
    	private DatiPanel myDati;
    	private int Stage, Obiettivi, Punti, Points;
    	private double G = 40, raggio;
    	public int Colpiti = 0;
    	private Giocatore Player = new Giocatore();
    	private String NomeGiocatore;
    	
    	public Giocatore getGiocatore(){
    		return Player;
    	}
    		
    		public MyFrame(){
    			Dimension schermo = Toolkit.getDefaultToolkit().getScreenSize();
    			schermoH = schermo.height;
    			schermoW = schermo.width;
    			setTitle("Shoot At It");
    			setResizable(false);
    			setLocation( schermoW/2-250, schermoH/2-250);
    			setSize(X,Y);
    			
    			JPanel mainPanel = new JPanel();
    			mainPanel.setLayout(new BorderLayout());
    			
    			myGioco = new GiocoPanel();
    			myDati = new DatiPanel(1,0,0);
    			myDati.setStage(1);
    			myDati.setObiettivi(0);
    			myDati.setPunti(0);
    			myDati.refreshDati();
    			
    			mainPanel.add(myGioco, BorderLayout.CENTER);
    			mainPanel.add(myDati, BorderLayout.SOUTH);
    			
    			add(mainPanel);
    		}
    		
    		class GiocoPanel extends JPanel implements MouseListener, MouseMotionListener{
    			Dimension myGioco = new Dimension(0, 0);
    			Color myColor = new Color(22, 43, 86);	 //COLORE PANNELLO MYGIOCO;
    			private Timer t,t1;
    			private int tempo1 = 3000;
    			private ArrayList<Bersaglio> bersagli;
    			private ArrayList<Bersaglio> ElementiDaRimuovere;
    			double x,y;
    			private int creati;			
    			private double velocita = 2;
    			InfoFile datiPlayer = new InfoFile(Player);
    			File F = new File(Player.getNome());
    			
    			public GiocoPanel(){
    				setPreferredSize(myGioco);
    				setBackground(myColor);
    				setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
    				MaxBersagli = 10;
    				creati = 0;
    				String NomePlayer = JOptionPane.showInputDialog("Inserisci il tuo nome");
    				Player.setNome(NomePlayer);
    				
    				if(F.exists()){
    					int Puntivecchi = datiPlayer.Leggi();
    					JOptionPane.showMessageDialog(null, "Vecchio Punteggio: "+Puntivecchi, "", JOptionPane.INFORMATION_MESSAGE);
    				}
    				else{
    					JOptionPane.showMessageDialog(null, "Benvenuto in Shoot-At-It "+Player.getNome()+"!\nLo scopo del gioco e' colpire piu' bersagli possibili.\nPer superare uno stage devi colpirne almeno 6.\nBuona partita!", "Benvenuto", JOptionPane.INFORMATION_MESSAGE );
    				}
    					
    				
    				Genera();
    				t = new Timer(20, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							if(bersagli != null){
    								for(int i=0; i<bersagli.size(); i++){
    									((Bersaglio)(bersagli.get(i))).move();
    										if(Bordi(i)){
    										bersagli.remove(i);
    										}
    									repaint();
    								}
    							}
    							if(bersagli.size() == 0 && creati == MaxBersagli){
    							if(Colpiti < 6){
    								t.stop();
    								t1.stop();
    								int text = 0;
    								if(F.exists()){
    									datiPlayer.ScriviSuFile(Player.getPoints());
    									text = datiPlayer.Leggi();
    								}
    								else{
    									datiPlayer.ScriviSuFile(0);
    									text=datiPlayer.Leggi();
    								}
    								String controllo = ("Non hai colpito abbastanza bersagli!\nStage: "+Stage+
    									"\nObiettivi: "+Obiettivi+"\nPunti: "+Punti+"\nVuoi rigiocare?");
    								int risp = JOptionPane.showConfirmDialog(null, controllo, "Game Over", JOptionPane.YES_NO_OPTION );
    									if(risp == JOptionPane.YES_OPTION){
    										creati = 0;
    										Stage = 1;
    										Obiettivi = 0;
    										Punti = 0;
    										Points = 0;
    										Colpiti = 0;
    										velocita = 2;
    										tempo1 = 3000;
    										String NomePlayer1 = JOptionPane.showInputDialog("Inserisci il tuo nome");
    										Player = new Giocatore();
    										Player.setNome(NomePlayer1);										
    										t.start();
    										t1.start();
    										Genera();
    										myDati.refreshDati();
    									}else{
    										if(risp == JOptionPane.CLOSED_OPTION||risp == JOptionPane.NO_OPTION){
    										JOptionPane.showMessageDialog(null,"GAME OVER");
    										System.exit(0);
    										}
    									}
    							}else{
    								Stage += 1;
    								creati = 0;
    								tempo1 -= 20;
    								G -= 2.5 ;
    								Obiettivi = 0;
    								Colpiti = 0;
    								velocita += 0.3;
    								myDati.refreshDati(); 
    								Genera();
    							}
    						}
    						repaint();
    					}
    				});
    				t.start();
    				t1.start();
    				addMouseListener(this);
    				addMouseMotionListener(this);
    			}
    			public void Genera(){
    				bersagli = new ArrayList<Bersaglio>();
    				t1 = new Timer(tempo1, new ActionListener(){ 
    						public void actionPerformed(ActionEvent event){
    							if(creati<MaxBersagli){
    							bersagli.add(new Bersaglio(0,0));
    							((Bersaglio)bersagli.get(bersagli.size()-1)).setSpeed(velocita);	// Velocità Bersagli
    							((Bersaglio)(bersagli.get(bersagli.size()-1))).setCentro(CentroRandom());
    							creati++;
    							}
    						}
    				});
    				t1.start();
    			}
    			
    			public Point2D CentroRandom(){
    			 	Point2D punto = new Point2D.Double(150,150);
    				switch((int)Math.round(Math.random()*7+1)){
    					
    				case 1: punto = new Point2D.Double(-30,-30);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,1);
    					break;
    				case 2: punto = new Point2D.Double(0,30+NRandom());
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,0);
    					break;
    				case 3: punto = new Point2D.Double(30+NRandom(),0);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(0,1);
    					break;
    				case 4: punto = new Point2D.Double(530,530);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,-1);
    					break;
    				case 5: punto = new Point2D.Double(520,0);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,1);
    					break;
    				case 6: punto = new Point2D.Double(-15,520);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,-1);
    					break;
    				case 7: punto = new Point2D.Double(30+NRandom(),485);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(0,-1);
    					break;
    				case 8: punto = new Point2D.Double(530,30+NRandom());
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,0);
    					break;
    				}
    				return punto;				
    			}
    			public int NRandom(){
    				int nrand = (int)(Math.round((Math.random())*300+1));
    				return nrand;
    			}
    			
    			public boolean Bordi(int i){
    				boolean controllo = false;
    				
    				if(bersagli.get(i).getCentro().getX() > 530+45)
    						controllo = true;					
    				if(bersagli.get(i).getCentro().getX() < -45)
    						controllo = true;
    				if(bersagli.get(i).getCentro().getY() > 530+45)
    						controllo = true;
    				if(bersagli.get(i).getCentro().getY() < -45)
    						controllo = true;	
    				return controllo;
    			}

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    (Scusate ma non c'entrava tutto in un messaggio)

    codice:
    public void paintComponent(Graphics g){
    				super.paintComponent(g);
    				Graphics2D g2 = (Graphics2D)g;
    				g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    				if(bersagli==null)
    					bersagli = new ArrayList<Bersaglio>();
    				else
    					disegna(g2);
    					g2.setColor(new Color(22,43,86));
    			}
    			
    			public void disegna(Graphics2D g2){
    				for(int i=0; i<bersagli.size(); i++){
    					((Bersaglio)bersagli.get(i)).disegna(g2);
    				}
    			}
    			
    			//METODI MOUSE LISTENER
    			public void mouseMoved(MouseEvent e){ }
    			
    			public void mousePressed(MouseEvent e){
    				x=e.getX();
    				y=e.getY();
    				for(int i=0; i<bersagli.size(); i++){
    					if (ElementiDaRimuovere == null)
    						ElementiDaRimuovere = new ArrayList<Bersaglio>();
    					
    					if(bersagli.get(i).cerchio5.contains(x, y) ){ 
    						Punti += 50;
    						Obiettivi += 1;
    						Colpiti += 1;
    						Player.setPoints(Player.getPoints()+50);
    						ElementiDaRimuovere.add(bersagli.get(i));	
    						myDati.refreshDati();
    					} else if (bersagli.get(i).cerchio4.contains(x,y)){
    						Punti += 40;
    						Player.setPoints(Player.getPoints()+40);
    						Obiettivi += 1;
    						Colpiti += 1;
    						ElementiDaRimuovere.add(bersagli.get(i));	
    						myDati.refreshDati();
    					} else if (bersagli.get(i).cerchio3.contains(x,y)){
    						Punti += 30; 
    						Player.setPoints(Player.getPoints()+30);
    						Obiettivi += 1;
    						Colpiti += 1;
    						ElementiDaRimuovere.add(bersagli.get(i));	
    						myDati.refreshDati();
    					} else if (bersagli.get(i).cerchio2.contains(x,y)){
    						Punti += 20;
    						Player.setPoints(Player.getPoints()+20);
    						Obiettivi +=1 ;
    						Colpiti += 1;
    						ElementiDaRimuovere.add(bersagli.get(i));
    						myDati.refreshDati();
    					} else if (bersagli.get(i).cerchio1.contains(x,y)){
    						Punti += 10;
    						Player.setPoints(Player.getPoints()+10);
    						Obiettivi += 1;
    						Colpiti += 1;
    						ElementiDaRimuovere.add(bersagli.get(i));
    						myDati.refreshDati();
    					}
    					if (ElementiDaRimuovere != null){
    						for(int j=0; j<ElementiDaRimuovere.size(); j++){
    							bersagli.remove(ElementiDaRimuovere.get(j));
    						}
    						ElementiDaRimuovere.clear();	// "pulisco" l'array dalle cose da rimuovere
    					}
    				}
    			}
    			public void mouseReleased(MouseEvent e){ }
    			public void mouseClicked(MouseEvent e){	}
    			public void mouseEntered(MouseEvent e){ }
    			public void mouseDragged(MouseEvent e) { }
    			public void mouseExited(MouseEvent e){ }
    		}
    		
    		class DatiPanel extends JPanel{
    			private JLabel StageLabel, ObiettiviLabel, PuntiLabel;
    		
    			public int getStage() 		{ return Stage; }
    			public int getObiettivi()	{ return Obiettivi; }
    			public int getPunti()		{ return Punti; }
    			public void setStage(int value)		{ Stage = value; }
    			public void setObiettivi(int value)	{ Obiettivi = value; }
    			public void setPunti(int value)		{ Punti = value; }
    			
    			public void refreshDati(){
    				StageLabel.setText("Stage:\t"+Stage);
    				ObiettiviLabel.setText("Obiettivi:\t"+Obiettivi+" /10");
    				PuntiLabel.setText("Punti:\t"+Punti);
    			}
    			
    			public DatiPanel(int Stage, int Obiettivi, int Punti){
    				
    			StageLabel = new JLabel("Stage:\t"+Stage);
    			ObiettiviLabel = new JLabel("Obiettivi:\t"+Obiettivi+" /10");
    			PuntiLabel = new JLabel("Punti:\t"+Punti);
    			
    			add(StageLabel);
    			add(ObiettiviLabel);
    			add(PuntiLabel);
    			}
    		}
    }
    
    class Bersaglio{
    	Ellipse2D.Double cerchio1, cerchio2, cerchio3, cerchio4, cerchio5;
    	double raggio;
    	double G;
    	Point2D centro;
    	Color cBersaglioRosso, cBersaglioBianco;
    	Vector2 direzione;
    	double speed;
    	
    	public Bersaglio(double x, double y){		
    		centro = new Point2D.Double(x, y);
    		cBersaglioRosso = new Color(210, 0 ,5);    //Colore circonferenza rossa
    		cBersaglioBianco = new Color(255,255,255); //Colore circonferenza bianca
    		
    		direzione = new Vector2(0,0);
    		speed = 0;
    		G = 40;
    	
    		raggio = G;
    		cerchio1 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (4*G)/5;
    		cerchio2 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (3*G)/5;
    		cerchio3 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (2*G)/5;
    		cerchio4 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = G/5;
    		cerchio5 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    	}
    	
    	public void disegna(Graphics2D figura){
    				figura.setColor(cBersaglioRosso);
    				figura.fill(cerchio1);
    				figura.setColor(cBersaglioBianco);
    				figura.fill(cerchio2);
    				figura.setColor(cBersaglioRosso);
    				figura.fill(cerchio3);
    				figura.setColor(cBersaglioBianco);
    				figura.fill(cerchio4);
    				figura.setColor(cBersaglioRosso);
    				figura.fill(cerchio5);
    			}
    		public void setSpeed(double s) {speed = s;	}
    		public double getSpeed()       { return speed;  }
    		public void setCentro(Point2D centroNew)     { centro = centroNew;  }
    		public Point2D getCentro()	{ return centro; }
    		public void setDirection(Vector2 v) {direzione = v; }
    		public void setDirection(double dx, double dy) { direzione = new Vector2(dx,dy); direzione.normalize(); }
    		public Vector2 getDirection()	{ return direzione; }
    		
    		public void move(){
    			double raggio = G;
    			centro = new Point2D.Double(centro.getX()+(direzione.getX()*speed), centro.getY()+(direzione.getY()*speed) );
    			cerchio1.setFrame( centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (4*G)/5;
    			cerchio2.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (3*G)/5;
    			cerchio3.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (2*G)/5;
    			cerchio4.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = G/5;
    			cerchio5.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			}
    		public void directTo(Point2D p){
    			direzione = new Vector2( p.getX() - centro.getX(), p.getY() - centro.getY() );
    			direzione.normalize();
    		}	
    }
    
    class Vector2{
    	
    	private double x,y;
    	
    	public Vector2(double a, double b){
    		x = a;
    		y = b;
    	}
    	
    	public double getX() {return x; }
    	public void setX(double a) { x = a; }
    	public double getY() {return y; }
    	public void setY(double b) { y = b; }
    	
    	
    	public double length(){
    		return (Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
    	}
    	
    	public void normalize(){
    		double l = length();
    		x = x/l;
    		y = y/l;
    	}
    }
    
    class Giocatore{
    	
    	private int Stage;
    	private int Obiettivi;
    	private int Points;
    	private String Nome;
    	
    	
    	Giocatore(){
    		this("",1,0,0);
    	}
    	
    	Giocatore(String newNome, int newStage, int newObiettivi, int newPoints){
    		setNome(newNome);
    		setStage(newStage);
    		setObiettivi(newObiettivi);
    		setPoints(newPoints);
    	}
    	
    	public void setNome(String newNome){	Nome = newNome;	    }
    	public void setStage(int newStage){	Stage = newStage;   }
    	public void setObiettivi(int newObiettivi){ Obiettivi = newObiettivi; }
    	public void setPoints(int newPoints) {    Points = newPoints;   }
    	public String getNome()		{ return Nome;   }
    	public int getStage()  		{ return Stage;  }
    	public int getObiettivi()	{ return Obiettivi; }
    	public int getPoints()		{ return Points;  }
    	
    }

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.