Programa Gotas de Lluvia
Frame
package FigurasGraficas13;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.Timer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class GotasDeLluvia extends javax.swing.JFrame implements ActionListener{
private Random aleatorio;
private javax.swing.Timer temporizador;
private Timer timer;
public GotasDeLluvia() {
initComponents();
aleatorio=new Random();
timer = new Timer(1000,this);
timer.start();
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GotasDeLluvia().setVisible(true);
}
});
}
private javax.swing.JTextField campoIntervalo;
private javax.swing.JSlider deslizable;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel pane;
@Override
public void actionPerformed(ActionEvent ae) {
int x,y,tamaño;
Graphics papel=pane.getGraphics();
papel.setColor(Color.blue);
x=aleatorio.nextInt(200);
y=aleatorio.nextInt(200);
tamaño=aleatorio.nextInt(20);
papel.fillOval(x, y, tamaño, tamaño);
}
public void stateChanged(ActionEvent e) {
int timeGab=deslizable.getValue();
campoIntervalo.setText(Integer.toString(timeGab));
temporizador.setDelay(timeGab);
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Imagen Demo
Frame
package FigurasGraficas14;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class ImagenDemo extends JFrame implements ActionListener {
private int posicionX=0, posicionY=0;
public ImagenDemo() {
initComponents();
}
@SuppressWarnings("unchecked")
private void botonActionPerformed(java.awt.event.ActionEvent evt) {
ImageIcon miImagen=new ImageIcon(campoArchivo.getText());
Graphics papel=pane.getGraphics();
miImagen.paintIcon(this,papel,posicionX,posicionY);
posicionX=posicionX+30;
posicionY=posicionY+30;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ImagenDemo().setVisible(true);
}
});
}
private javax.swing.JPanel PANEL;
private javax.swing.JButton boton;
private javax.swing.JTextField campoArchivo;
private javax.swing.JLabel nombre_A;
private javax.swing.JPanel pane;
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Circulo Mayor
Fram
package FigurasGraficas15;
import javax.swing.JFrame;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Mayor extends JFrame implements ChangeListener {
public Mayor() {
initComponents();
deslizanteRojo.addChangeListener(this);
deslizanteAzul.addChangeListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
Mayor demo = new Mayor();
demo.setSize(300,300);
demo.setVisible(true);;
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Mayor().setVisible(true);
}
});
}
private javax.swing.JTextField campoTexto;
private javax.swing.JSlider deslizanteAzul;
private javax.swing.JSlider deslizanteRojo;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void stateChanged(ChangeEvent e) {
Graphics papel = panel.getGraphics();
int valorRojo, valorAzul;
valorRojo = deslizanteRojo.getValue();
valorAzul = deslizanteAzul.getValue();
papel.setColor(Color.white);
papel.fillRect(0, 0, 200, 150);
papel.setColor(Color.red);
papel.fillOval(10,10,valorRojo,valorRojo);
papel.setColor(Color.blue);
papel.fillOval(100, 10, valorAzul, valorAzul);
if(valorRojo > valorAzul){
campoTexto.setText("El rojo es mayor");
}
else {
campoTexto.setText("El azul es mayor");
}
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Termometro
Frame
package FigurasGraficas16;
import javax.swing.JFrame;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Max extends JFrame implements ChangeListener,ActionListener {
private int max =0;
public Max() {
initComponents();
deslizante.addChangeListener(this);
botón.addActionListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
Max demo = new Max();
demo.setSize(200,300);
demo.setVisible(true);;
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Max().setVisible(true);
}
});
}
private javax.swing.JButton botón;
private javax.swing.JTextField campoTexto;
private javax.swing.JSlider deslizante;
private javax.swing.JPanel jPanel1;
@Override
public void stateChanged(ChangeEvent e) {
int temp;
temp=deslizante.getValue();
if(temp>max){
max=temp;
}
mostrar();
}
@Override
public void actionPerformed(ActionEvent ae) {
campoTexto.setText("");
max=0;
}
private void mostrar(){
campoTexto.setText("El valor máximo es"+max );
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Carita Feliz/Triste
Frame
package FigurasGraficas17;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FelizOTriste extends JFrame implements ActionListener {
private ImageIcon imagenFeliz, imagenTriste;
public FelizOTriste() {
initComponents();
botónFeliz.addActionListener(this);
botónTriste.addActionListener(this);
imagenFeliz=new ImageIcon("feliz.png");
imagenTriste=new ImageIcon("triste.png");
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
FelizOTriste demo=new FelizOTriste();
demo.setSize(350,350);
demo.setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FelizOTriste().setVisible(true);
}
});
}
private javax.swing.JButton botónFeliz;
private javax.swing.JButton botónTriste;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void actionPerformed(ActionEvent event) {
Graphics papel=panel.getGraphics();
Object origen=event.getSource();
if (origen==botónFeliz){
imagenFeliz.paintIcon(this,papel,0,0);
}
else{
imagenTriste.paintIcon(this,papel,0,0);
}
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Cajas
Frame
package FigurasGraficas18;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Cajas extends JFrame implements ChangeListener {
public Cajas() {
initComponents();
deslizante.addChangeListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
Cajas demo=new Cajas();
demo.setSize(250,150);
demo.setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Cajas().setVisible(true);
}
});
}
private javax.swing.JSlider deslizante;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void stateChanged(ChangeEvent e) {
Graphics papel=panel.getGraphics();
int X, NúmeroDeCajas,Contador;
NúmeroDeCajas=deslizante.getValue();
papel.setColor(Color.WHITE);
papel.fillRect(0,0,180,50);
X=10;
Contador=1;
papel.setColor(Color.black);
while(Contador<=NúmeroDeCajas){
papel.drawRect(X, 10, 10, 10);
X=X+15;
Contador++;
}
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Estrellas
Frame
package FigurasGraficas19;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
public class Estrellas extends JFrame implements ActionListener {
private Random aleatorio;
public Estrellas() {
initComponents();
aleatorio=new Random();
botónDibujar.addActionListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Estrellas().setVisible(true);
}
});
}
private javax.swing.JButton botónDibujar;
private javax.swing.JPanel panel;
@Override
public void actionPerformed(ActionEvent event) {
Graphics papel=panel.getGraphics();
papel.setColor(Color.black);
papel.fillRect(0, 0, 200, 200);
papel.setColor(Color.white);
for(int contador=0;contador<20;contador++){
int x,y,radio;
x=aleatorio.nextInt(200);
y=aleatorio.nextInt(200);
radio=5;
papel.fillOval(x, y, radio, radio);
}
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Caminata Aleatoria
Frame
package FigurasGraficas20;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
public class CaminataAleatoria extends JFrame implements ActionListener {
private Random aleatorio;
public CaminataAleatoria() {
initComponents();
aleatorio=new Random();
botónDibujar.addActionListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new CaminataAleatoria().setVisible(true);
}
});
}
private javax.swing.JButton botónDibujar;
private javax.swing.JTextField campoTexto;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void actionPerformed(ActionEvent event) {
Graphics papel=panel.getGraphics();
int X,Y,pasosX,pasosY,nuevaX,nuevaY,pasos;
papel.setColor(Color.white);
int anchuraPapel;
int alturaPapel;
papel.fillRect(0,0,216,184);
X=216/2;
Y=184/2;
for(pasos=0;
X<216&&X>0
&&
Y<184&&Y>0;
pasos++){
pasosX=aleatorio.nextInt(100)-50;
pasosY=aleatorio.nextInt(100)-50;
nuevaX=X+pasosX;
nuevaY=Y+pasosY;
papel.setColor(Color.black);
papel.drawLine(X,Y,nuevaX,nuevaY);
X=nuevaX;
Y=nuevaY;
}
campoTexto.setText("Le tomó "+pasos+" pasos");
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Apartamentos
Frame
package FigurasGraficas21;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class BloqueDeApartamentos extends JFrame implements ChangeListener{
public BloqueDeApartamentos() {
initComponents();
deslizante1.addChangeListener(this);
deslizante2.addChangeListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
BloqueDeApartamentos demo=new BloqueDeApartamentos();
demo.setSize(500,350);
demo.setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BloqueDeApartamentos().setVisible(true);
}
});
}
private javax.swing.JSlider deslizante1;
private javax.swing.JSlider deslizante2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void stateChanged(ChangeEvent e) {
Graphics papel=panel.getGraphics();
int pisos,apartamentos;
int X,Y;
Y=10;
papel.setColor(Color.green);
papel.fillRect(0,0,200,200);
apartamentos=deslizante1.getValue();
pisos=deslizante2.getValue();
for(int piso=0;piso<=pisos;piso++){
X=10;
for (int contador=0;contador<=apartamentos;contador++){
papel.setColor(Color.BLACK);
papel.drawRect(X,Y,10,5);
X=X+15;
}
Y=Y+15;
}
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Escalera
Frame
package FigurasGraficas22;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public class Escalera extends JFrame implements ActionListener {
public Escalera() {
initComponents();
botónDibujar.addActionListener(this);
}
@SuppressWarnings("unchecked")
private void botónDibujarActionPerformed(java.awt.event.ActionEvent evt) {
Graphics papel=pane.getGraphics();
papel.drawRect(20,20,20,20);
papel.drawRect(20,50,20,20);
papel.drawRect(20,80,20,20);
papel.drawRect(20,110,20,20);
papel.drawRect(20,140,20,20);
papel.drawRect(50,50,20,20);
papel.drawRect(50,80,20,20);
papel.drawRect(50,110,20,20);
papel.drawRect(50,140,20,20);
papel.drawRect(80,80,20,20);
papel.drawRect(80,110,20,20);
papel.drawRect(80,140,20,20);
papel.drawRect(110,110,20,20);
papel.drawRect(110,140,20,20);
papel.drawRect(140,140,20,20);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Escalera().setVisible(true);
}
});
}
private javax.swing.JButton botónDibujar;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel pane;
@Override
public void actionPerformed(ActionEvent event) {
Graphics papel=pane.getGraphics();
Object origen=event.getSource();
if (origen==botónDibujar){
}
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Globo
Clase
package FigurasGraficas23;
import java.awt.Color;
import java.awt.Graphics;
class Globo {
private int X=50;
private int Y=50;
private int diámetro=20;
public void moverDerecha(int pasosX ){
X=X+pasosX;
}
public void cambiarTamaño(int cambio ){
diámetro=diámetro+cambio;
}
public void mostrar (Graphics papel){
papel.setColor(Color.black);
papel.drawOval(X,Y,diámetro,diámetro);
}
}
Frame
package FigurasGraficas23;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class UsarGlobo extends JFrame implements ActionListener {
private Globo globo;
public UsarGlobo() {
initComponents();
botónMover.addActionListener(this);
botónCrecer.addActionListener(this);
globo=new Globo();
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
UsarGlobo demo=new UsarGlobo();
demo.setSize(200,200);
demo.setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new UsarGlobo().setVisible(true);
}
});
}
private javax.swing.JButton botónCrecer;
private javax.swing.JButton botónMover;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void actionPerformed(ActionEvent event) {
Graphics papel=panel.getGraphics();
if(event.getSource()==botónMover){
globo.moverDerecha(20);
}
else{
globo.cambiarTamaño(20);
}
papel.setColor(Color.white);
papel.fillRect(0, 0, 350, 350);
globo.mostrar(papel);
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Grafico
Frame
package FigurasGraficas24;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Gráfico extends JFrame implements ChangeListener{
int a,b,c,d;
private int altura=200,anchura=200;
public Gráfico() {
initComponents();
aDeslizante.addChangeListener(this);
bDeslizante.addChangeListener(this);
cDeslizante.addChangeListener(this);
dDeslizante.addChangeListener(this);
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
Gráfico frame=new Gráfico();
frame.setSize(320,350);
frame.setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Gráfico().setVisible(true);
}
});
}
private javax.swing.JSlider aDeslizante;
private javax.swing.JTextField aTexto;
private javax.swing.JSlider bDeslizante;
private javax.swing.JTextField bTexto;
private javax.swing.JSlider cDeslizante;
private javax.swing.JTextField cTexto;
private javax.swing.JSlider dDeslizante;
private javax.swing.JTextField dTexto;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void stateChanged(ChangeEvent e) {
a=aDeslizante.getValue();
b=bDeslizante.getValue();
c=cDeslizante.getValue();
d=dDeslizante.getValue();
aTexto.setText("a="+Integer.toString(a));
bTexto.setText("b="+Integer.toString(b));
cTexto.setText("c="+Integer.toString(c));
dTexto.setText("d="+Integer.toString(d));
dibujar();
}
private void dibujar(){
Graphics papel=panel.getGraphics();
papel.setColor(Color.white);
papel.fillRect(0, 0, anchura, altura);
double x,y,siguienteX,siguienteY;
int pixelX,pixelY,siguientePixelX,siguientePixelY;
papel.setColor(Color.black);
for (pixelX=0;pixelX<=anchura;pixelX++){
x=escalarX(pixelX);
y=laFunción(x);
pixelY=escalarY(y);
siguientePixelX=pixelX+1;
siguienteX=escalarX(siguientePixelX);
siguienteY=laFunción(siguienteX);
siguientePixelY=escalarY(siguienteY);
papel.drawLine(pixelX, pixelY, siguientePixelX, siguientePixelY);
}
}
private double laFunción(double x){
return a*x*x*x+b*x*x+c*x+d;
}
private double escalarX(int pixelX){
double xInicial=-5,xFinal=5;
double xEscalar=anchura/(xFinal-xInicial);
return (pixelX-(anchura/2))/xEscalar;
}
private int escalarY(double y){
double yInicial=-5,yFinal=5;
int coordPixel;
double yEscala=altura/(yFinal-yInicial);
coordPixel=(int) (-y*yEscala)+(int)(altura/2);
return coordPixel;
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Globo
Clase
package FigurasGraficas25;
package FigurasGraficas25;
import java.awt.*;
public class Globo {
private int x;
private int y;
private int diámetro;
public Globo(int xInicial,int yInicial,int diámetroInicial){
x=xInicial;
y=yInicial;
diámetro=diámetroInicial;
}
public void cambiarTamaño(int cambio ){
diámetro=diámetro+cambio;
}
public void mostrar (Graphics papel){
papel.setColor(Color.black);
papel.drawOval(x,y,diámetro,diámetro);
}
}
Frame
public class Globo {
private int x;
private int y;
private int diámetro;
public Globo(int xInicial,int yInicial,int diámetroInicial){
x=xInicial;
y=yInicial;
diámetro=diámetroInicial;
}
public void cambiarTamaño(int cambio ){
diámetro=diámetro+cambio;
}
public void mostrar (Graphics papel){
papel.setColor(Color.black);
papel.drawOval(x,y,diámetro,diámetro);
}
}
package FigurasGraficas25;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public class UsarGlobo extends JFrame implements ActionListener {
private Globo[] fiesta = new Globo[10];
public UsarGlobo() {
initComponents();
botónDibujar.addActionListener(this);
fiesta[0] = new Globo(10, 10, 50);
fiesta[1] = new Globo(50, 50, 100);
fiesta[2] = new Globo(100, 100, 200);
}
@Override
public void actionPerformed(ActionEvent event) {
Graphics papel = panel.getGraphics();
if(event.getSource() == botónDibujar) {
fiesta[0].mostrar(papel);
fiesta[1].mostrar(papel);
fiesta[2].mostrar(papel);
}
}
private void mostrarGlobos(Graphics papel) {
for (int g = 0; g <= 2; g++) {
fiesta[g].mostrar(papel);
}
}
private void cambiarTamaño() {
for (int g = 0; g <= 2; g++) {
fiesta[g].cambiarTamaño(20);
}
}
public static void main(String args[]) {
UsarGlobo demo=new UsarGlobo();
demo.setSize(200,200);
demo.setVisible(true);
public void run() {
new UsarGlobo().setVisible(true);
}
});
}
private javax.swing.JButton botónDibujar;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Globo
Clase
package FigurasGraficas26;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Globo {
private int x=10;
private int y=10;
private int radio=20;
private int intervaloY=20;
public void moverArriba(){
y=y-intervaloY;
}
public void moverAbajo(){
y=y+intervaloY;
}
public void mostrar(JPanel panel){
Graphics papel=panel.getGraphics();
papel.setColor(Color.white);
papel.fillRect(0, 0, 550, 550);
papel.setColor(Color.black);
papel.drawOval(x, y, radio*2, radio*2);
}
public int getRadio(){
return radio;
}
public void setRadio(int nuevoRadio){
radio=nuevoRadio;
}
}
Frame
package FigurasGraficas26;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class UsarGlobo extends JFrame implements ChangeListener,ActionListener {
private Globo globo;
public UsarGlobo() {
initComponents();
botónArriba.addActionListener(this);
botónAbajo.addActionListener(this);
deslizable.addChangeListener(this);
globo=new Globo();
}
@SuppressWarnings("unchecked")
public static void main(String args[]) {
UsarGlobo demo=new UsarGlobo();
demo.setSize(500,500);
demo.setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new UsarGlobo().setVisible(true);
}
});
}
private javax.swing.JButton botónAbajo;
private javax.swing.JButton botónArriba;
private javax.swing.JTextField campoTexto;
private javax.swing.JSlider deslizable;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel panel;
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource()==botónArriba){
globo.moverArriba();
}
else{
globo.moverAbajo();
}
dibujar();
}
public void stateChanged (ChangeEvent event){
int radio=deslizable.getValue();
campoTexto.setText("Radio ="+radio);
globo.setRadio(radio);
dibujar();
}
private void dibujar(){
globo.mostrar(panel);
}
}
Consola de corrida del programa
_________________________________________________________________________________
Programa Animación
Frame
Clase Spaceinvader
package Juego;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class SpaceInvaders extends JFrame implements KeyListener{
//Constantes del Juego
private final int TAMAÑO_NAVE = 50;
private final int VELOCIDAD_JUGADOR = 3;
private final ImageIcon Jugador = new ImageIcon("src\\Recursos\\Jugador.gif");
private final ImageIcon Bala = new ImageIcon("src\\Recursos\\Bala.gif");
//Variables para el movimiento del usuario
private boolean Arriba = false;
private boolean Abajo = false;
private boolean Derecha = false;
private boolean Izquierda = false;
//Variable para pintar las balas
private Bala ReferenciaBala;
//Crea el motor del juego
private MotorJuego Juego = new MotorJuego();
//Variable que controla el juego
private boolean GameOver = false;
private boolean Pause = false;
//Doble buffer
private BufferStrategy DobleBuffer;
public SpaceInvaders(){
super(" S P A C E I N V A D E R S");
this.setSize(800,600);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
addKeyListener(this);
createBufferStrategy(2);
DobleBuffer = getBufferStrategy();
requestFocus();
}
public void Jugar(){
Juego.setNivel(1);
Juego.setTamañoImagen(TAMAÑO_NAVE);
BuclePrincipal();
}
@Override
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()){
case 37:{ //Izquierda
Izquierda = true;
break;
}
case 38:{ //Arriba
Arriba = true;
break;
}
case 39:{ //Derecha
Derecha = true;
break;
}
case 40:{ //Abajo
Abajo = true;
break;
}
}
}
@Override
public void keyReleased(KeyEvent e) {
switch(e.getKeyCode()){
case 37:{ //Izquierda
Izquierda = false;
break;
}
case 38:{ //Arriba
Arriba = false;
break;
}
case 39:{ //Derecha
Derecha = false;
break;
}
case 40:{ //Abajo
Abajo = false;
break;
}
case 65:{ //Letra A
Juego.NuevaBala();
break;
}
}
}
@Override
public void keyTyped(KeyEvent e) {}
/*
* Pinta cada uno de los componentes del juego
*/
private void BuclePrincipal(){
while(!GameOver){
ActualizarJuego();
PintarJuego();
try{
Thread.sleep(20);
}
catch(Exception Error){System.out.println("ERROR INTERNO DEL JUEGO");}
}
}
private void ActualizarJuego(){
PosicionarJugador();
Juego.Jugar();
}
public void PosicionarJugador(){
if(Izquierda){Juego.setJugadorPosicionX(Juego.getJugadorPosicionX() - VELOCIDAD_JUGADOR);}
if(Derecha){Juego.setJugadorPosicionX(Juego.getJugadorPosicionX() + VELOCIDAD_JUGADOR);}
if(Arriba){Juego.setJugadorPosicionY(Juego.getJugadorPosicionY() - VELOCIDAD_JUGADOR);}
if(Abajo){Juego.setJugadorPosicionY(Juego.getJugadorPosicionY() + VELOCIDAD_JUGADOR);}
}
private void PintarJuego(){
//Pinta el Jugador
paint(getGraphics());
}
@Override
public void paint(Graphics g){
g = DobleBuffer.getDrawGraphics();
g.setColor(this.getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
//Pinta el Jugador
g.drawImage(Jugador.getImage(), Juego.getJugadorPosicionX(), Juego.getJugadorPosicionY(), this);
//Pinta las balas
for(int i = 0; i < Juego.getNumeroBalas(); i++){
ReferenciaBala = Juego.getBala(i);
g.drawImage(Bala.getImage(), ReferenciaBala.getX(), ReferenciaBala.getY(), this);
}
//Pinta las naves
for(int i = 0; i < Juego.NAVES_X; i++){
for(int j = 0; j < Juego.NAVES_Y; j++){
g.drawImage(Juego.getNave(i, j), 10 + i*TAMAÑO_NAVE, 30 + j*TAMAÑO_NAVE, this);
}
}
DobleBuffer.show();
}
}
Clase Nave
package Juego;
import java.awt.Image;
import javax.swing.ImageIcon;
import java.awt.Image;
import javax.swing.ImageIcon;
public class Nave {
private ImageIcon Imagen = null;
private int Resistencia = 0;
public Nave(int TipoEnemigo){
Imagen = new ImageIcon("src\\Recursos\\Nave" + TipoEnemigo + ".gif");
switch(TipoEnemigo){
case 0:{
Resistencia = 1;
break;
}
case 1:{
Resistencia = 2;
break;
}
case 2:{
Resistencia = 3;
break;
}
case 3:{
Resistencia = 4;
break;
}
}
}
public Image getImagen(){
return Imagen.getImage();
}
public boolean DisminuirResistencia(){ //Devuelve true si su resistencia ha llegado a 0
Resistencia--;
if(Resistencia == 0){
return true;
}
else{
return false;
}
}
}
Clase MotorJuego
package Juego;
import java.awt.Image;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Random;
import java.awt.Image;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Random;
public class MotorJuego {
private Random NumeroAleatorio = new Random();
private final int MAXIMA_POSICION_JUGADOR_X = 750;
private final int MAXIMA_POSICION_JUGADOR_Y = 550;
public final int NAVES_X = 15;
public final int NAVES_Y = 5;
private int JugadorPosicionX = MAXIMA_POSICION_JUGADOR_X / 2;
private int JugadorPosicionY = MAXIMA_POSICION_JUGADOR_Y;
private int VelocidadJuego = 0;
private int TamañoImagen = 50;
//Variables para el control de las balas
private ArrayList<Bala> Balas = new ArrayList();
private int NumeroBalas = 0;
//Variable para el control de los enemigos
private Nave[][] MatrizNaves = new Nave[NAVES_Y][NAVES_X];
private int PulsosBucle = 0;
private int Pulsos = 0;
private int CantidadEnemigos = 0;
//Variables para la deteccion de colisiones
private Rectangle Imagen1 = new Rectangle(); //Para las naves alienigenas
private Rectangle Imagen2 = new Rectangle(); //Para las balas del usuario
public void NuevaBala() {
Balas.add(new Bala(JugadorPosicionX + 25, JugadorPosicionY));
NumeroBalas++;
}
public MotorJuego() {
//Establece el tamaño de las balas del jugador
Imagen2.height = 17;
Imagen2.width = 7;
//Establece el tamaño de las naves
Imagen1.height = 50;
Imagen1.width = 50;
}
public int getNumeroBalas() {
return NumeroBalas;
}
public Bala getBala(int Indice) {
return Balas.get(Indice);
}
public void setTamañoImagen(int Tamaño) {
this.TamañoImagen = Tamaño;
}
public void EstablecerNivel(int Nivel) {
this.VelocidadJuego = Nivel * 10;
}
public int getJugadorPosicionX() {
return JugadorPosicionX;
}
public int getJugadorPosicionY() {
return JugadorPosicionY;
}
public Image getNave(int X, int Y) {
if (MatrizNaves[Y][X] == null) {
return null;
} else {
return MatrizNaves[Y][X].getImagen();
}
}
public void setJugadorPosicionX(int X) {
if (X >= 0 && X < MAXIMA_POSICION_JUGADOR_X) {
this.JugadorPosicionX = X;
}
}
public void setJugadorPosicionY(int Y) {
if (Y >= 25 && Y < MAXIMA_POSICION_JUGADOR_Y) {
this.JugadorPosicionY = Y;
}
}
/**
* ************************************************************
* Acá genera enemigos aleatorios y crea posiciones aleatorias*
* ************************************************************
*/
private int FuncionPulsos(int X) {
return -10 * X + 60;
}
public void setNivel(int Nivel) {
this.Pulsos = FuncionPulsos(Nivel);
}
private void GenerarEnemigo() {
int X = NumeroAleatorio.nextInt(NAVES_X);
int Y = NumeroAleatorio.nextInt(NAVES_Y);
int TipoNave = NumeroAleatorio.nextInt(4);
//Verifica que esa posición no exista
while (MatrizNaves[Y][X] != null) {
X = NumeroAleatorio.nextInt(NAVES_X);
Y = NumeroAleatorio.nextInt(NAVES_Y);
}
MatrizNaves[Y][X] = new Nave(TipoNave);
CantidadEnemigos++;
}
private void DetectarColisiones() {
//Detecta colisiones entre las balas y los aliens
for (int i = 0; i < NAVES_X; i++) {
for (int j = 0; j < NAVES_Y; j++) {
//Obtiene la posición de la nave alien
if (MatrizNaves[j][i] != null) {
Imagen1.x = 10 + i * TamañoImagen;
Imagen1.y = 10 + j * TamañoImagen;
//La compara con las posiciones de las balas
for (int k = 0; k < Balas.size(); k++) {
Imagen2.x = Balas.get(k).getX();
Imagen2.y = Balas.get(k).getY();
if (Imagen1.intersects(Imagen2)) {
if (MatrizNaves[j][i].DisminuirResistencia()) {
MatrizNaves[j][i] = null;
}
Balas.remove(k);
NumeroBalas--;
break;
}
}
}
}
}
}
public void Jugar() {
//Mueve un poco las balas
for (int i = 0; i < NumeroBalas; i++) {
if (Balas.get(i).MoverBala()) {
Balas.remove(i);
NumeroBalas--;
}
}
//Si el tiempo es el correcto crea un nuevo enemigo en una posición aleatoria
PulsosBucle++;
if (PulsosBucle == Pulsos) {
PulsosBucle = 0;
if (CantidadEnemigos != NAVES_X * NAVES_Y) {
GenerarEnemigo();
}
}
//Verifica las colisiones
DetectarColisiones();
}
}
Clase Bala
package Juego;
public class Bala {
private final int VELOCIDAD_BALA = 5;
private int PosicionX = 0;
private int PosicionY = 0;
public Bala(int PosicionX, int PosicionY) {
this.PosicionX = PosicionX;
this.PosicionY = PosicionY;
}
public boolean MoverBala(){
PosicionY = PosicionY - VELOCIDAD_BALA;
if(PosicionY <= 0){
return true;
}
else
{
return false;
}
}
public int getX() {
return PosicionX;
}
public int getY() {
return PosicionY;
}
public void setX(int X) {
this.PosicionX = X;
}
public void setY(int Y) {
this.PosicionY = Y;
}
}
package Juego;
import Juego.SpaceInvaders;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import Juego.SpaceInvaders;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class Principal {
private ImageIcon ImagenMenu = new ImageIcon("src\\Recursos\\Menu.jpg");
private JFrame Ventana = null;
public Principal(){
CrearInterfaz();
}
private void CrearInterfaz(){
//Crea el Frame
Ventana = new JFrame("Space Invaders -- Menú Principal");
Ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Ventana.setVisible(true);
Ventana.setSize(603,447);
Ventana.setResizable(false);
Ventana.setLayout(null);
//Añade fondo al frame
JLabel Fondo = new JLabel(ImagenMenu);
Fondo.setBounds(0,0,597,418);
Fondo.setVisible(true);
//Añade los botones
JButton btnNuevoJuego = new JButton("Nuevo Juego");
JButton btnEstadisticas = new JButton("Estadisticas");
JButton btnOpciones = new JButton("Opciones Administrativas");
btnNuevoJuego.setVisible(true);
btnEstadisticas.setVisible(true);
btnOpciones.setVisible(true);
btnNuevoJuego.setBounds(205,274,217,30);
btnEstadisticas.setBounds(205,304,217,26);
btnOpciones.setBounds(205,330,217,26);
Ventana.add(btnNuevoJuego);
Ventana.add(btnEstadisticas);
Ventana.add(btnOpciones);
Ventana.add(Fondo);
//Añade ActionListeners a los botones
btnNuevoJuego.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
NuevoJuego();
}
});
btnEstadisticas.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(Ventana, "Temporalemtne no se encuentra esta opción");
}
});
btnOpciones.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(Ventana, "Temporalmente no se encuentra esta opción");
}
});
}
private void NuevoJuego(){
SpaceInvaders Juego = new SpaceInvaders();
Juego.Jugar();
}
public static void main(String args[]){
SpaceInvaders Juego = new SpaceInvaders();
Juego.Jugar();
}
}
Consola de corrida del programa
No hay comentarios:
Publicar un comentario