Game: Pegue os anti!

É dia de jogo do timão e os anti estão querendo entrar no estádio para secar o Todo Poderoso, use as bolas para derrubar todos eles e não deixe que elas, os porquinhos ou os velhinhos do litoral cheguem até a entrada!

Um jogo divertido onde você joga, ri dos anti e canta os hinos que ecoam dentro dos estádios, tudo ao mesmo tempo!

Se os anti resolverem vir em grande quantidade, não se preocupe, pois o gavião estará lá para te ajudar.

Prepare-se, mire, chute e Pegue os anti!

Informações adicionais:

Atualizado: 25 de novembro de 2013
Versão atual: 1.1
Requer Android: 4.0 ou superior
Classificação do conteúdo: Classificação Livre
Oferecido por: Rogerio S. Santos
Desenvolvedor: Rogério Santos
E-mail: rogeriophp@outlook.com

Download link:

https://play.google.com/store/apps/details?id=com.umrealgames.pegueosanti

SplatterPix by Delmator

SplatterPix by Delmator

Site: http://www.java-gaming.org/index.php?topic=27571.0

Source code:

BonusOne.java

BonusTwo.java

Burn.java

Enemy.java

EnemyExplode.java

Explosion.java

Laser.java

MainFrame.java

MainPanel.java

Missile.java

Particles.java

Power.java

PowerBits.java

PowerExplosion.java

Ship.java

Sounds.java

SplatterPix by Delmator.jar
https://www.4shared.com/file/61ZSU360ca/SplatterPix_by_Delmator.html

Tank Game In Java by Jinchong Zhou

Game name: tankGame.jar
Author: Jinchong Zhou
Date: March 2012
Modified: 05/10/2017

Site: http://www-personal.umich.edu/~rexzhou/

Game description: A 2D java Game.

Tank game is a java 2D tank shooting game. The player has controls a yellow tank and his or her purpose is to kill all the enemy tanks (in blue). The game has totally seven rounds, with increading difficulty.

To play the game, click the start new game item bar in the Menu bar in the left up corner.
Press ¡ü¡ú¡ý¡û to move the tank in the corresponding direction, and press button J on the keyboard to make a shot.
The player’s tank have three lifes in total, in other words, one round fails if the player’s tanks get shot three times before it kills all the enemies.

Site: https://github.com/JinchonZhou/tankGame

Class tankgame_2.java

/* 
 * Author: Jinchong Zhou
 * Created on March, 2012
 * Original by: http://www-personal.umich.edu/~rexzhou/
 * File:   tankgame_2.java
 * Modified on Jan, 2014
 * Site: https://github.com/JinchonZhou/tankGame
 * Last modified on: May 10, 2017 by J. Marcos B. 
 * Site: https://isjavado.wordpress.com/
 */

//package tankgame3;

//import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.*;
import java.io.*;

//import javax.sound.sampled.*;

class status {

    final static int totalLevel = 7;

    int level;

    // 0:nothing, 1:lose 2:win 3:prevlose 4: prevwin
    int win;

    boolean change;

    status() {
        this.level = 0;
        this.win = 0;
        this.change = false;
    }
}

public class tankgame_2 extends JFrame implements ActionListener, Runnable {

    private static final long serialVersionUID = 1L;
    MyPanel mp = null;
    MyStartPanel msp = null;
    winPanel wp = null;
    winPanel2 wp2 = null;
    losePanel lp = null;
    JMenuBar jmb = null;
    JMenu jm1 = null;
    JMenuItem jmi1 = null;
    JMenuItem jmi2 = null;
    JMenuItem jmi3 = null;
    JMenuItem jmi4 = null;
    JMenuItem jmi5 = null;

    // Recorder rec = null;
    status currStatus = new status();

    public static void main(String[] args) {

        tankgame_2 myGame = new tankgame_2();

        Thread tt = new Thread(myGame);
        tt.start();
    }

    public tankgame_2() {

        // Recorder rec = new Recorder();
        jmb = new JMenuBar();
        jm1 = new JMenu("Game");
        jm1.setMnemonic('G');
        jm1.setToolTipText("Play");
        jm1.setCursor(new Cursor(Cursor.HAND_CURSOR));

        jmi1 = new JMenuItem("Start New Game");
        jmi1.setToolTipText("Start New Game");
        jmi1.setMnemonic('S');
        jmi1.setCursor(new Cursor(Cursor.HAND_CURSOR));

        jmi3 = new JMenuItem("Next Round");
        jmi3.setToolTipText("Next Round");
        jmi3.setMnemonic('N');
        jmi3.setCursor(new Cursor(Cursor.HAND_CURSOR));

        jmi4 = new JMenuItem("Try Again");
        jmi4.setToolTipText("Try Again");
        jmi4.setMnemonic('T');
        jmi4.setCursor(new Cursor(Cursor.HAND_CURSOR));

        jmi5 = new JMenuItem("Exit");
        jmi5.setToolTipText("Exit");
        jmi5.setMnemonic('E');
        jmi5.setCursor(new Cursor(Cursor.HAND_CURSOR));

        jmi5.addActionListener(this);
        jmi5.setActionCommand("Exit");

        jmi3.addActionListener(this);
        jmi3.setActionCommand("Next");

        jmi4.addActionListener(this);
        jmi4.setActionCommand("Again");

        jmi3.setEnabled(false);
        jmi4.setEnabled(false);

        jm1.add(jmi1);

        jm1.add(jmi3);
        jm1.add(jmi4);
        jm1.add(jmi5);
        jmb.add(jm1);

        msp = new MyStartPanel();
        Thread tt = new Thread(msp);
        tt.start();

        jmi1.addActionListener(this);
        jmi1.setActionCommand("New");
        this.setJMenuBar(jmb);
        this.add(msp);

        this.setSize(500, 450);
        this.setTitle("Tank Game by Jinchong Zhou");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {

        if (e.getActionCommand().equals("New")) {

            if (currStatus.level > 0)
                this.remove(mp);
            else
                this.remove(msp);

            if (currStatus.win == 4)
                this.remove(wp);

            if (currStatus.win == 3)
                this.remove(lp);

            mp = new MyPanel(1, currStatus);
            Thread t = new Thread(mp);
            this.addKeyListener(mp);
            this.add(mp);
            currStatus.level = 1;
            t.start();
            this.setVisible(true);
            // jmi2.setEnabled(false);
        }

        if (e.getActionCommand().equals("Exit")) {

            System.exit(0);
        }

        if (e.getActionCommand().equals("Next")) {

            currStatus.level++;
            currStatus.change = true;
        }

        if (e.getActionCommand().equals("Again")) {

            currStatus.change = true;

        }

    }

    public void run() {

        while (true) {

            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {

                e.printStackTrace();
            }
            if (currStatus.change) {

                currStatus.change = false;

                if (currStatus.win == 1) {

                    jmi4.setEnabled(true);
                    jmi3.setEnabled(false);
                    lp = new losePanel();
                    this.add(lp);
                    this.remove(mp);
                    currStatus.win = 3;

                    this.setVisible(true);
                }

                else if (currStatus.win == 2) {

                    jmi3.setEnabled(true);
                    jmi4.setEnabled(false);
                    // if (currStatus.level == currStatus.totalLevel) {
                    if (currStatus.level == status.totalLevel) {

                        wp2 = new winPanel2();
                        jmi3.setEnabled(false);
                        this.add(wp2);

                    }

                    else {

                        wp = new winPanel();
                        this.add(wp);
                    }
                    this.remove(mp);
                    currStatus.win = 4;

                    this.setVisible(true);
                }

                else {

                    if (currStatus.win == 4) {
                        this.remove(wp);

                    } else if (currStatus.win == 3) {
                        this.remove(lp);
                    }
                    currStatus.win = 0;
                    mp = new MyPanel(currStatus.level, currStatus);
                    this.addKeyListener(mp);
                    this.add(mp);
                    Thread t = new Thread(mp);
                    this.remove(msp);
                    t.start();
                    this.setVisible(true);
                }
            }
        }
    }
}

// my panel
class MyPanel extends JPanel implements java.awt.event.KeyListener, Runnable {

