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

Anúncios

Deixe um comentário:

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s