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

    [JAVA] Non so come fare.. Help!

    Salve a tutti.. questo è il mio primo post.. Sono alle prime armi con il Java e avrei 1 problema che nn riesco a risolvere.. ora ve lo spiego cercando di essere più chiaro possibile..


    Io devo far muovere un piccolo disegno che creo cn la paint..
    Questo disegno si trova in un panel "center".
    Con le classi MouseMotionEvent e usando la procedura mouseMoved ho creato 2 variabili dove cn GetX e Gety prendo le posizioni attuali..e richiamando una procedura contenuta nella classe dove c'è anche la Paint passo queste coordinate nell'altra classe e nella paint le metto cm cordinate dell'oggetto da fare muovere..
    Risultato l'oggetto nn si muove rimane sempre a 0,0...

    Questo è come la mouse moved che ho fatto nella classe main e attraverso m1.passacordx e m1.passacordy passo in teoria le coordinate nella classe dove ce la Paint

    codice:
    public void mouseMoved(MouseEvent e){
         int x2;
            int y2;
            x2=e.getX();
            y2=e.getY();
            m1.passacordx(x2);
            m1.passacordy(y2);   
            
        }

    Ho anche messo questo che credo che serva nella procedura main..

    codice:
    addMouseMotionListener(this);

    Questo sono le 2 procedure nella classe dove c'è anche il Paint..

    codice:
    public void passacordx(int x2){
           xmir=x2;
           
       }
       public void passacordy(int y2){
           ymir=y2;
       }
    Dopo con queste 2 variabili all'interno della main disegno ma quando lo faccio partire rimane sempre a 0,0 e se muovo il muose nn succede nulla

    Cosa Sbaglio.. serve qualcos altro?? è da poco che uso Java se qualcuno può mi aiuti..


    Grazie.

  2. #2

    Re: [JAVA] Non so come fare.. Help!

    Originariamente inviato da Virtual147
    Salve a tutti.. questo è il mio primo post.. Sono alle prime armi con il Java e avrei 1 problema che nn riesco a risolvere.. ora ve lo spiego cercando di essere più chiaro possibile..


    Io devo far muovere un piccolo disegno che creo cn la paint..
    Questo disegno si trova in un panel "center".
    Con le classi MouseMotionEvent e usando la procedura mouseMoved ho creato 2 variabili dove cn GetX e Gety prendo le posizioni attuali..e richiamando una procedura contenuta nella classe dove c'è anche la Paint passo queste coordinate nell'altra classe e nella paint le metto cm cordinate dell'oggetto da fare muovere..
    Risultato l'oggetto nn si muove rimane sempre a 0,0...

    Questo è come la mouse moved che ho fatto nella classe main e attraverso m1.passacordx e m1.passacordy passo in teoria le coordinate nella classe dove ce la Paint

    codice:
    public void mouseMoved(MouseEvent e){
         int x2;
            int y2;
            x2=e.getX();
            y2=e.getY();
            m1.passacordx(x2);
            m1.passacordy(y2);   
            
        }

    Ho anche messo questo che credo che serva nella procedura main..

    codice:
    addMouseMotionListener(this);

    Questo sono le 2 procedure nella classe dove c'è anche il Paint..

    codice:
    public void passacordx(int x2){
           xmir=x2;
           
       }
       public void passacordy(int y2){
           ymir=y2;
       }
    Dopo con queste 2 variabili all'interno della main disegno ma quando lo faccio partire rimane sempre a 0,0 e se muovo il muose nn succede nulla

    Cosa Sbaglio.. serve qualcos altro?? è da poco che uso Java se qualcuno può mi aiuti..


    Grazie.
    Posta il codice,meglio se tutto così si possono fare prove direttamente.A meno che non sia chilometrico...
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Ecco tutto il Programma...


    Questo è il main...

    codice:
    package javaapplication4;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.awt.event.MouseMotionAdapter;
    import java.util.LinkedList;
    import javax.swing.*;
    import java.awt.Event.*;
    
    
    public class Main extends Frame implements ActionListener, KeyListener, MouseListener, MouseMotionListener {
        public static int pos=50;
        public int tim=0;
        public int q=0;
        public int w=0;
        public int prec=0;
        
        Astro m1=new Astro(pos);
        
        
        
        public Main() {
         
            Panel comandi=new Panel();
           pos=50;
           
            setBackground(Color.BLUE);
            setLayout(new BorderLayout());
            setSize(500, 500);
            setLocation(500,500);
            add(m1,"Center");     
            ChiudiFinestra Cf = new ChiudiFinestra();
            Timer tempo = new Timer(3000,this);
            tempo.start();
            addWindowListener(Cf);
            addKeyListener(this);
            addMouseMotionListener(this);
            addMouseListener(this);
            setVisible(true);
           
        }
           
        public static void main(String[] args) {
            new Main();
            
        }
        public void keyPressed(KeyEvent e){
            int keycod=e.getKeyCode();
            if (keycod==KeyEvent.VK_UP){
                m1.spostasu();
                m1.ridisegna();
                }
            if (keycod==KeyEvent.VK_DOWN){
                m1.spostagiu();
                m1.ridisegna();
            }
            if (keycod==KeyEvent.VK_LEFT){          //Tastiera
                m1.spostasinistra();
                m1.ridisegna();
            }
            if (keycod==KeyEvent.VK_RIGHT){
                m1.spostadestra();
                m1.ridisegna();
            }
            if (keycod==KeyEvent.VK_SPACE){
               m1.spara();
               m1.ridisegna();
            }
        }
        public void keyReleased(KeyEvent e){}
        public void keyTyped(KeyEvent e){}
        
        public void mouseClicked(MouseEvent e){}
        public void mouseEntered(MouseEvent e){}
        public void mouseExited(MouseEvent e){}
        public void mousePressed(MouseEvent e){}
        public void mouseReleased(MouseEvent e){}
        
        
        public void mouseMoved(MouseEvent e){
         int x2;
            int y2;
            x2=e.getX();                      // Comandi x il mouse
            y2=e.getY();
            m1.passacordx(x2);
            m1.passacordy(y2);   
            
        }
        public void mouseDragged(MouseEvent e){}
        
        
        public void actionPerformed(ActionEvent e)
        {
            
                q=(int)((Math.random()*7)+1);
                if(q!=prec){
                   
                m1.compari(q); 
                }
                else{
                    q=(int)((Math.random()*7)+1);
                    
                    m1.compari(q);
                }
                prec=q;
                
                    m1.ridisegna();
            
           
        }
        
    }

    E questa è l'altra classe...

    codice:
    package javaapplication4;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.Event.*;
    
    
    public class Astro extends Canvas{
        Astro mv;
        int x;
        int y;
        int bers;
        int x1=30;
        int y1=30;
        int zoomstella=5;
        int vai=0;
        int colpito=0;
        int cartuccie=1;
        int volte=0;
        int xorso;
        int yorso;
        int xmir;
        int ymir;
        Image bv;
        Graphics of;
       
        
        public Astro(int p){
        x=p;
        y=p;
        x1=p-20;
        y1=p-20;
        }
        
        
            
            
       public void compari(int q){
           bers=q;
           if(bers==1){
               xorso=80;
               yorso=250;
               
           }
           if(bers==2){
               xorso=180;
               yorso=260;
               
           }
           if(bers==3){
               xorso=300;
               yorso=230;
               
           }
           if(bers==4){
               xorso=230;
               yorso=400;
               
           }
           if(bers==5){
               xorso=350;
               yorso=360;
               
           }
           if(bers==6){
               xorso=280;
               yorso=320;
               
           }
           if(bers==7){
               xorso=50;
               yorso=400;
               
           }
        
           cartuccie=1;
           colpito=0;
           
       }
       
       public void spara(){
           if(cartuccie==1){
           if((x+10 >= xorso)&(x+10 <= xorso+50)){
               if((y+10 >= yorso)&(y+10 <= yorso+45)){
                   colpito=1;
                   cartuccie=0;
                   volte=volte+1;
               }
           }
           }
               
       }
       
       public void passacordx(int x2){
           xmir=x2;
           
       }                                       // Procedure che prendono coordinate dal main del MuoseMoved
       public void passacordy(int y2){
           ymir=y2;
       }
            
        
        public void spostadestra(){
            x=x+10;
            
        }
        public void spostasinistra(){
            x=x-10;
        }
        public void spostagiu(){
            y=y+10;
        }
        public void spostasu(){
            y=y-10;
        }
        public void ridisegna(){
            repaint();
        }
        public void paint(Graphics g)
        {
           
            int grandezza=20;
            Graphics2D g2=(Graphics2D) g;
            Dimension dim_buffer = getSize();
            //bv= createImage(dim_buffer.width, dim_buffer.height);
            bv= createImage(500,500);
            of=bv.getGraphics();
            Graphics2D off=(Graphics2D) of;
            off.setStroke(new BasicStroke(2));
            Font fo=new Font("Arial", Font.BOLD,15);
            off.setPaint(new GradientPaint(0,0,Color.BLACK,500,500,Color.MAGENTA));
            //ImageIcon ico=new ImageIcon ("spazio1.jpg");
            //Image astronave = ico.getImage();
            //off.drawImage(astronave,0,0,500,500,this);
            //Button b1=new Button("Chiudi");
            off.setFont(fo);
            off.drawString("Hai colpito pippo "+ volte+" volte!!!",5,450);
            
            if(colpito==0){
            off.setColor(Color.RED);
            }
            else{
                off.setColor(Color.GREEN);
                
            }
            off.fillRect(xorso, yorso, 50, 45);
            
            
            off.setColor(Color.YELLOW);
            off.fillRect(0, 100, 500, 10);
            //off.drawOval(x, y, 20,20);
            off.drawLine(xmir, ymir-10, xmir, ymir+10);    // Mirino da fare muovere con il muose
            off.drawLine(xmir-10, ymir, xmir+10, ymir);
            
            
            g2.drawImage(bv,0,0,this);
            off.dispose();
        }
        
        /** Creates a new instance of Astro */
        public Astro() {
        }
        
        public void update(Graphics g){
            paint(g);
            
            
        }
        
    }

    Questo è tutto il programma... spero che qualcuno mi possa dare una mano..


    Grazie

  4. #4
    Vi Prego aiutatemi!!

    Mi basta anche 1 piccolo aiuto!!

  5. #5
    Originariamente inviato da Virtual147
    Vi Prego aiutatemi!!

    Mi basta anche 1 piccolo aiuto!!
    La classe ChiudiFinestra dov'è? Non riesco a compilare perchè manca quella.
    PS. Tieni presente che tutti abbiamo altr cose da fare e il forum è solo un hobby, quindi un po di pazienza...
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prova a guardare questa discussione, alla quale ho risposto tempo fa postando proprio una classe che fa al caso tuo...

    http://forum.html.it/forum/showthrea...hreadid=930015


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Si scusa hai perfettamente ragione pretendo un po' troppo è che è da 1 po' che mi scervello x farla andare e ho guardato anche in giro x trovare 1 soluzione e prorio nn ce la faccio l'immagine rimane ferma alle coordinate 0,0...

    Ora aggiungo di seguito anche la classe chiudifinestra...

    codice:
    package javaapplication4;
    import java.awt.event.*;
    
    
    /**
     *
     * @author 15345
     */
    public class ChiudiFinestra implements WindowListener{
        public void windowActivated(WindowEvent e){}
        public void windowDeactivated(WindowEvent e){}
        public void windowClosing(WindowEvent e)
        { System.exit(0);}
        public void windowClosed(WindowEvent e){}
        public void windowIconified (WindowEvent e){}
        public void windowDeiconified(WindowEvent e){}
        public void windowOpened(WindowEvent e){}
        
    }
    Grazie unomichisiada della pasienza

  8. #8
    Controlla anche il suggerimento di LeleFT, non ti aiuta quello?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  9. #9
    Ho provato la tua classe è devo dire che non ci ho capito nulla, nel senso che non ho capito comesi dovrebebro comportare i vari oggetti? Il quadratino si deve muovere per trascinamento, cioè lo prendi e lo trascini e poi rilasci il mouse e quello si sposta li o cosa? E poi quando ci clki sopra cosa deve succedere? Vedo un metodo spara :master: .insomma speiga bene il comportamento che vuoi ottenere
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  10. #10
    Si in effetti se commentavo 1 po' era meglio.. in pratica il quadrato si muove da solo x effetto di un random.. quello che dovrebbe muoversi cn il muose sono due linee messe a forma di + che dovrebbero seguire la posizione del mouse.. diventare una sorta di puntatore.. Ora comunque sotto ho semplificato tutto x rendere spero più chiaro il problema..

    Grazie della tua disponibilità..

    Ps. Veramente in quella discussione che ha inviato LEFT non ho capito nulla.. sono alle prime armi con il java sto ancora imparando..








    Questo è il main:
    codice:
    package javaapplication4;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.LinkedList;
    import javax.swing.*;
    import java.awt.Event.*;
    
    
    public class Main extends Frame implements ActionListener, KeyListener,
    MouseListener, MouseMotionListener {
    public static int pos=50;
    Astro m1=new Astro(pos);
    
    
    
    public Main() {
    
    Panel comandi=new Panel();
    pos=50;
    setBackground(Color.BLUE);
    setLayout(new BorderLayout());
    setSize(500, 500);
    setLocation(500,500);
    add(m1,"Center"); 
    addMouseMotionListener(this);
    addMouseListener(this);
    setVisible(true);
    
    }
    
    public static void main(String[] args) {
    new Main();
    
    }
    
    
    
    public void mouseClicked(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e){}
    
    
    public void mouseMoved(MouseEvent e){
    int x2;
    int y2;
    x2=e.getX();
    y2=e.getY();
    m1.passacordx(x2);
    m1.passacordy(y2); 
    
    }
    public void mouseDragged(MouseEvent e){}
    
    
    }

    E questa la classe dove c'è la Paint con il disegno...

    codice:
    package javaapplication4;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.Event.*;
    
    
    public class Astro extends Canvas{
    Astro mv;
    int x;
    int y;
    
    
    int xmir;
    int ymir;
    Image bv;
    Graphics of;
    
    
    public Astro(int p){
    x=p;
    y=p;
    }
    
    
    
    
    
    
    public void passacordx(int x2){
    xmir=x2;
    }
    
    public void passacordy(int y2){
    ymir=y2;
    }
    
    
    public void ridisegna(){
    repaint();
    }
    public void paint(Graphics g)
    {
    
    Graphics2D g2=(Graphics2D) g;
    Dimension dim_buffer = getSize();
    bv= createImage(500,500);
    of=bv.getGraphics();
    Graphics2D off=(Graphics2D) of;
    off.setStroke(new BasicStroke(2));
    Font fo=new Font("Arial", Font.BOLD,15);
    
    
    
    off.setColor(Color.YELLOW);
    off.drawLine(xmir, ymir-10, xmir, ymir+10); 
    off.drawLine(xmir-10, ymir, xmir+10, ymir);
    
    
    g2.drawImage(bv,0,0,this);
    off.dispose();
    }
    
    public Astro() {
    }
    
    public void update(Graphics g){
    paint(g);
    
    
    }
    
    }

    Grazie!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.