Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Mi querido y estimado yo del futuro, te escribo estos comentarios para que recuerdes a posteriori como fue que desarrollaste
- //este ingenioso invento tuyo, programa que permiteme recordarte iniciaste un diciembre del 2011 y q t causo algunos dolores de cabeza
- //y unos muchos desvelos
- //ATT: Miguel Alberto Sediles Di Quinzio (Nefisco Ark Vampyr)
- import java.awt.*;
- import java.awt.event.*;//import para eventos, ActionListener recuerdas?
- import java.util.Random;
- import javax.swing.*;
- public class PruebaMouse12 extends JFrame implements ActionListener, MouseMotionListener{
- //permiteme recordarte q alejo dijo q no se podian 2 implement en un solo class -.-'' obviamente si se puede
- private JButton b1=new JButton();
- private JButton b2=new JButton();
- private JLabel l1=new JLabel();
- private JLabel l2=new JLabel();
- private JPanel p=new JPanel();
- private Integer ll =0;
- private Integer jj =0;
- public PruebaMouse12(){//constructor
- this.setSize(500,500);
- p.addMouseMotionListener(this);
- p.setLayout(null);
- p.setBackground(Color.CYAN);
- p.setSize(500,500);
- l1.setText("El Cielo es Verde?");
- l1.setBounds(225, 20, 150, 50);
- l2.setText("(Elija una opcion)");
- l2.setBounds(225, 60, 150, 50);
- b1.setText("Si");
- b1.setBounds(100,200,50,50);
- b1.addActionListener(this);
- b2.setText("No");
- b2.setBounds(300,200,50,50);
- b2.addActionListener(this);
- p.add(b1);
- p.add(b2);
- p.add(l1);
- p.add(l2);
- p.setVisible(true);
- this.addMouseMotionListener(this);
- addMouseMotionListener(this);
- this.add(p);
- this.setResizable(false);//no ajustable tamaño
- this.setLocationRelativeTo(null);//ventana centrada
- this.setLayout(null);
- this.setVisible(true);
- this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
- }
- public void actionPerformed(ActionEvent e) {//metodo abstracto para crear las acciones
- if(e.getSource()==b1){
- JOptionPane.showMessageDialog(null, "Error la respuesta correcta es NO \n por favor presione el otro boton");}
- if(e.getSource()==b2){
- JOptionPane.showMessageDialog(null, "¿Por Que Tardaste Tanto Responder? XD \n By Nefisco");}
- }
- public void mouseMoved(MouseEvent e) {//metodo que usamos para crear el fuerte del programa, los movimientos y validaciones
- //mete presion
- jj++;
- if(jj==15){javax.swing.JOptionPane.showMessageDialog(null, "Empieza el juego");}
- ll++;
- if(ll==200){
- Random r=new Random();
- Robot movedor;
- try {
- movedor = new Robot();
- //adicion de Roberto Von Schoettler, posiciones aleatorias para la ubicacion despues del mensaje
- int n= r.nextInt(3);
- if(n==0){javax.swing.JOptionPane.showMessageDialog(null, "Me estoy aburriendo...");
- movedor.mouseMove((this.getX()+r.nextInt(500)),(this.getY()+r.nextInt(500)));}
- if(n==1){javax.swing.JOptionPane.showMessageDialog(null, "solo debes apretar un boton no es tan complicado");
- movedor.mouseMove((this.getX()+r.nextInt(500)),(this.getY()+r.nextInt(500)));}
- if(n==2){javax.swing.JOptionPane.showMessageDialog(null, "quiero ir al baño... puedes apurarte? ");
- movedor.mouseMove((this.getX()+r.nextInt(500)),(this.getY()+r.nextInt(500)));}
- //y asi controlas que no quede serca del boton y lo pueda tocar XD
- //movedor es un objeto robot, toddavia no se bien lo q es una clase robot, pero puede mover el mouse...
- //es lo qeue necesito por ahora ams adelante tienes que profundizar en esto si aun no lo has hecho
- //(eres responsable seguro que si lo hiciste XD)
- ll=0; } catch (AWTException ex) {} }
- if(jj==1200){
- javax.swing.JOptionPane.showMessageDialog(null, "tengo que cerrarme, nos vemos en otro momento \n (-: By Nefisco :-)");
- System.exit(1);
- }
- //LIMITES
- //limites bordes verticales
- if((b2.getX()+50==500)||(b2.getX()==0))
- {b2.setLocation(b1.getX()+220, b1.getY());}
- //limites bordes horinzontales
- if((b2.getY()+50==500)||(b2.getY()==0))
- {b2.setLocation(300, 200);}
- //colision contra b1 FUME LOCO TOTAL Y MASIVO XD validas que choque en x mediante un for como hicimos con los movimientos
- //luego pones otro for paa validar la posicion de os ejes para verificar el caso, q si lo toco (los botones no pienses mal)
- //un poco mas arriba o mas abajo, mas a la derecha o ams a la izquierda
- for(int j=0;j<50;j++) {
- if((b1.getX()+j==b2.getX())||((b1.getX()==b2.getX()+j))){
- for(int k=0;k<50; k++){
- if((b1.getY()+k==b2.getY())||((b1.getY()-k==b2.getY()))){
- b2.setLocation(300,200);
- }
- }
- }
- }//te parecera comico recordar que despues de validar 2 movimientos (choque izquierdo y derecho) vi que con eso
- // se valido todo jajajaja
- //MOVIMIENTOS
- //cuando trates con el puntero se toma normal, cuando trates con el boton se aumenta o disminuya solamente (aumentar x es ir a la izkierda)
- for(int i=0;i<=50;i++)
- {//lado izquierdo
- if((e.getY()==b2.getY()+i)&&(e.getX()+30>=b2.getX())&&(e.getX()<=b2.getX())){
- //le sumo i para validar cualquier punto del boton, recuerda que es de 50x50, osea q son 50 puntos por cada lado
- //se le suma el 10 al eje de las X para verificar si esta proximo al boton, se compara con el eje x del boton
- // se debe controlar que no afecte al otro
- b2.setLocation(b2.getX()+10,b2.getY());
- break;
- }
- //lado derecho
- if((e.getY()==b2.getY()+i)&&((e.getX()-80)<=b2.getX())&&(e.getX()>=b2.getX())){
- b2.setLocation(b2.getX()-10,b2.getY());
- break;
- }
- //lado superior
- if((e.getX()==b2.getX()+i)&&((e.getY()+30)>=b2.getY())&&(e.getY()<=b2.getY())){
- b2.setLocation(b2.getX(),b2.getY()+10);
- break;
- }
- //lado inferior
- if((e.getX()==b2.getX()+i)&&((e.getY()-80)<=b2.getY())&&(e.getY()>=b2.getY())){
- b2.setLocation(b2.getX(),b2.getY()-10);
- break;
- }
- }
- //como veras esto te costo mucho pero pudiste... y a conciencia no trabajabas al 100%
- ////diagonal arriba izquierda-->abajo derecha
- if((e.getX()<=b2.getX())&&(e.getY()<=b2.getY())&&(b2.getY()-e.getY()<=30)&&(b2.getX()-e.getX()<=30))
- {//OptionPane.showMessageDialog(null,"X e="+e.getX()+"b2="+b2.getX()+"\n Y e="+e.getY()+"b2="+b2.getY());
- b2.setLocation(b2.getX()+10,b2.getY()+10);}
- //tras agonicos esfuerzos y muchos intentos lo lograste, yu lo lograste,
- //entendiste que debias validar la distancia de los objetos, restandolos, tanto X como Y
- //primero el boton q es mayor siempre para este caso y luego el puntero, para los otros variara T_T
- //diagonal arriba derecha--> sbsjo izquierda
- if((e.getX()<=b2.getX()+50)&&(e.getY()<=b2.getY())&&(b2.getY()-e.getY()<=30)&&(e.getX()-b2.getX()>=30))
- {b2.setLocation(b2.getX()-10,b2.getY()+10);}
- //"logica": a las X le sumas 50 para obtener el lado derecho del boton... si lo sumas a las Y obtienes el lado inferior
- // //diagonal abajo izquierda--> arriba derecha
- if((e.getX()<=b2.getX())&&(e.getY()<=b2.getY()+50)&&((b2.getY()+70)-e.getY()<=30)&&(b2.getX()-e.getX()<=30))
- {b2.setLocation(b2.getX()+10,b2.getY()-10);}
- // //diagonal abajo derecha-->arriba izquierda
- if((e.getX()>=b2.getX()+50)&&(e.getY()<=b2.getY()+50)&&((b2.getY()+70)-e.getY()<=30)&&(e.getX()-(b2.getX()+50)<=30))
- {b2.setLocation(b2.getX()-10,b2.getY()-10);}
- }
- public void mouseDragged(MouseEvent e) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
- public static void main (String[] args){
- PruebaMouse12 ds = new PruebaMouse12();
- }
- }
Add Comment
Please, Sign In to add comment