Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Graphics;
- import java.awt.*;
- public abstract class Shape
- {
- protected int x,y;
- protected int tam = 20;
- protected int dir;
- public void moverDerecha()
- {
- x+=1;
- if (x==340)
- {
- x-=1;
- }
- }
- public void moverIzquierda()
- {
- x-=1;
- if (x<0)
- {
- x+=1;
- }
- }
- public void moverArriba()
- {
- y-=1;
- if (y<0)
- {
- y+=1;
- }
- }
- public void moverAbajo()
- {
- y+=1;
- if (y==340)
- {
- y-=1;
- }
- }
- public abstract void show (Graphics papel); //clase abstracta, solo muestra la cabeza
- }
- public class Square extends Shape
- {
- public void show (Graphics papel)
- {
- papel.drawRect(x,y,tam,tam);
- }
- }
- public class Circle extends Shape
- {
- public void show (Graphics papel)
- {
- papel.drawOval(x,y,tam,tam);
- }
- }
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JButton;
- import java.awt.event.ActionListener;
- import java.awt.event.ActionEvent;
- import java.awt.Container;
- import java.awt.FlowLayout;
- import java.awt.Dimension;
- import java.awt.Color;
- import java.awt.Graphics;
- public class UseShap extends JFrame implements ActionListener //JFrame es para hacer ventanas graficas
- //ActionListener es una interfa (clase de encabezados de metodos)
- /**
- * La clase UseShap tuvo requirio la interfaz grafica y uamos clases abtractas para poder hacer fuincionar el codigo.
- * usamos las librerias de awt y del swing en donde utilizamos para darle las dimensiones a la ventana y al panel,
- * y a la vez activar las acciones en el codigo.
- */
- {
- // private JButton botonCirculo,botonCuadrado;
- private JPanel panel;
- private Circle myCircle; //La clase que heredo de esfera
- private Square mySquare;
- private javax.swing.Timer tempo;
- public static void main (String vaca[])
- {
- UseShap ventana = new UseShap();
- ventana.setSize(400,460);//tamaño de la ventana
- ventana.crearGUI();//Se puede cambiar de nombre
- ventana.setVisible(true); //Para que pueda verse la ventana donde se trabaja
- }
- private void crearGUI()
- {
- setDefaultCloseOperation(EXIT_ON_CLOSE); //se cierra cuando le das la x de salir(Se puede cambiar,pero en mayuscula para por la nomenclatura camello)
- Container contenedor = getContentPane();
- contenedor.setLayout(new FlowLayout()); //Distribucion en flujo (es para centrar objetos)
- panel = new JPanel(); // el panel en donde se va a trabajar
- panel.setPreferredSize(new Dimension (360,360)); //tamaño del panel
- panel.setBackground(Color.black); //color del panel
- contenedor.add(panel); //se mueve al contenedor
- /**
- botonCirculo = new JButton ("Circle"); //igual que la izquierda
- contenedor.add(botonCirculo);
- botonCirculo.addActionListener(this);
- botonCuadrado = new JButton ("Square"); //igual que la izquierda
- contenedor.add(botonCuadrado);
- botonCuadrado.addActionListener(this);
- */
- myCircle = new Circle (); //creamos un objeto de tipo burbuja
- mySquare = new Square ();
- myCircle.x = (int)(Math.random()*341);
- myCircle.y = (int)(Math.random()*341);
- myCircle.dir = (int)(Math.random()*8);
- mySquare.x = (int)(Math.random()*341);
- mySquare.y = (int)(Math.random()*341);
- mySquare.dir = (int)(Math.random()*8);
- tempo = new javax.swing.Timer (10, this);
- tempo.start ();
- }
- public void actionPerformed(ActionEvent event) //acciones que suceden en la ventana(es de ActionListener)
- {
- Graphics papel = panel.getGraphics(); //agarrar la parte grafica para dibujar(Nombre papel)
- papel.setColor(Color.black); //para tapar el panel antiguo
- papel.fillRect(0,0,360,360); //el tamaño
- papel.setColor(Color.white); //color del circulo
- if(myCircle.x==339 || myCircle.x==0 || myCircle.y==339 || myCircle.y==0)
- {
- if(myCircle.dir < 3)
- {
- myCircle.dir = (myCircle.dir+5);
- }
- else if(myCircle.dir > 2)
- {
- myCircle.dir = (myCircle.dir-3);
- }
- }
- if(mySquare.x==339 || mySquare.x==0 || mySquare.y==339 || mySquare.y==0)
- {
- if(mySquare.dir < 5)
- {
- mySquare.dir = (mySquare.dir+3);
- }
- else if(mySquare.dir > 4)
- {
- mySquare.dir = (mySquare.dir-5);
- }
- }
- if (myCircle.dir==0)
- {
- myCircle.moverArriba();
- myCircle.show(papel);
- }
- else if (myCircle.dir==1)
- {
- myCircle.moverArriba();
- myCircle.moverDerecha();
- myCircle.show(papel);
- }
- else if (myCircle.dir==2)
- {
- myCircle.moverDerecha();
- myCircle.show(papel);
- }
- else if (myCircle.dir==3)
- {
- myCircle.moverAbajo();
- myCircle.moverDerecha();
- myCircle.show(papel);
- }
- else if (myCircle.dir==4)
- {
- myCircle.moverAbajo();
- myCircle.show(papel);
- }
- else if (myCircle.dir==5)
- {
- myCircle.moverAbajo();
- myCircle.moverIzquierda();
- myCircle.show(papel);
- }
- else if (myCircle.dir==6)
- {
- myCircle.moverIzquierda();
- myCircle.show(papel);
- }
- else if (myCircle.dir==7)
- {
- myCircle.moverIzquierda();
- myCircle.moverArriba();
- myCircle.show(papel);
- }
- if (mySquare.dir==0)
- {
- mySquare.moverArriba();
- mySquare.show(papel);
- }
- else if (mySquare.dir==1)
- {
- mySquare.moverArriba();
- mySquare.moverDerecha();
- mySquare.show(papel);
- }
- else if (mySquare.dir==2)
- {
- mySquare.moverDerecha();
- mySquare.show(papel);
- }
- else if (mySquare.dir==3)
- {
- mySquare.moverAbajo();
- mySquare.moverDerecha();
- mySquare.show(papel);
- }
- else if (mySquare.dir==4)
- {
- mySquare.moverAbajo();
- mySquare.show(papel);
- }
- else if (mySquare.dir==5)
- {
- mySquare.moverAbajo();
- mySquare.moverIzquierda();
- mySquare.show(papel);
- }
- else if (mySquare.dir==6)
- {
- mySquare.moverIzquierda();
- mySquare.show(papel);
- }
- else if (mySquare.dir==7)
- {
- mySquare.moverIzquierda();
- mySquare.moverArriba();
- mySquare.show(papel);
- }
- }
- }
Add Comment
Please, Sign In to add comment