Skip to content

Instantly share code, notes, and snippets.

@AnnaBoro
Created November 23, 2015 20:34
Show Gist options
  • Save AnnaBoro/5b21b4374f31f5889236 to your computer and use it in GitHub Desktop.
Save AnnaBoro/5b21b4374f31f5889236 to your computer and use it in GitHub Desktop.
+T34 - Frame4
package lesson6.gametank;
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class ActionField extends JPanel{
private boolean COLORDED_MODE = false;
private BattleField bf;
private AbstractTank defender;
private AbstractTank agressor;
private Bullet bullet;
private int[][] randomArr = {{64, 64}, {64, 448}, {448, 64}};
private int randomPosition = -1;
public ActionField() throws Exception {
bf = new BattleField();
defender = new T34(this, bf);
int[] xy = randomArr[getRandomNum()];
int y2 = xy[1];
int x2 = xy[0];
agressor = new Tiger(this, bf, x2, y2, Direction.DOWN);
bullet = new Bullet(-100, -100, Direction.UP);
initFrame();
}
public void runTheGame() throws Exception {
defender.moveToQuadrant(64, 64);
defender.clean();
// defender.moveRandom();
// defender.destroy();
// defender.fire();
// defender.turn(4);
// defender.fire();
// defender.move();
// defender.move();
// defender.turn(1);
// defender.turn(2);
// defender.fire();
// defender.move();
// defender.fire();
}
private boolean processInterception() throws InterruptedException {
if (isOnTheField()) {
if (removeBrick(false)) {
bullet.destroy();
}
else if (removeTank()) {
agressor.destroy();
bullet.destroy();
repaint();
Thread.sleep(3000);
int[] xy = randomArr[getRandomNum()];
agressor.updateX(xy[0]);
agressor.updateY(xy[1]);
repaint();
((Tiger)agressor).setArmor(1);
}
return false;
}
return true;
}
public boolean isOnTheField() {
if ((bullet.getX() > 0 && bullet.getX() < 575)
&& (bullet.getY() > 0 && bullet.getY() < 575)) {
return true;
}
return false;
}
public boolean removeBrick(boolean removeType) {
String quadrant;
if (removeType) {
quadrant = getQuadrant(defender.getX(), defender.getY());
}
else quadrant = getQuadrant(bullet.getX(), bullet.getY());
int i = Integer.parseInt(quadrant.substring(0, quadrant.indexOf("_")));
int j = Integer.parseInt(quadrant.substring(quadrant.indexOf("_") + 1, quadrant.length()));
if (bf.scanQuadrant(i, j) == "B") {
bf.updateQuadrant(i, j, " ");
repaint();
return true;
}
return false;
}
public boolean removeTank() throws InterruptedException {
String quadrant = getQuadrant(bullet.getX(), bullet.getY());
String quadrant2 = getQuadrant(agressor.getX(), agressor.getY());
if (quadrant.equalsIgnoreCase(quadrant2)) {
if (((Tiger) agressor).getArmor() == 1) {
((Tiger) agressor).setArmor(((Tiger) agressor).getArmor() - 1);
bullet.destroy();
repaint();
defender.fire();
return false;
}
else return true;
}
return false;
}
String getQuadrant(int v, int h) {
int x = v / 64;
int y = h / 64;
return y + "_" + x;
}
public String getQuadrantXY(int v, int h) {
return (v - 1) * 64 + "_" + (h - 1) * 64;
}
public void initFrame() throws Exception {
JFrame frame = new JFrame("BATTLE FIELD, DAY 2");
frame.setLocation(750, 150);
frame.setMinimumSize(new Dimension(bf.getBF_WIDTH(), bf.getBF_HEIGHT() + 22));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(this);
frame.pack();
frame.setVisible(true);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int i = 0;
Color cc;
for (int v = 0; v < 9; v++) {
for (int h = 0; h < 9; h++) {
if (COLORDED_MODE) {
if (i % 2 == 0) {
cc = new Color(252, 241, 177);
} else {
cc = new Color(233, 243, 255);
}
} else {
cc = new Color(180, 180, 180);
}
i++;
g.setColor(cc);
g.fillRect(h * 64, v * 64, 64, 64);
}
}
for (int j = 0; j < bf.getDimensionY(); j++) {
for (int k = 0; k < bf.getDimensionY(); k++) {
if (bf.scanQuadrant(j, k).equals("B")) {
String coordinates = getQuadrantXY(j + 1, k + 1);
int separator = coordinates.indexOf("_");
int y = Integer.parseInt(coordinates.substring(0, separator));
int x = Integer.parseInt(coordinates.substring(separator + 1));
g.setColor(new Color(0, 0, 255));
g.fillRect(x, y, 64, 64);
}
}
}
g.setColor(new Color(255, 0, 0));
g.fillRect(defender.getX(), defender.getY(), 64, 64);
g.setColor(new Color(0, 255, 0));
if (defender.getDirection().getId() == 1) {
g.fillRect(defender.getX() + 20, defender.getY(), 24, 34);
} else if (defender.getDirection().getId() == 2) {
g.fillRect(defender.getX() + 20, defender.getY() + 30, 24, 34);
} else if (defender.getDirection().getId() == 3) {
g.fillRect(defender.getX(), defender.getY() + 20, 34, 24);
} else {
g.fillRect(defender.getX() + 30, defender.getY() + 20, 34, 24);
}
g.setColor(new Color(255, 255, 0));
g.fillRect(bullet.getX(), bullet.getY(), 14, 14);
/////////////////////
g.setColor(new Color(70, 70, 70));
g.fillRect(agressor.getX(), agressor.getY(), 64, 64);
g.setColor(new Color(0, 255, 0));
if (agressor.getDirection().getId() == 1) {
g.fillRect(agressor.getX() + 20, agressor.getY(), 24, 34);
} else if (agressor.getDirection().getId() == 2) {
g.fillRect(agressor.getX() + 20, agressor.getY() + 30, 24, 34);
} else if (agressor.getDirection().getId() == 3) {
g.fillRect(agressor.getX(), agressor.getY() + 20, 34, 24);
} else {
g.fillRect(agressor.getX() + 30, agressor.getY() + 20, 34, 24);
}
g.setColor(new Color(255, 255, 0));
g.fillRect(bullet.getX(), bullet.getY(), 14, 14);
////////////////////
}
public void processMove(AbstractTank tank) throws InterruptedException {
for (int i = 0; i < 64; i++) {
if (tank.getDirection().getId() == 1) {
if (tank.getY() !=0) {
tank.updateY(-1);
}
else System.out.println("Wrong direction");
}
else if (tank.getDirection().getId() == 2) {
if (tank.getY() != 512) {
tank.updateY(1);
}
else System.out.println("Wrong direction");
}
else if (tank.getDirection().getId() == 3) {
if (tank.getX() != 0) {
tank.updateX(- 1);
}
else System.out.println("Wrong direction");
}
else if (tank.getDirection().getId() == 4) {
if (tank.getX() != 512) {
tank.updateX(1);
}
else System.out.println("Wrong direction");
}
repaint();
Thread.sleep(tank.getSpeed()/2);
}
this.removeBrick(true);
}
public void processTurn(AbstractTank tank) {
repaint();
}
public void processFire(Bullet bullet) throws InterruptedException {
this.bullet = bullet;
while (isOnTheField()) {
for (int i = 0; i < 64; ) {
if (defender.getDirection().getId() == 1) {
bullet.updateY(-1);
System.out.println(bullet.getY());
}
else if (defender.getDirection().getId() == 2) {
bullet.updateY(1);
System.out.println(bullet.getY());
}
else if (defender.getDirection().getId() == 3) {
bullet.updateX(-1);
System.out.println(bullet.getX());
}
else if (defender.getDirection().getId() == 4) {
bullet.updateX(1);
System.out.println(bullet.getX());
}
processInterception();
repaint();
Thread.sleep(bullet.getSpeed());
break;
}
}
}
public int getRandomNum() {
Random random = new Random();
int randomInt = random.nextInt(3);
if (randomPosition == randomInt) {
return getRandomNum();
}
randomPosition = randomInt;
return randomInt;
}
public AbstractTank getTank() {
return defender;
}
public AbstractTank getAgressor() {
return agressor;
}
}
package lesson6.gametank;
public class T34 extends AbstractTank {
public T34(ActionField actionField, BattleField battleField) {
super(actionField, battleField);
}
public T34(ActionField actionField, BattleField battleField, int x, int y, Direction direction) {
super(actionField, battleField, x, y, direction);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment