/* * Copyright (c) 2014 kademika.com */ package tank; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; public class BattleFieldTemplate extends JPanel { boolean COLORDED_MODE = true; int tankX = 0; int tankY = 0; int speed = 10; int defaultStep = 1; int endOffield=8*64-defaultStep; //граничные размеры поля int beginOffield=defaultStep; //граничные размеры поля int targetX = 0; int targetY = 0; int tankDirection = 4; /** * Write your code here. */ void runTheGame() throws Exception { String[][] battleField = new String[][]{ {" "," "," "," "," "," "," "," "," "}, {" ","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"," "}, {" "," "," "," "," "," "," "," "," "} }; /* * move(4) - вправо; * move(3) - влево; * move(2) - вниз; * move(1) - вверх; */ //Frame_38 Движение вправо до края и влево до края поля //while (tankX0) {moveLeft(defaultStep); } //Frame_39 Метод move(); //move(4);move(4);move(3);move(3);move(3);move(2); //move(2);move(2);move(2);move(2);move(2);move(2);move(2);move(2);move(2);move(2); //move(1);move(1);move(1);move(1);move(1);move(1);move(1);move(1);move(1);move(1); //while (true){move(random(4));} //moveToQuadrant(1,2); Thread.sleep(2000); //moveToQuadrant(3, 7); Thread.sleep(2000); moveToQuadrant(2, 2); Thread.sleep(2000); //moveToQuadrant(6, 8); //repaint(); } void move(int direction) throws InterruptedException { turn(direction); if (direction==4){moveRight(defaultStep);} if (direction==3){moveLeft(defaultStep);} if (direction==2){moveDown(defaultStep);} if (direction==1){moveUp(defaultStep);} } void turn(int direction){ tankDirection = direction; } void moveRight(int defaultStep) throws InterruptedException { int beginX=tankX; boolean normalSpeed=slowDown(); System.out.println("Направо до : "+tankX+":"+tankY); while (tankX<=(beginX+64-defaultStep)&&tankX<=endOffield) {tankX += defaultStep; repaint();Thread.sleep(speed);} slowUp(normalSpeed); } void moveLeft(int defaultStep) throws InterruptedException { int beginX=tankX; boolean normalSpeed=slowDown(); System.out.println( "Налево до : "+tankX+":"+tankY); while (tankX>=(beginX-64+defaultStep)&&tankX>=beginOffield) {tankX -= defaultStep; repaint();Thread.sleep(speed);} slowUp(normalSpeed); } void moveUp(int defaultStep) throws InterruptedException { int beginY=tankY; boolean normalSpeed=slowDown(); System.out.println( "Вверх до : "+tankX+":"+tankY); while (tankY>=(beginY-64+defaultStep)&&tankY>=beginOffield) {tankY -= defaultStep; repaint();Thread.sleep(speed);} slowUp(normalSpeed); } void moveDown(int defaultStep) throws InterruptedException { int beginY=tankY; boolean normalSpeed=slowDown(); System.out.println( "Вниз до : "+tankX+":"+tankY); while (tankY<=(beginY+64-defaultStep)&&tankY<=endOffield) {tankY += defaultStep; repaint();Thread.sleep(speed);} slowUp(normalSpeed); } boolean slowDown(){ boolean normalSpeed=true; if (Math.abs(targetX-tankX)<=64&&Math.abs(targetY-tankY)<=64){ speed=speed*2; normalSpeed=false; } return normalSpeed; } void slowUp (boolean normalSpeed){ if (!normalSpeed){speed=speed/2;} } static int random(int n){ int result=0; String strMillis=String.valueOf(System.currentTimeMillis()); result=calcStr(strMillis)%n+1; return result; } static int calcStr(String str){ int i = 0,result=0; String endStr=str.substring(str.length()-8); //сложить строку while (i