    private static final long serialVersionUID = 1L;
    status myStatus;
    final static int width = 400;
    final static int height = 300;
    Hero hero = null;
    Vector<EnemyTank> ets = new Vector<EnemyTank>();
    final static int enNum[] = { 10, 14, 17, 22, 28, 32, 35, 40 };
    int enSize;

    // three image makes one bomb
    Image image1, image2, image3 = null;

    Vector<Bomb> bombs = new Vector<Bomb>();

    int mylife = 3;

    private FileReader fr = null;

    private BufferedReader br = null;

    public MyPanel(int level, status parentStatus) {

        enSize = enNum[level];

        myStatus = parentStatus;

        image1 = Toolkit.getDefaultToolkit().getImage(
                Panel.class.getResource("/bomb_1.gif"));

        image2 = Toolkit.getDefaultToolkit().getImage(
                Panel.class.getResource("/bomb_2.gif"));

        image3 = Toolkit.getDefaultToolkit().getImage(
                Panel.class.getResource("/bomb_3.gif"));

        hero = new Hero((int) (Math.random() * width),
                (int) (Math.random() * height));

        for (int i = 0; i < enSize; i++) {

            EnemyTank et = new EnemyTank((int) (Math.random() * width),
                    (int) (Math.random() * height));
            Thread t = new Thread(et);
            t.start();
            ets.add(et);

        }
    }

    public void showinfo(Graphics g) {

        this.drawTank(70, 320, g, 0, 1);
        g.setColor(Color.black);
        g.drawString(enSize + " ", 95, 340);
        this.drawTank(120, 320, g, 0, 0);
        g.setColor(Color.black);
        g.drawString(mylife + " ", 145, 340);
        g.drawString("level: " + myStatus.level, 185, 340);
    }

    public void paint(Graphics g) {

        super.paint(g);
        this.showinfo(g);

        if (mylife > 0)
            this.drawTank(hero.getX(), hero.getY(), g, hero.getDirect(), 0);

        for (int i = 1; i <= hero.s.size(); i++) {

            if (hero.s.get(i - 1).isLive) {
                g.setColor(Color.red);
                g.draw3DRect(hero.s.get(i - 1).x, hero.s.get(i - 1).y, 1, 1,
                        false);
            } else {
                hero.s.remove(i - 1);
                i--;
            }
        }

        for (int i = 0; i < ets.size(); i++) {

            if (ets.get(i).isLive) {
                this.drawTank(ets.get(i).getX(), ets.get(i).getY(), g,
                        ets.get(i).getDirect(), 1);

                for (int j = 1; j <= ets.get(i).s.size(); j++) {
                    if (ets.get(i).s.get(j - 1).isLive == true) {
                        g.setColor(Color.black);
                        g.draw3DRect(ets.get(i).s.get(j - 1).x,
                                ets.get(i).s.get(j - 1).y, 1, 1, false);
                    } else {
                        ets.get(i).s.remove(j - 1);
                        j--;
                    }
                }
            } else {
                ets.remove(i);
                i--;
            }
        }

        for (int i = 0; i < bombs.size(); i++) {

            Bomb b = bombs.get(i);

            if (b.life > 6)
                g.drawImage(image1, b.x, b.y, 30, 30, this);

            else if (b.life > 3)
                g.drawImage(image2, b.x, b.y, 30, 30, this);

            else
                g.drawImage(image3, b.x, b.y, 30, 30, this);

            b.lifeDown();
            if (b.life == 0) {
                bombs.remove(i);
                i--;
            }
        }
    }

    // function to judge whether a bullet has shot the tank
    public void hittank(Shot s, Tank et) {
        switch (et.getDirect()) {
        case 0:
        case 2:
            if (s.x >= et.x && s.x <= et.x + 20 && s.y >= et.y
                    && s.y <= et.y + 30) {
                s.isLive = false;
                et.isLive = false;
                enSize--;

                // create a bomb
                Bomb newbomb = new Bomb(et.getX(), et.getY());
                bombs.add(newbomb);
            }
            break;
        case 1:
        case 3:
            if (s.x > et.x && s.x < et.x + 30 && s.y > et.y && s.y < et.y + 20) {
                s.isLive = false;
                et.isLive = false;
                enSize--;

                // create a bomb
                Bomb newbomb = new Bomb(et.getX(), et.getY());
                bombs.add(newbomb);
            }
        }
    }

    public void hitmytank(Shot s, Tank et) {
        switch (et.getDirect()) {
        case 0:
        case 2:
            if (s.x >= et.x && s.x <= et.x + 20 && s.y >= et.y
                    && s.y <= et.y + 30) {
                s.isLive = false;
                mylife--;

                // create a bomb
                Bomb newbomb = new Bomb(et.getX(), et.getY());
                bombs.add(newbomb);
            }
            break;

        case 1:
        case 3:

            if (s.x > et.x && s.x < et.x + 30 && s.y > et.y && s.y < et.y + 20) {

                s.isLive = false;
                mylife--;

                // create a bomb
                Bomb newbomb = new Bomb(et.getX(), et.getY());
                bombs.add(newbomb);
            }
        }
    }

