Skip to content

Instantly share code, notes, and snippets.

@AnnaBoro
Created September 26, 2015 21:17
Show Gist options
  • Save AnnaBoro/e1b7809b5900cb2a9686 to your computer and use it in GitHub Desktop.
Save AnnaBoro/e1b7809b5900cb2a9686 to your computer and use it in GitHub Desktop.
/*
* Copyright (c) 2013 midgardabc.com
*/
package lesson3;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
/**
* @version 3.0
*/
public class BattleFieldTemplate2 extends JPanel {
final boolean COLORDED_MODE = false;
final int BF_WIDTH = 576;
final int BF_HEIGHT = 576;
// 1 - top, 2 - bottom, 3 - left, 4 - right
int tankDirection = 1;
int tankX = 128;
int tankY = 512;
int bulletX = -100;
int bulletY = -100;
int speed = 10;
int bulletSpeed = 5;
String[][] battleField = {
{"B", " ", "B", "B", "B", "B", "B", "B", "B"},
{"B", " ", " ", " ", " ", " ", " ", " ", "B"},
{"B", "B", " ", " ", "B", " ", " ", "B", "B"},
{"B", " ", "B", " ", " ", " ", "B", " ", "B"},
{"B", " ", "B", " ", " ", " ", " ", " ", "B"},
{" ", " ", " ", "B", " ", "B", " ", "B", "B"},
{" ", "B", " ", " ", " ", " ", " ", "B", "B"},
{" ", " ", " ", "B", "B", "B", " ", " ", "B"},
{"B", " ", " ", "B", " ", " ", " ", " ", "B"}};
/**
* Write your code here.
*/
void runTheGame() throws Exception {
fire();
}
boolean processInterception() {
if ((bulletX > 0 && bulletX < 575) && (bulletY > 0 && bulletY < 575)) {
String quadrant = getQuadrant(bulletX, bulletY);
// System.out.println(quadrant);
int i = Integer.parseInt(quadrant.substring(0, quadrant.indexOf("_")));
int j = Integer.parseInt(quadrant.substring(quadrant.indexOf("_") + 1, quadrant.length()));
// System.out.println(i + "_" + j);
if (battleField[i][j] == "B") {
battleField[i][j] = " ";
return true;
}
}
return false;
}
String getQuadrant(int v, int h) {
int x = v / 64;
int y = h / 64;
return y + "_" + x;
}
void fire() throws InterruptedException {
bulletX = tankX + 25;
bulletY = tankY + 25;
while ((bulletX > 0 && bulletX < 575) && (bulletY > 0 && bulletY < 575)) {
if (tankDirection == 1) {
for (int i = 0; i < 64; ) {
bulletY -= 1;
// System.out.println(bulletY);
if (processInterception() == true) {
bulletX = -100;
bulletY = -100;
}
// System.out.println(bulletY);
repaint();
Thread.sleep(bulletSpeed);
break;
}
}
else if (tankDirection == 2) {
for (int i = 0; i < 64; ) {
bulletY += 1;
// System.out.println(bulletY);
if (processInterception() == true) {
bulletX = -100;
bulletY = -100;
}
repaint();
Thread.sleep(bulletSpeed);
break;
}
}
else if (tankDirection == 3) {
for (int i = 0; i < 64; ) {
bulletX -= 1;
// System.out.println(bulletX);
if (processInterception() == true) {
bulletX = -100;
bulletY = -100;
}
repaint();
Thread.sleep(bulletSpeed);
break;
}
}
else if (tankDirection == 4) {
for (int i = 0; i < 64; ) {
bulletX += 1;
// System.out.println(bulletX);
if (processInterception() == true) {
bulletX = -100;
bulletY = -100;
}
repaint();
Thread.sleep(bulletSpeed);
break;
}
}
}
}
String getQuadrantXY(int v, int h) {
return (v - 1) * 64 + "_" + (h - 1) * 64;
}
void move(int direction) throws Exception {
repaint();
Thread.sleep(speed);
turn(direction);
if (tankDirection == 1) {
if (tankY !=0) {
for (int i = 0; i < 64; i++) {
tankY -= 1;
repaint();
Thread.sleep(speed/2);
}
String quadrant = getQuadrant(tankX, tankY);
// System.out.println(quadrant);
int k = Integer.parseInt(quadrant.substring(0, quadrant.indexOf("_")));
int j = Integer.parseInt(quadrant.substring(quadrant.indexOf("_") + 1, quadrant.length()));
// System.out.println(i + "_" + j);
if (battleField[k][j] == "B") {
battleField[k][j] = " ";
repaint();
}
System.out.println("Up: " + tankX + "_" + tankY);
}
else System.out.println("Wrong direction");
}
else if (tankDirection == 2) {
if (tankY != 512) {
for (int i = 0; i < 64; i++) {
tankY += 1;
// System.out.println(tankY);
repaint();
Thread.sleep(speed/2);
}
String quadrant = getQuadrant(tankX, tankY);
int k = Integer.parseInt(quadrant.substring(0, quadrant.indexOf("_")));
int j = Integer.parseInt(quadrant.substring(quadrant.indexOf("_") + 1, quadrant.length()));
if (battleField[k][j] == "B") {
battleField[k][j] = " ";
repaint();
}
System.out.println("Down: " + tankX + "_" + tankY);
}
else System.out.println("Wrong direction");
}
else if (tankDirection == 3) {
if (tankX != 0) {
for (int i = 0; i < 64; i++) {
tankX -= 1;
repaint();
Thread.sleep(speed/2);
}
String quadrant = getQuadrant(tankX, tankY);
int k = Integer.parseInt(quadrant.substring(0, quadrant.indexOf("_")));
int j = Integer.parseInt(quadrant.substring(quadrant.indexOf("_") + 1, quadrant.length()));
if (battleField[k][j] == "B") {
battleField[k][j] = " ";
repaint();
}
System.out.println("Left: " + tankX + "_" + tankY);
}
else System.out.println("Wrong direction");
}
else if (tankDirection == 4) {
if (tankX != 512) {
for (int i = 0; i < 64; i++) {
tankX += 1;
repaint();
Thread.sleep(speed/2);
}
String quadrant = getQuadrant(tankX, tankY);
int k = Integer.parseInt(quadrant.substring(0, quadrant.indexOf("_")));
int j = Integer.parseInt(quadrant.substring(quadrant.indexOf("_") + 1, quadrant.length()));
if (battleField[k][j] == "B") {
battleField[k][j] = " ";
repaint();
}
System.out.println("Right: " + tankX + "_" + tankY);
}
else System.out.println("Wrong direction");
}
}
void turn(int direction) {
tankDirection = direction;
}
void moveRandom() throws InterruptedException {
int direction = 0;
while (true) {
long randValue = System.currentTimeMillis();
String randNum = String.valueOf(randValue);
String randNum1 = randNum.substring(randNum.length()-1);
String randNum2 = randNum.substring(randNum.length()-2, randNum.length()-1);
int randNumInt1 = Integer.parseInt(randNum1);
int randNumInt2 = Integer.parseInt(randNum2);
if (randNumInt1 > randNumInt2) {
if (randNumInt1 % 2 == 0) {
direction = 1;
}
else {
direction = 2;
}
}
else {
if (randNumInt2 % 2 == 0) {
direction = 3;
}
else {
direction = 4;
}
}
repaint();
Thread.sleep(speed);
if (direction == 1) {
if (tankY !=0) {
tankY -= 64;
repaint();
System.out.println("Up: " + tankX + "_" + tankY);
Thread.sleep(speed * 2);
}
else System.out.println("Wrong direction");
}
else if (direction == 2) {
if (tankY != 512) {
tankY += 64;
repaint();
System.out.println("Down: " + tankX + "_" + tankY);
Thread.sleep(speed * 2);
}
else System.out.println("Wrong direction");
}
else if (direction == 3) {
if (tankX != 0) {
tankX -= 64;
repaint();
System.out.println("Left: " + tankX + "_" + tankY);
Thread.sleep(speed * 2);
}
else System.out.println("Wrong direction");
}
else if (direction == 4) {
if (tankX != 512) {
tankX += 64;
repaint();
System.out.println("Right: " + tankX + "_" + tankY);
Thread.sleep(speed * 2);
}
else System.out.println("Wrong direction");
}
// System.out.println(direction + " "+ randValue);
// Thread.sleep(1);
}
}
void moveToQuadrant(int v, int h) throws Exception {
repaint();
Thread.sleep(speed);
String quadrant = getQuadrant(v, h);
// System.out.println(quadrant);
int lineIndex = quadrant.indexOf("_");
int tankXNew = 64 * Integer.parseInt(quadrant.substring(0, lineIndex));
int tankYNew = 64 * Integer.parseInt(quadrant.substring(lineIndex+1));
// System.out.println(tankXNew + " " + tankYNew);
if ((tankXNew - tankX) > 0) {
// System.out.println(tankX + " " + tankXNew);
int steps = (tankXNew - tankX) / 64;
for (int step = 0; step < steps; step++) {
// System.out.println(tankX);
move(4);
}
}
else if ((tankXNew - tankX) < 0) {
int steps = Math.abs((tankXNew - tankX) / 64);
for (int step = 0; step < steps; step ++) {
move(3);
}
}
if ((tankYNew - tankY) > 0) {
int steps = (tankYNew - tankY) / 64;
for (int step = 0; step < steps; step++) {
move(2);
}
}
else if ((tankYNew - tankY) < 0) {
int steps = Math.abs((tankY - tankYNew) / 64);
for (int step = 0; step < steps; step ++) {
move(1);
}
}
}
void clean() throws Exception {
turn(3);
fire();
moveToQuadrant(512, 0);
turn(1);
while (isEmptyY()) {
fire();
}
moveToQuadrant(0, 0);
turn(4);
while (isEmptyX()) {
fire();
}
for (int i = 0; i < battleField.length; i++) {
moveToQuadrant(0, i * 64);
turn(2);
while (isEmptyY()) {
fire();
}
}
}
boolean isEmptyY() {
int indexX = tankX / 64;
for (int i = 0; i < battleField.length; i++) {
if (battleField[i][indexX] == "B") {
return true;
}
}
return false;
}
boolean isEmptyX() {
int index = tankY / 64;
for (int i = 0; i < battleField[index].length; i++) {
if (battleField[index][i] == "B") {
return true;
}
}
return false;
}
// Magic bellow. Do not worry about this now, you will understand everything in this course.
// Please concentrate on your tasks only.
public static void main(String[] args) throws Exception {
BattleFieldTemplate2 bf = new BattleFieldTemplate2();
// System.out.println(bf.getQuadrant(0, 60));
// System.out.println(bf.getQuadrant(0, 64));
// System.out.println(bf.getQuadrant(68, 96));
// bf.runTheGame();
// bf.turn(3);
// bf.runTheGame();
// bf.turn(4);
// bf.runTheGame();
// bf.move(1);
// bf.move(4);
// bf.move(4);
bf.clean();
}
public BattleFieldTemplate2() throws Exception {
JFrame frame = new JFrame("BATTLE FIELD, DAY 2");
frame.setLocation(750, 150);
frame.setMinimumSize(new Dimension(BF_WIDTH, BF_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 < battleField.length; j++) {
for (int k = 0; k < battleField.length; k++) {
if (battleField[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(tankX, tankY, 64, 64);
g.setColor(new Color(0, 255, 0));
if (tankDirection == 1) {
g.fillRect(tankX + 20, tankY, 24, 34);
} else if (tankDirection == 2) {
g.fillRect(tankX + 20, tankY + 30, 24, 34);
} else if (tankDirection == 3) {
g.fillRect(tankX, tankY + 20, 34, 24);
} else {
g.fillRect(tankX + 30, tankY + 20, 34, 24);
}
g.setColor(new Color(255, 255, 0));
g.fillRect(bulletX, bulletY, 14, 14);
}
}
package lesson3;
import java.util.Arrays;
public class Birds {
static String[] typeOfBirds = {"eagle", "duck"};
static int[][] numberOfType = {
{0, 5},
{1, 3}};
static int[][] priceOfType = {
{0, 5},
{1, 2}};
static int[][] numberSoldBirds = {
{0, 1},
{1, 15}};
public static void main(String[] args) {
// System.out.println(numSoldBirds());
// System.out.println(numberOfBirds("eagle"));
// System.out.println(lessThan3());
// System.out.println(earnings());
// System.out.println(futureEarnings());
newPrice("duck", 33);
for (int i = 0; i < 2; i++) {
System.out.println(Arrays.toString(priceOfType[i]));
}
// newPrice("eagle", 50);
// for (int i = 0; i < 2; i++) {
// System.out.println(Arrays.toString(priceOfType[i]));
// }
addBirds("duck", 4);
for (int i = 0; i < 2; i++) {
System.out.println(Arrays.toString(numberOfType[i]));
}
// addBirds("eagle", 1);
// for (int i = 0; i < 2; i++) {
// System.out.println(Arrays.toString(numberOfType[i]));
// }
addSoldBirds("duck", 2);
for (int i = 0; i < 2; i++) {
System.out.println(Arrays.toString(numberSoldBirds[i]));
}
// addSoldBirds("eagle", 2);
// for (int i = 0; i < 2; i++) {
// System.out.println(Arrays.toString(numberSoldBirds[i]));
// }
}
static int numSoldBirds() {
int result = 0;
for (int i = 0; i < numberSoldBirds.length; i++) {
result = numberSoldBirds[i][1] + result;
}
return result;
}
static int numberOfBirds(String type) {
int result = 0;
for (int i = 0; i < typeOfBirds.length; i++) {
if (typeOfBirds[i].equals(type)) {
result = numberOfType[i][1];
}
}
return result;
}
static String lessThan3() {
String result = "";
for (int i = 0; i < numberOfType.length; i++) {
if (numberOfType[i][1] < 3){
result = typeOfBirds[i] + " " + result;
}
}
return result;
}
static int earnings() {
int profit = 0;
for (int i = 0; i < numberSoldBirds.length; i++) {
profit = profit + numberSoldBirds[i][1] * priceOfType[i][1];
}
return profit;
}
static int futureEarnings() {
int profit = 0;
for (int i = 0; i < numberOfType.length; i++) {
profit = profit + numberOfType[i][1] * priceOfType[i][1];
}
return profit;
}
static void newPrice(String typeBird, int newPrice) {
for (int i = 0; i < typeOfBirds.length; i++) {
if (typeOfBirds[i].equals(typeBird)) {
priceOfType[i][1] = newPrice;
}
}
}
static void addBirds(String typeBird, int addNumBirds) {
for (int i = 0; i < typeOfBirds.length; i++) {
if (typeOfBirds[i].equals(typeBird)) {
numberOfType[i][1] = numberOfType[i][1] + addNumBirds;
}
}
}
static void addSoldBirds(String typeBird, int addNumSoldBirds) {
for (int i = 0; i < typeOfBirds.length; i++) {
if (typeOfBirds[i].equals(typeBird)) {
numberSoldBirds[i][1] = numberSoldBirds[i][1] + addNumSoldBirds;
}
}
}
}
package lesson3;
public class Homework6 {
static String[][] student = {
{"Ivanov", "Petr"},
{"Pupkin", "Vasya"},
{"Lola", "Pola"}};
static String[][] subject = {
{"Info", "220"},
{"Math", "400"},
{"Philo", "160"}};
static int[][] grades = {
{0, 0, 3},
{0, 1, 4},
{0, 2, 5},
{1, 0, 5},
{1, 2, 4},
{1, 1, 4},
{2, 0, 5},
{2, 1, 2}};
public static void main(String[] args) {
printJournal();
}
static void printJournal() {
for (int i = 0; i < grades.length; i ++) {
int[] arr = grades[i];
System.out.println( (subject[arr[0]])[0] + " " + (subject[arr[0]])[1] + " " +
(student[arr[1]])[0] + " " + (student[arr[1]])[1] + " " + arr[2]);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment