juego de asteroides ó aliens en java 2D

Technology

header ads

juego de asteroides ó aliens en java 2D

bueno empezamos con un juego clasico de los 80 en estos dias he estado asi realizando varios juegos en java por ejemplo el pacman que es de codigo abierto y lo modifique por que estaba abandonado pero subi los sprites, igual que este juego al cual estoy realizando o desarrolando con un poco de ayuda web online voy a hacer la primera parte luego lo terminare en otra entrada en este blog , el juego quedara como la siguiente imagen:


vamos a tener 3 clases y el sprite del avion, yo cree un pakete llamado aviones pero le pueden poner como quieran aqui imagen de la arquitectura:

la 1 clasela llmaremos avion en esta clase colocaremos el siguiente codigo:










import java.awt.Image;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;

public class avion {

    private int dx;
    private int dy;
    private int x;
    private int y;
    private Image image;

    public avion() {
        
        initCraft();
    }
    
    private void initCraft() {
      Image ii = new ImageIcon(getClass().getResource("avion.png")).getImage();
    //    ImageIcon ii = new ImageIcon("craft.png");
        image = ii;
        x = 40;
        y = 60;        
    }


    public void move() {
        x += dx;
        y += dy;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public Image getImage() {
        return image;
    }

    public void keyPressed(KeyEvent e) {
      
        int key = e.getKeyCode();
          System.out.println(""+key);

        if (key == KeyEvent.VK_LEFT) {
            dx = -1;
        }

        if (key == KeyEvent.VK_RIGHT) {
            dx = 1;
        }

        if (key == KeyEvent.VK_UP) {
            dy = -1;
        }

        if (key == KeyEvent.VK_DOWN) {
            dy = 1;
        }
    }

    public void keyReleased(KeyEvent e) {
        System.out.println("");
        int key = e.getKeyCode();

        if (key == KeyEvent.VK_LEFT) {
            dx = 0;
        }

        if (key == KeyEvent.VK_RIGHT) {
            dx = 0;
        }

        if (key == KeyEvent.VK_UP) {
            dy = 0;
        }

        if (key == KeyEvent.VK_DOWN) {
            dy = 0;
        }
    }
}

luego creamos una nueva clase y la llmaremos mueveimagen pondremos el siguiente codigo:

import java.awt.EventQueue;
import javax.swing.JFrame;

public class mueveimagen extends JFrame {

    public mueveimagen() {
        super("http://javayotros.blogspot.com/");
        initUI();
    }
    
    private void initUI() {
        
        add(new tablero());
        
        setSize(400, 300);
        setResizable(false);
        
        setTitle("http://javayotros.blogspot.com/");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                
                mueveimagen ex = new mueveimagen();
                ex.setVisible(true);
            }
        });
    }
}

agremos otra clase llamada tablero quese va a encargar de dibujar todo:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JPanel;
import javax.swing.Timer;


public class tablero extends JPanel implements ActionListener {

    private Timer timer;
    private avion craft;
    private final int DELAY = 10;

    public tablero() {

        initBoard();
    }
    
    private void initBoard() {
        
        addKeyListener(new TAdapter());
        setFocusable(true);
        setBackground(Color.BLACK);

        craft = new avion();

        timer = new Timer(DELAY, this);
        timer.start();        
    }


    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        doDrawing(g);

        Toolkit.getDefaultToolkit().sync();
    }

    private void doDrawing(Graphics g) {
        
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(craft.getImage(), craft.getX(), craft.getY(), this);        
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        
        craft.move();
        repaint();  
    }

    private class TAdapter extends KeyAdapter {

        @Override
        public void keyReleased(KeyEvent e) {
            craft.keyReleased(e);
        }

        @Override
        public void keyPressed(KeyEvent e) {
            craft.keyPressed(e);
        }
    }
}

finalmente el sprite de la imagen del avion

lo descargan y lo colocan al lado para que funcione
el mueve hacia los lados obviamente faltan los misiles y los asteroides o extraterrestres eso lo realizare en la segunda parte en otra entrada :)


Post a Comment