    public void drawTank(int x, int y, Graphics g, int direct, int type) {
        switch (type) {
        case 0:
            g.setColor(Color.yellow);
            break;
        case 1:
            g.setColor(Color.blue);
        }

        switch (direct) {
        case 0:
            g.fill3DRect(x, y, 5, 30, false);
            g.fill3DRect(x + 15, y, 5, 30, false);
            g.fill3DRect(x + 5, y + 5, 10, 20, false);
            g.fillOval(x + 4, y + 10, 10, 10);
            g.drawLine(x + 9, y + 15, x + 9, y - 4);
            break;

        case 1:
            g.fill3DRect(x + 5, y + 5, 30, 5, false);
            g.fill3DRect(x + 5, y + 20, 30, 4, false);
            g.fill3DRect(x + 10, y + 10, 20, 10, false);
            g.fillOval(x + 15, y + 10, 10, 10);
            g.drawLine(x + 20, y + 15, x + 40, y + 15);
            break;

        case 2:
            g.fill3DRect(x, y, 5, 30, false);
            g.fill3DRect(x + 15, y, 5, 30, false);
            g.fill3DRect(x + 5, y + 5, 10, 20, false);
            g.fillOval(x + 4, y + 10, 10, 10);
            g.drawLine(x + 9, y + 15, x + 9, y + 28);
            break;

        case 3:
            g.fill3DRect(x + 5, y + 5, 30, 5, false);
            g.fill3DRect(x + 5, y + 20, 30, 4, false);
            g.fill3DRect(x + 10, y + 10, 20, 10, false);
            g.fillOval(x + 15, y + 10, 10, 10);
            g.drawLine(x + 20, y + 15, x - 5, y + 15);
            break;
        }
    }

    public void keyPressed(KeyEvent e) {

        if ((e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_S)
                && hero.y < 280) {

            hero.setDirect(2);
            hero.setY(hero.getY() + hero.getSpeed());

            this.repaint();
        }

        else if ((e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_W)
                && hero.y > 0) {

            hero.setDirect(0);
            hero.setY(hero.getY() - hero.getSpeed());

            this.repaint();
        }

        else if ((e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_A)
                && hero.x > 0) {

            hero.setDirect(3);
            hero.setX(hero.getX() - hero.getSpeed());
            this.repaint();
        }

        else if ((e.getKeyCode() == KeyEvent.VK_RIGHT || e.getKeyCode() == KeyEvent.VK_D)
                && hero.x < 380) {

            hero.setDirect(1);
            hero.setX(hero.getX() + hero.getSpeed());
            this.repaint();
        }

        if (e.getKeyCode() == KeyEvent.VK_J) {
            if (this.hero.s.size() < 5) {
                hero.shotEnemy();
                this.repaint();
            }
        }

        if (e.getKeyCode() == KeyEvent.VK_L) {
            // this.getRecording();
        }
    }

    public void keyReleased(KeyEvent e) {
    }

    public void keyTyped(KeyEvent e) {

    }

    public void run() {

        while (!this.myStatus.change) {

            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            for (int i = 0; i < ets.size(); i++) {
                for (int j = 0; j < hero.s.size(); j++)
                    this.hittank(hero.s.get(j), ets.get(i));
            }

            for (int i = 0; i < ets.size(); i++) {

                EnemyTank t = ets.get(i);
                for (int j = 0; j < t.s.size(); j++)
                    this.hitmytank(t.s.get(j), hero);
            }

            this.repaint();

            if (mylife == 0) {

                this.myStatus.win = 1;
                this.myStatus.change = true;

            }

            if (ets.size() == 0) {

                this.myStatus.win = 2;
                this.myStatus.change = true;
            }
        }
    }

    public BufferedReader getBr() {
        return br;
    }

    public void setBr(BufferedReader br) {
        this.br = br;
    }

    public FileReader getFr() {
        return fr;
    }

    public void setFr(FileReader fr) {
        this.fr = fr;
    }
}

class MyStartPanel extends JPanel implements Runnable {

    private static final long serialVersionUID = 1L;
    int n = 0;

    public MyStartPanel() {
    }

    public void paint(Graphics g) {

        super.paint(g);
        g.fillRect(0, 0, 400, 300);

        if (n % 2 == 0) {

            Font myFont = new Font("Times New Roman", Font.BOLD, 20);
            g.setFont(myFont);
            g.setColor(Color.yellow);
            g.drawString("click start new game to start", 70, 120);
        }
    }

