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 :)

Moving Eyes by Gilbert Le Blanc

This is a short example of a Java Swing GUI with drawing and simple animation. The eyeballs in the GUI follow the mouse cursor as you move the cursor in the drawing area of the GUI.

Introduction

I used Windows 10 and Java 7 to create this GUI. My screen capture software doesn’t recognize the narrow borders of a Windows 10 window.

I wrote 4 Java classes for this simple example. I put the 4 Java classes together to paste as a single example. You should put these classes in separate files when you create your Swing GUI.

I used the model / view / controller model when creating this Swing GUI. This means that:

  1. The view may read values from the model.
  2. The view may not update the model.
  3. The controller will update the model.
  4. The controller will repaint / revalidate the view.

Basically, the model is ignorant of the view and controller. This allows you to change the view and controller from Swing to a web site, or an Android app.

The model / view / controller pattern allows you to focus on one part of the Swing GUI at a time. In general, you’ll create the model first, then the view, and finally the controllers. You will have to go back and add fields to the model. I guarantee that you’ll come up with something you didn’t think of when you created the first cut of the model classes.

Here’s the code:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

//http://java-articles.info/articles/?p=788
public class MovingEyes implements Runnable {

    private static final int drawingWidth = 400;
    private static final int drawingHeight = 400;
    private static final int eyeballHeight = 150;
    private static final int eyeballWidthMargin = 125;

    private DrawingPanel drawingPanel;

    private Eye[] eyes;

    private JFrame frame;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new MovingEyes());
    }

    public MovingEyes() {
        this.eyes = new Eye[2];
        this.eyes[0] = new Eye(new Point(eyeballWidthMargin, eyeballHeight));
        this.eyes[1] = new Eye(new Point(drawingWidth - eyeballWidthMargin,
                eyeballHeight));
    }

    public void run() {
        frame = new JFrame("Moving Eyes by Gilbert Le Blanc");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        drawingPanel = new DrawingPanel(drawingWidth, drawingHeight);
        frame.add(drawingPanel);

        frame.setSize(800, 600);
    
        frame.setLocationRelativeTo(null);
    
        //frame.setResizable(false);
        // frame.pack();
        // frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public class DrawingPanel extends JPanel {

        private static final long serialVersionUID = -2977860217912678180L;

        private static final int eyeballOuterRadius = 50;
        private static final int eyeballInnerRadius = 20;

        public DrawingPanel(int width, int height) {
            this.addMouseMotionListener(new EyeballListener(this,
                    eyeballOuterRadius - eyeballInnerRadius - 5));
            this.setBackground(Color.WHITE);
            this.setPreferredSize(new Dimension(width, height));
        }

        // images
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);

            g.setColor(Color.BLACK);

            for (Eye eye : eyes) {
                drawCircle(g, eye.getOrigin(), eyeballOuterRadius);
                fillCircle(g, eye.getEyeballOrigin(), eyeballInnerRadius);
            }
        }

        private void drawCircle(Graphics g, Point origin, int radius) {
            g.drawOval(origin.x - radius, origin.y - radius, radius + radius,
                    radius + radius);
        }

        private void fillCircle(Graphics g, Point origin, int radius) {
            g.fillOval(origin.x - radius, origin.y - radius, radius + radius,
                    radius + radius);
        }

    }

    public class Eye {
        private final Point origin;
        private Point eyeballOrigin;

        public Eye(Point origin) {
            this.origin = origin;
            this.eyeballOrigin = origin;
        }

        public Point getEyeballOrigin() {
            return eyeballOrigin;
        }

        public void setEyeballOrigin(Point eyeballOrigin) {
            this.eyeballOrigin = eyeballOrigin;
        }

        public Point getOrigin() {
            return origin;
        }

    }

    public class EyeballListener extends MouseMotionAdapter {

        private final double eyeballDistance;

        private final DrawingPanel drawingPanel;

        public EyeballListener(DrawingPanel drawingPanel, double eyeballDistance) {
            this.drawingPanel = drawingPanel;
            this.eyeballDistance = eyeballDistance;
        }


        // mouse detector
        public void mouseMoved(MouseEvent event) {
            Point p = event.getPoint();
            for (Eye eye : eyes) {
                Point origin = eye.getOrigin();
                double theta = Math.atan2((double) (p.y - origin.y),
                        (double) (p.x - origin.x));
                int x = (int) Math.round(Math.cos(theta) * eyeballDistance)
                        + origin.x;
                int y = (int) Math.round(Math.sin(theta) * eyeballDistance)
                        + origin.y;
                eye.setEyeballOrigin(new Point(x, y));
            }

            drawingPanel.repaint();
        }

    }

}