    public void run() {

        while (true) {
            try {
                Thread.sleep(800);
                n++;
                repaint();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class winPanel extends JPanel {

    private static final long serialVersionUID = 1L;

    public winPanel() {
    }

    public void paint(Graphics g) {

        super.paint(g);
        g.fillRect(0, 0, 400, 300);

        Font myFont = new Font("Times New Roman", Font.BOLD, 20);
        g.setFont(myFont);
        g.setColor(Color.yellow);
        g.drawString("You win!", 120, 120);
        g.drawString("Click next round or exit", 70, 150);
    }
}

class losePanel extends JPanel {

    private static final long serialVersionUID = 1L;

    public losePanel() {
    }

    public void paint(Graphics g) {

        super.paint(g);
        g.fillRect(0, 0, 400, 300);

        Font myFont = new Font("Times New Roman", Font.BOLD, 20);
        g.setFont(myFont);
        g.setColor(Color.yellow);
        g.drawString("You lose! Click try again or exit", 55, 120);
    }
}

class winPanel2 extends JPanel {

    private static final long serialVersionUID = 1L;

    public winPanel2() {
    }

    public void paint(Graphics g) {

        super.paint(g);
        g.fillRect(0, 0, 400, 300);
        Font myFont = new Font("Times New Roman", Font.BOLD, 20);
        g.setFont(myFont);
        g.setColor(Color.yellow);
        g.drawString("You passed all rounds, Great!", 50, 120);

    }
}

Class member.java

/* 
 * Author: Jinchong Zhou
 * Created on March, 2012
 * Original by: http://www-personal.umich.edu/~rexzhou/
 * File:   member.java
 * Modified on Jan, 2014
 * Site: https://github.com/JinchonZhou/tankGame
 * Last modified on: May 10, 2017 by J. Marcos B. 
 * Site: https://isjavado.wordpress.com/
 */

//package tankgame3;

//import java.io.*;
import java.util.Vector;
import java.util.Random;

public class member {
}

class Tank {

    // horizontal coordinate value for tank
    int x = 0;
    int color;
    boolean isLive = true;
    int direct = 1;
    int speed = 2;

    public int getColor() {
        return color;
    }

    public void setColor(int color) {
        this.color = color;
    }

    // 0 represents up, 1=right, 2=down, 3=left

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }

    public int getDirect() {
        return direct;
    }

    public void setDirect(int direct) {
        this.direct = direct;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    // vertical coordinate value
    int y = 0;

    public Tank(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

class Shot implements Runnable {
    int x, y, direct, speed;
    boolean isLive = true;

    Shot(int x, int y, int direct, int speed) {
        this.x = x;
        this.y = y;
        this.direct = direct;
        this.speed = speed;
    }

    public void run() {
        while (isLive) {
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            switch (direct) {
            case 0:
                y -= speed;
                break;
            case 1:
                x += speed;
                break;
            case 2:
                y += speed;
                break;
            case 3:
                x -= speed;
                break;
            }
            if (x < 0 || x > 400 || y < 0 || y > 300) {
                isLive = false;
            }
        }
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getDirect() {
        return direct;
    }

    public void setDirect(int direct) {
        this.direct = direct;
    }

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }

    public boolean isLive() {
        return isLive;
    }

    public void setLive(boolean isLive) {
        this.isLive = isLive;
    }
}

class Hero extends Tank {

    Vector<Shot> s = new Vector<Shot>();

    public Hero(int x, int y) {
        super(x, y);
        this.x = 0;
        this.y = 100;
    }

    public void shotEnemy() {
        switch (this.getDirect()) {

        case 0:
            Shot s1 = new Shot(x + 9, y - 4, 0, this.getSpeed() * 6);
            Thread t1 = new Thread(s1);
            t1.start();
            s.add(s1);
            break;

        case 1:
            Shot s2 = new Shot(x + 40, y + 15, 1, this.getSpeed() * 6);
            Thread t2 = new Thread(s2);
            t2.start();
            s.add(s2);
            break;

        case 2:
            Shot s3 = new Shot(x + 9, y + 28, 2, this.getSpeed() * 6);
            Thread t3 = new Thread(s3);
            t3.start();
            s.add(s3);
            break;

        case 3:
            Shot s4 = new Shot(x - 5, y + 15, 3, this.getSpeed() * 6);
            Thread t4 = new Thread(s4);
            t4.start();
            s.add(s4);
            break;
        }
    }
}

class EnemyTank extends Tank implements Runnable {

    Vector<Shot> s = new Vector<Shot>();

    public EnemyTank(int x, int y) {
        super(x, y);
        Random random = new Random();
        int w = random.nextInt(4);
        this.direct = w;
    }

    public void shotEnemy() {

        switch (this.getDirect()) {
        case 0:
            Shot s1 = new Shot(x + 9, y - 4, 0, this.getSpeed() * 6);
            Thread t1 = new Thread(s1);
            t1.start();
            s.add(s1);
            break;
        case 1:
            Shot s2 = new Shot(x + 40, y + 15, 1, this.getSpeed() * 6);
            Thread t2 = new Thread(s2);
            t2.start();
            s.add(s2);
            break;
        case 2:
            Shot s3 = new Shot(x + 9, y + 28, 2, this.getSpeed() * 6);
            Thread t3 = new Thread(s3);
            t3.start();
            s.add(s3);
            break;
        case 3:
            Shot s4 = new Shot(x - 5, y + 15, 3, this.getSpeed() * 6);
            Thread t4 = new Thread(s4);
            t4.start();
            s.add(s4);
            break;
        }
    }

    public void run() {

        while (true) {

            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            Random randomnumber = new Random();
            int w = randomnumber.nextInt(4);
            int p;
            this.setDirect(w);

            switch (this.direct) {
            case 0:
                for (int i = 0; i < 30; i++) {

                    p = randomnumber.nextInt(100);
                    if (p == 0 && this.s.size() < 3) {
                        this.shotEnemy();
                    }
                    if (y > 0)
                        this.y -= this.speed;
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case 1:
                for (int i = 0; i < 30; i++) {

                    p = randomnumber.nextInt(100);

                    if (p == 0 && this.s.size() < 3)
                        this.shotEnemy();
                    if (x < 380)
                        this.x += this.speed;
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case 2:
                for (int i = 0; i < 30; i++) {
                    p = randomnumber.nextInt(100);
                    if (p == 0 && this.s.size() < 3)
                        this.shotEnemy();
                    if (y < 280)
                        this.y += this.speed;
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case 3:
                for (int i = 0; i < 30; i++) {
                    p = randomnumber.nextInt(100);
                    if (p == 0 && this.s.size() < 3)
                        this.shotEnemy();
                    if (x > 0)
                        this.x -= this.speed;
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

class Bomb {

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getLife() {
        return life;
    }

    public void setLife(int life) {
        this.life = life;
    }

    public boolean isLive() {
        return isLive;
    }

    public void setLive(boolean isLive) {
        this.isLive = isLive;
    }

    int x, y;
    int life = 9;
    boolean isLive = true;

    public Bomb(int x, int y) {
        this.x = x;
        this.y = y;
        this.life = 9;
    }

    public void lifeDown() {
        if (life > 0)
            life--;
        else
            this.isLive = false;
    }
}

Download Link: https://www.4shared.com/file/DFNEboqAei/Tank_Game_by_Jinchong_Zhou.html

 

 

 

 

 

 

 

 

 

 

Have a fun :)

Dice Game In Java

File: Roll.java from Chapter 11
Information: Displays a dice face that corresponds to a roll.
Book: Lawrenceville Press
Date: June 10, 2005
Site: http://www.meskauskas.us/howard/java/GUI/rollDice/rollProgram.htm

import javax.swing.SwingUtilities;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Toolkit;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.JLabel;

public class JogoDados extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JButton jbtrollDie = null;
    private JLabel jlbnewRollA = null;
    private JLabel jlbTitulo = null;
    private JLabel jlbNumeracao = null;
    private JLabel jlbnewRollA1 = null;
    private JLabel jlbSinalDeMais = null;
    private JButton jbtInformacao = null;

    private JButton getJbtrollDie() {

        if (jbtrollDie == null) {
            jbtrollDie = new JButton();
            jbtrollDie.setBounds(new Rectangle(253, 292, 90, 36));
            jbtrollDie.setText("Roll Dice");
            //Mensagem ao passar o mouse
            jbtrollDie.setToolTipText("Play");
            //Transforma o mouse em mão
            jbtrollDie.setCursor(new Cursor(Cursor.HAND_CURSOR));
            jbtrollDie.addActionListener(this);
        }
        return jbtrollDie;
    }

    private JButton getJbtInformacao() {
        if (jbtInformacao == null) {
            ImageIcon icone = new ImageIcon(getClass().getResource(
                    "/imagens/Informacao.png"));
            jbtInformacao = new JButton(icone);
            jbtInformacao.setBounds(new Rectangle(530, 5, 40, 40));
            //Mensagem ao passar o mouse
            jbtInformacao.setToolTipText("Information");
            // Tira o fundo do botão
            jbtInformacao.setContentAreaFilled(false);
            // Tira a borda do botão
            jbtInformacao.setBorderPainted(false);
            // Tira o fucus do botão
            jbtInformacao.setFocusable(false);
            //Transforma o mouse em mão
            jbtInformacao.setCursor(new Cursor(Cursor.HAND_CURSOR));
            jbtInformacao
                    .addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent e) {

                            // Ponhe imagem no JOptionPane
                            Icon imagem = new ImageIcon(getClass().getResource(
                                    "/imagens/Duke.png"));
                            JOptionPane
                                    .showMessageDialog(
                                            null,
                                            "Jogo de dados em java.\n"
                                                    + "Autor: J. Marcos B."
                                                    + "\nClick no botão Roll Die para começar.",
                                            "Java Dice Game", 0, imagem);
                        }
                    });
        }
        return jbtInformacao;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JogoDados thisClass = new JogoDados();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    public JogoDados() {
        super();
        initialize();
    }

    private void initialize() {
        //Tamanho da tela do jogo
        this.setSize(581, 379);
        this.setContentPane(getJContentPane());
        //Titulo da Janela
        this.setTitle("Java Dice Game by J. Marcos B.");
        // Tamanho fixo do programa, sem alteção
        this.setResizable(false);
        // Deixa o programa no meio da tela, centralizado
        this.setLocationRelativeTo(null);
        // Endereço da imagem, usar imagem com tamanho 16 x 16
        URL url = this.getClass().getResource("/imagens/Duke.png");
        // Passando a url da imagem como parâmetro
        this.setIconImage(Toolkit.getDefaultToolkit().getImage(url));
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {

            jlbSinalDeMais = new JLabel();
            jlbSinalDeMais.setBounds(new Rectangle(274, 166, 40, 29));
            jlbSinalDeMais.setHorizontalAlignment(SwingConstants.CENTER);
            jlbSinalDeMais.setFont(new Font("Arial", Font.BOLD, 38));

            jlbnewRollA1 = new JLabel();
            jlbnewRollA1.setBounds(new Rectangle(324, 119, 114, 108));
            jlbnewRollA1.setHorizontalAlignment(SwingConstants.CENTER);
            jlbnewRollA1.setFont(new Font("Arial", Font.BOLD, 28));

            jlbNumeracao = new JLabel();
            jlbNumeracao.setBounds(new Rectangle(448, 163, 64, 32));
            jlbNumeracao.setHorizontalAlignment(SwingConstants.CENTER);
            jlbNumeracao.setFont(new Font("Arial", Font.BOLD, 28));

            jlbTitulo = new JLabel();
            jlbTitulo.setBounds(new Rectangle(124, 5, 329, 40));
            //Centraliza o texto da Label
            jlbTitulo.setHorizontalAlignment(SwingConstants.CENTER);
            //Muda o tamanho do texto da Label e deixa em negrito
            jlbTitulo.setFont(new Font("Arial", Font.BOLD, 28));
            //Titulo da Label
            jlbTitulo.setText("Dice Game");

            jlbnewRollA = new JLabel();
            jlbnewRollA.setBounds(new Rectangle(154, 119, 114, 108));

            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(getJbtrollDie(), null);
            jContentPane.add(jlbnewRollA, null);
            jContentPane.add(jlbTitulo, null);
            jContentPane.add(jlbNumeracao, null);
            jContentPane.add(jlbnewRollA1, null);
            jContentPane.add(jlbSinalDeMais, null);
            jContentPane.add(getJbtInformacao(), null);
        }
        return jContentPane;
    }

    public void actionPerformed(ActionEvent e) {

        //Randomiza o 1ª Dado
        int newRollA = (int) (6 * Math.random() + 1);

        // Dados verde FORA do pacote imagens
        if (newRollA == 1) {

            jlbnewRollA.setIcon(new ImageIcon(getClass().getResource(
                    ("dice-1.png"))));

        } else if (newRollA == 2) {

            jlbnewRollA.setIcon(new ImageIcon(getClass().getResource(
                    ("dice-2.png"))));

        } else if (newRollA == 3) {

            jlbnewRollA.setIcon(new ImageIcon(getClass().getResource(
                    ("dice-3.png"))));

        } else if (newRollA == 4) {

            jlbnewRollA.setIcon(new ImageIcon(getClass().getResource(
                    ("dice-4.png"))));

        } else if (newRollA == 5) {

            jlbnewRollA.setIcon(new ImageIcon(getClass().getResource(
                    ("dice-5.png"))));

        } else if (newRollA == 6) {

            jlbnewRollA.setIcon(new ImageIcon(getClass().getResource(
                    ("dice-6.png"))));
        }

        //Randomiza o 2ª Dado
        int newRollB = (int) (6 * Math.random() + 1);

        // Dados verde DENTRO do pacote imagens
        if (newRollB == 1) {

            jlbnewRollA1.setIcon(new ImageIcon(getClass().getResource(
                    ("/imagens/dice-1.png"))));

        } else if (newRollB == 2) {

            jlbnewRollA1.setIcon(new ImageIcon(getClass().getResource(
                    ("/imagens/dice-2.png"))));

        } else if (newRollB == 3) {

            jlbnewRollA1.setIcon(new ImageIcon(getClass().getResource(
                    ("/imagens/dice-3.png"))));

        } else if (newRollB == 4) {

            jlbnewRollA1.setIcon(new ImageIcon(getClass().getResource(
                    ("/imagens/dice-4.png"))));

        } else if (newRollB == 5) {

            jlbnewRollA1.setIcon(new ImageIcon(getClass().getResource(
                    ("/imagens/dice-5.png"))));

        } else if (newRollB == 6) {

            jlbnewRollA1.setIcon(new ImageIcon(getClass().getResource(
                    ("/imagens/dice-6.png"))));
        }

        int soma = newRollA + newRollB;

        jlbSinalDeMais.setText("+");

        jlbNumeracao.setText("= " + soma);

    }
}

 

 

 

 

 

 

Download link:

https://www.4shared.com/file/ZyYK6J24ei/Dice_Game.html

Have a fun :)

Helicopter Game In Java

Screenshot Helicopter GameOriginal by: http://hawkee.com/snippet/6233/

Key worlds:

Como criar .jar com arquivo mp3 junto?
Como acessar arquivo mp3 dentro do JAR?
Executando áudio em programas Java desktop.
Loading an mp3 file with JLayer from inside the Jar.
How to get classpath from mp3 within a .jar file?
Playing an MP3 in a .jar with mp3spi.
Export MP3 file with .JAR file using JLayer (JZoom) API.
Exporting .JAR with Ressources, Audio won’t play.
Loading wav, MP3 and MIDI from INSIDE a .jar file.
Play MP3 in .jar file.

Musica de Fondo Mp3 en Java.

Como reproducir un mp3 dentro de un .JAR.

Pilot a helicopter through a treacherous course Left-press the mouse to lift the helicopter and release the mouse-press moved downward.

/*
 * Created by Hawkee
 * on May 30, 2009
 * Files : HelicopterForm.java
 * API jl1.0.jar
 * Audios: HelicopterSound.mp3 and explosion.mp3
 * Text Document: Best.txt
 * Original by: http://hawkee.com/snippet/6233/
 * Last modified: on May 01, 2016 by J. Marcos B.
 * Blog: https://isjavado.wordpress.com/2016/05/01/helicopter-game-in-java/
 */

import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javazoom.jl.player.Player;

public class HelicopterForm implements MouseListener {

    public static void main(String[] args) {
        HelicopterForm a = new HelicopterForm();
    }

    private JFrame background;
    private Container container;
    private JButton button;
    private ImagePanel back;

    public static boolean paused;
    public static boolean crashed;
    public static boolean started;
    public static boolean playedOnce;

    public boolean goingUp;
    private double upCount;

    public static int distance;
    public static int maxDistance;

    public final int XPOS;
    public final int NUMRECS;
    public final int RECHEIGHT;
    public final int RECWIDTH;

    private int moveIncrement;
    private int numSmoke;

    private ArrayList<MovingImage> toprecs;
    private ArrayList<MovingImage> bottomrecs;
    private ArrayList<MovingImage> middlerecs;
    private ArrayList<MovingImage> recs;
    private ArrayList<MovingImage> smoke;
    private MovingImage helicopter;

    // private MP3 move = new MP3("src/music/HelicopterSound.mp3");

    /*
     * Graphics information:Background is 812 x 537Floor is 74 and Ceiling is 72
     * pixels high28 rectangles across that are 29 x 73
     */

    public HelicopterForm() {
        NUMRECS = 28;
        RECHEIGHT = 73;
        RECWIDTH = 29;
        XPOS = 200;
        playedOnce = false;
        maxDistance = 0;

        load(new File("src/Best.txt"));

        initiate();

    }

    public void load(File file) {

        try {
            @SuppressWarnings("resource")
            Scanner reader = new Scanner(file);
            while (reader.hasNext()) {
                int value = reader.nextInt();
                if (value > maxDistance)
                    maxDistance = value;
            }
        } catch (IOException i) {
            System.out.println("Error. " + i);
        }

        // **********************************************************************
        // get mp3 path background music
        String mp3 = "sounds/HelicopterSound.mp3";
        InputStream in = HelicopterForm.class.getClassLoader()
                .getResourceAsStream(mp3);
        MP3 move = new MP3();
        move.playMusic(in);
        move.start();
        // ***********************************************************************
    }

    public void save() {
        FileWriter out;
        try {
            out = new FileWriter("src/backgroundMusic/Best.txt");
            out.write("" + maxDistance);
            out.close();
        } catch (IOException i) {
            System.out.println("Error: " + i.getMessage());
        }
    }

    public void initiate() {
        if (!playedOnce) {
            background = new JFrame("Helicopter Game");
            // closes the program when the window is closed
            background.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            // don't allow the user to resize
            // the window
            background.setResizable(false);
            background.setSize(new Dimension(818, 568));
            background.setVisible(true);

            back = new ImagePanel("src/images/back.jpg");
            background.add(back);

            back.addMouseListener(this);
        }
        playedOnce = true;
        goingUp = false;
        paused = false;
        crashed = false;
        started = false;

        distance = 0;
        upCount = 0;

        moveIncrement = 2;
        numSmoke = 15;

        setRecs(new ArrayList<MovingImage>());
        toprecs = new ArrayList<MovingImage>();
        middlerecs = new ArrayList<MovingImage>();
        bottomrecs = new ArrayList<MovingImage>();
        smoke = new ArrayList<MovingImage>();

        helicopter = new MovingImage("src/images/helicopter.gif", XPOS, 270);

        for (int x = 0; x < NUMRECS; x++)
            toprecs.add(new MovingImage("src/images/rec2.jpg", RECWIDTH * x, 30));
        for (int x = 0; x < NUMRECS; x++)
            bottomrecs.add(new MovingImage("src/images/rec2.jpg", RECWIDTH * x,
                    450));

        middlerecs.add(new MovingImage("src/images/rec2.jpg", 1392,
                randomMidHeight()));
        middlerecs.add(new MovingImage("src/images/rec2.jpg", 1972,
                randomMidHeight()));

        drawRectangles();

    }

    public void drawRectangles() {
        long last = System.currentTimeMillis();
        long lastCopter = System.currentTimeMillis();
        long lastSmoke = System.currentTimeMillis();
        long lastSound = System.currentTimeMillis();
        int firstUpdates = 0;
        double lastDistance = (double) System.currentTimeMillis();
        while (true) {
            if (!paused
                    && !crashed
                    && started
                    && (double) System.currentTimeMillis()
                            - (double) (2900 / 40) > lastDistance) {
                lastDistance = System.currentTimeMillis();
                distance++;
            }

            /*
             * if(!paused && !crashed && started && System.currentTimeMillis() -
             * 1300 > lastSound) { lastSound = System.currentTimeMillis();
             * move.play(); }
             */

            if (!paused && !crashed && started
                    && System.currentTimeMillis() - 10 > lastCopter) {
                lastCopter = System.currentTimeMillis();
                updateCopter();
                updateMiddle();
            }
            if (!paused && !crashed && started
                    && System.currentTimeMillis() - 100 > last) {
                last = System.currentTimeMillis();
                updateRecs();
            }
            if (!paused && !crashed && started
                    && System.currentTimeMillis() - 75 > lastSmoke) {
                lastSmoke = System.currentTimeMillis();
                if (firstUpdates < numSmoke) {
                    firstUpdates++;
                    smoke.add(new MovingImage("src/images/smoke.gif", 187,
                            helicopter.getY()));
                    for (int x = 0; x < firstUpdates; x++)
                        smoke.set(x, new MovingImage("src/images/smoke.gif",
                                smoke.get(x).getX() - 12, smoke.get(x).getY()));
                } else {
                    for (int x = 0; x < numSmoke - 1; x++)
                        smoke.get(x).setY(smoke.get(x + 1).getY());
                    smoke.set(numSmoke - 1, new MovingImage(
                            "src/images/smoke.gif", 187, helicopter.getY()));
                }
            }
            back.updateImages(toprecs, middlerecs, bottomrecs, helicopter,
                    smoke);
        }
    }

    public void updateRecs() {
        // move all but the last
        // rectangle 1 spot to the left
        for (int x = 0; x < (NUMRECS - 1); x++) {
            toprecs.set(x, new MovingImage("src/images/rec2.jpg", RECWIDTH * x,
                    toprecs.get(x + 1).getY()));
            bottomrecs.set(x, new MovingImage("src/images/rec2.jpg", RECWIDTH
                    * x, bottomrecs.get(x + 1).getY()));
        }
        lastRec();
    }

    public void lastRec() {
        if (distance % 400 == 0)
            moveIncrement++;
        if (toprecs.get(26).getY() < 2) // if too high, move down
            moveDown();
        else if (bottomrecs.get(26).getY() > 463) // else if too low, move up
            moveUp();
        else // else move randomly
        {
            if ((int) (Math.random() * 60) == 50)
                randomDrop();
            else {
                if ((int) (Math.random() * 2) == 1)
                    moveUp();
                else
                    moveDown();
            }
        }
    }

    public void randomDrop() {
        toprecs.get(26).setY(
                toprecs.get(26).getY() + (463 - bottomrecs.get(26).getY()));
        bottomrecs.get(26).setY(463);
    }

    public void moveDown() {
        toprecs.set((NUMRECS - 1), new MovingImage("src/images/rec2.jpg",
                RECWIDTH * (NUMRECS - 1), toprecs.get(26).getY()
                        + moveIncrement));
        bottomrecs.set((NUMRECS - 1), new MovingImage("src/images/rec2.jpg",
                RECWIDTH * (NUMRECS - 1), bottomrecs.get(26).getY()
                        + moveIncrement));
    }

    public void moveUp() {
        bottomrecs.set((NUMRECS - 1), new MovingImage("src/images/rec2.jpg",
                RECWIDTH * (NUMRECS - 1), bottomrecs.get(26).getY()
                        - moveIncrement));
        toprecs.set((NUMRECS - 1), new MovingImage("src/images/rec2.jpg",
                RECWIDTH * (NUMRECS - 1), toprecs.get(26).getY()
                        - moveIncrement));
    }

    public int randomMidHeight() {
        int max = 10000;
        int min = 0;

        for (int x = 0; x < NUMRECS; x++) {
            if (toprecs.get(x).getY() > min)
                min = (int) toprecs.get(x).getY();
            if (bottomrecs.get(x).getY() < max)
                max = (int) bottomrecs.get(x).getY();
        }
        min += RECHEIGHT;
        max -= (RECHEIGHT + min);
        return min + (int) (Math.random() * max);
    }

    // moves the randomly generated middle rectangles
    public void updateMiddle() {
        if (middlerecs.get(0).getX() > -1 * RECWIDTH) {
            middlerecs.set(0, new MovingImage("src/images/rec2.jpg", middlerecs
                    .get(0).getX() - (RECWIDTH / 5), middlerecs.get(0).getY()));
            middlerecs.set(1, new MovingImage("src/images/rec2.jpg", middlerecs
                    .get(1).getX() - (RECWIDTH / 5), middlerecs.get(1).getY()));
        } else {
            middlerecs.set(0, new MovingImage("src/images/rec2.jpg", middlerecs
                    .get(1).getX() - (RECWIDTH / 5), middlerecs.get(1).getY()));
            middlerecs.set(1, new MovingImage("src/images/rec2.jpg", middlerecs
                    .get(0).getX() + 580, randomMidHeight()));
        }
    }

    public boolean isHit() {
        for (int x = 3; x <= 7; x++)
            if (helicopter.getY() + 48 >= bottomrecs.get(x).getY())
                return true;

        for (int y = 3; y <= 7; y++)
            if (helicopter.getY() <= toprecs.get(y).getY() + RECHEIGHT)
                return true;
        for (int z = 0; z <= 1; z++)
            if (isInMidRange(z))
                return true;
        return false;
    }

    public boolean isInMidRange(int num) {
        Rectangle middlecheck = new Rectangle((int) middlerecs.get(num).getX(),
                (int) middlerecs.get(num).getY(), RECWIDTH, RECHEIGHT);
        Rectangle coptercheck = new Rectangle((int) helicopter.getX(),
                (int) helicopter.getY(), 106, 48);
        return middlecheck.intersects(coptercheck);
    }

    public void crash() {

        // **********************************************************************
        // get mp3 path background music
        String explosion = "sounds/explosion.mp3";
        InputStream in = HelicopterForm.class.getClassLoader()
                .getResourceAsStream(explosion);
        MP3 explode = new MP3();
        explode.playMusic(in);
        explode.start();
        // ***********************************************************************

        crashed = true;
        if (distance > maxDistance) {
            maxDistance = distance;
            save();
        }

        initiate();
    }

    // moves the helicopter
    public void updateCopter() {
        upCount += .08;
        if (goingUp) {
            if (upCount < 3.5)
                helicopter.setPosition(XPOS,
                        (double) (helicopter.getY() - (.3 + upCount)));
            else
                helicopter.setPosition(XPOS,
                        (double) (helicopter.getY() - (1.2 + upCount)));
            helicopter.setImage("src/images/upCopter.gif");
        } else {
            if (upCount < 1)
                helicopter.setPosition(XPOS,
                        (double) (helicopter.getY() + upCount));
            else
                helicopter.setPosition(XPOS,
                        (double) (helicopter.getY() + (1.2 + upCount)));
            helicopter.setImage("src/images/helicopter.gif");
        }
        if (isHit())
            crash();
    }

    // Called when the mouse exits the game window
    public void mouseExited(MouseEvent e) {

        if (started) {
            paused = true;
            // move.close();
        }

    }

    // Called when the mouse enters the game window
    public void mouseEntered(MouseEvent e) {

    }

    // Called when the mouse is released
    public void mouseReleased(MouseEvent e) {
        goingUp = false;
        upCount = 0;
        if (paused)
            paused = false;
    }

    // Called when the mouse is pressed
    public void mousePressed(MouseEvent e) {
        if (!started)
            started = true;
        goingUp = true;
        upCount = 0;
    }

    // Called when the mouse is released
    public void mouseClicked(MouseEvent e) {

    }

    public Container getContainer() {
        return container;
    }

    public void setContainer(Container container) {
        this.container = container;
    }

    public JButton getButton() {
        return button;
    }

    public void setButton(JButton button) {
        this.button = button;
    }

    public ArrayList<MovingImage> getRecs() {
        return recs;
    }

    public void setRecs(ArrayList<MovingImage> recs) {
        this.recs = recs;
    }
}

class ImagePanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private Image background; // The background image
    private ArrayList<MovingImage> top; // An array list of foreground images
    private ArrayList<MovingImage> bottom;
    private ArrayList<MovingImage> middle;
    private MovingImage copter;
    private ArrayList<MovingImage> smoke;

    // Constructs a new ImagePanel with the background image specified by the
    // file path given
    public ImagePanel(String img) {
        this(new ImageIcon(img).getImage());
        // The easiest way to make images from file paths in Swing
    }

    // Constructs a new ImagePanel with the background image given
    public ImagePanel(Image img) {
        background = img;
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        // Get the size of the image
        // Thoroughly make the size of the panel equal to the size of the image
        // (Various layout managers will try to mess with the size of things to
        // fit everything)
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);

        top = new ArrayList<MovingImage>();
        middle = new ArrayList<MovingImage>();
        bottom = new ArrayList<MovingImage>();

        smoke = new ArrayList<MovingImage>();
    }

    // This is called whenever the computer decides to repaint the window
    // It's a method in JPanel that I've overwritten to paint the background and
    // foreground images
    public void paintComponent(Graphics g) {
        // Paint the background with its upper left corner at the upper left
        // corner of the panel
        g.drawImage(background, 0, 0, null);
        // Paint each image in the foreground where it should go
        for (MovingImage img : top)
            g.drawImage(img.getImage(), (int) (img.getX()), (int) (img.getY()),
                    null);
        for (MovingImage img : middle)
            g.drawImage(img.getImage(), (int) (img.getX()), (int) (img.getY()),
                    null);
        for (MovingImage img : bottom)
            g.drawImage(img.getImage(), (int) (img.getX()), (int) (img.getY()),
                    null);
        for (MovingImage img : smoke)
            g.drawImage(img.getImage(), (int) (img.getX()), (int) (img.getY()),
                    null);
        if (copter != null)
            g.drawImage(copter.getImage(), (int) (copter.getX()),
                    (int) (copter.getY()), null);
        drawStrings(g);
    }

    public void drawStrings(Graphics g) {
        g.setFont(new Font("Arial", Font.BOLD, 20));
        g.drawString("Distance: " + HelicopterForm.distance, 30, 500);
        g.setFont(new Font("Arial", Font.BOLD, 20));
        if (HelicopterForm.distance > HelicopterForm.maxDistance)
            g.drawString("Best: " + HelicopterForm.distance, 650, 500);
        else
            g.drawString("Best: " + HelicopterForm.maxDistance, 650, 500);
        if (HelicopterForm.paused) {
            g.setColor(Color.WHITE);
            g.setFont(new Font("Chiller", Font.BOLD, 72));
            g.drawString("Paused", 325, 290);
            g.setFont(new Font("Chiller", Font.BOLD, 30));
            g.drawString("Click to unpause.", 320, 340);
        }
    }

    // Replaces the list of foreground images with the one given, and repaints
    // the panel
    public void updateImages(ArrayList<MovingImage> newTop,
            ArrayList<MovingImage> newMiddle, ArrayList<MovingImage> newBottom,
            MovingImage newCopter, ArrayList<MovingImage> newSmoke) {
        top = newTop;
        copter = newCopter;
        middle = newMiddle;
        bottom = newBottom;
        smoke = newSmoke;
        repaint(); // This repaints stuff... you don't need to know how it works
    }
}

class MovingImage {
    private Image image; // The picture
    private double x; // X position
    private double y; // Y position

    // Construct a new Moving Image with image, x position, and y position given
    public MovingImage(Image img, double xPos, double yPos) {
        image = img;
        x = xPos;
        y = yPos;
    }

    // Construct a new Moving Image with image (from file path), x position, and
    // y position given
    public MovingImage(String path, double xPos, double yPos) {
        this(new ImageIcon(path).getImage(), xPos, yPos);
        // easiest way to make an image from a file path in Swing
    }

    // They are set methods. I don't feel like commenting them.
    public void setPosition(double xPos, double yPos) {
        x = xPos;
        y = yPos;
    }

    public void setImage(String path) {
        image = new ImageIcon(path).getImage();
    }

    public void setY(double newY) {
        y = newY;
    }

    public void setX(double newX) {
        x = newX;
    }

    // Get methods which I'm also not commenting
    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public Image getImage() {
        return image;
    }
}

// *****************************************************************
class MP3 extends Thread {

    // private String filename;
    private InputStream filename;
    private Player player;

    // constructor that takes the name of an MP3 file
    public void playMusic(InputStream in) {
        this.filename = in;
    }

    // Closes the Player
    public void close() {
        if (player != null)
            player.close();
    }

    // play the MP3 file to the sound card
    // run in new thread to play in background
    public void run() {
        try {
            BufferedInputStream bis = new BufferedInputStream(filename);
            player = new Player(bis);
            player.play();
        } catch (Exception e) {
            System.out.println("Problem playing file " + e);
        }
    }

}

Thanks a lot Julio Cesar Jallaza (jc Mouse), http://jc-mouse.blogspot.com.br/2010/05/reproductor-mp3-en-java.html too Aline Rigues, https://computacaoemfoco.wordpress.com/2014/05/01/executando-audio-em-programas-java-desktop/

Download link: http://www.4shared.com/file/1SR095F_ce/Helicoptero_Game.html

Helicoptero Game.jar

Size: 1,482 KB