You can use the JFrame and DrawingPanel code as a base for any Swing GUI where you need to draw.

Model

The Eye class is a Java object that holds the origin of the eye (circle) and the origin of the eyeball. The Eye class is the model in this simple example.

View

The MovingEyes class is the class that defines the JFrame. The MovingEyes class is part of the view. The main method of this class invokes the SwingUtilities invokeLater method to ensure that the Swing components are defined and modified on the Event Dispatch thread.

We use a JFrame. We do not extend a JFrame. The only time you extend a Swing component, or any Java class, is when you want to override one of the class methods. We’ll see this when I talk about the DrawingPanel.

The constructor of the MovingEyes class defines 2 instances of the Eye class. The run method defines the JFrame. The code in the run method will be similar for all Swing GUIs.

The DrawingPanel class makes up the rest of the view. The DrawingPanel class extends JPanel because we want to override the paintComponent method. The constructor of the DrawingPanel class sets the preferred size of the drawing area, and adds the mouse motion listener. The mouse motion listener is the controller of this Swing GUI.

The paintComponent method of the DrawingPanel class first calls the super paintComponent method. This maintains the Swing paint chain, and should always be the first statement of the overwritten paintComponent method.

The rest of the code in the paintComponent method of the DrawingPanel class draws the eyes. We only have drawing (painting) code in the paintComponent method. Control code belongs in the controller.

Controller

The EyeballListener class is the controller class. You can have more than one controller class in a more complicated Swing GUI.

The EyeballListener class extends the MouseMotionAdapter. You can implement the MouseMotionListener. I’m overriding one method, so the code is shorter when I extend the MouseMotionAdapter.

The mouseMoved method of the EyeballListener class fires a MouseEvent when the mouse is moved. We calculate a new position for the center of an eyeball by finding the theta angle from the center of the eye to the mouse position. The theta angle is used to calculate the new center of the eyeball.

Each Eye instance is updated separately in the for loop. After both eyes are updated, the drawing panel is repainted. This happens so fast that there’s no need for an animation loop in a separate thread.

An animation loop updates the model, draws the view, and waits for a specified period of time. You would use a separate thread for the animation loop, so that the GUI on the Event Dispatch thread stays responsive. If your GUI is not responsive, you’re probably doing too much work on the Event Dispatch thread.

Site: http://java-articles.info/articles/?p=788
Java archive: Moving Eyes by Gilbert Le Blanc.jar
Link: https://www.4shared.com/file/Qm-sr08-ei/Moving_Eyes_by_Gilbert_Le_Blan.html

SJMP – Simple Java Mp3 Player v1.1

SJMP v1.1Atenção: A biblioteca (API) jmf.jar foi descontinuada pela SUN então sua performance esta comprometida. JMF has been deprecated.

SJMP ou se preferir Simple Java Mp3 Player, é tal como o seu nome indica, um simples leitor de MP3 baseado em Swing, JavaSE, Java Media Framework, desenvolvido sob Netbeans IDE.

Requer:

Java Runtime Evironment

Contact me: Robby Sitanala
Jatipadang RT 04/09 No.32. Jakarta 12540, Indonesia.
Telefone: +62 896 3025 4812
Site: http://www.robbysitanala.net
Email: robby1412@gmail.com.

Link : SJMP – Simple Java Mp3 Player v1.1.jar

http://www.4shared.com/file/cV3oucUjba/SJMP_-_Simple_Java_Mp3_Player_.html