2019独角兽企业重金招聘Python工程师标准>>>
1,Test类,可以进行单个命令,也可以进行多个命令
package com.dayuanit.MarsCar.test;import com.dayuanit.MarsCar.Car.MarsCar;public class Test {public static void main(String[] args) {String order = "w";MarsCar ms = new MarsCar("haha");//ms.process("w");ms.processes("w", "s", "d", "g");}
}D:\java312\MarsCar\MarsCarMyselt>javac -d classes src/*.javaD:\java312\MarsCar\MarsCarMyselt>java -cp .;classes com.dayuanit.MarsCar.test.Te
st
w
0 1
s
0 0
d
1 0
g
1 0
2,MarsCar类
package com.dayuanit.MarsCar.Car;import com.dayuanit.MarsCar.map.Point;
import com.dayuanit.MarsCar.auto.Engine;
import com.dayuanit.MarsCar.factory.EngineFactory;public class MarsCar {private String name;private Point point;private Engine engine;public MarsCar() {}public MarsCar(String name) {this.name = name;this.point = new Point();}public void processes(String ... orders) {for(String order:orders) {process(order);}}public void process(String order) {System.out.println(order);EngineFactory enginefactory = new EngineFactory();engine = enginefactory.creatEngine(order);if(null !=engine) {engine.move(point);}System.out.println(point.getXpoint()+ " " + point.getYpoint());}
}
3.MarsMap类
package com.dayuanit.MarsCar.map;import com.dayuanit.MarsCar.map.Point;public class MarsMap{public static final int MAX_xpoint = 9;public static final int MIN_xpoint = 0;public static final int MAX_ypoint = 9;public static final int MIN_ypoint = 0;public static boolean checkMaxYpoint(Point point) {return MAX_ypoint > point.getYpoint() + 1;}public static boolean checkMinYpoint(Point point) {return MIN_ypoint <= point.getYpoint() - 1;}public static boolean checkMaxXpoint(Point point) {return MAX_xpoint > point.getYpoint() + 1;}public static boolean checkMinXpoint(Point point) {return MIN_xpoint <= point.getYpoint() - 1;}
}
4,Point类
package com.dayuanit.MarsCar.map;public class Point {private int xpoint;private int ypoint;public Point() {} public Point(int xpoint, int ypoint) {this.xpoint = xpoint;this.ypoint = ypoint;}public void setXpoint(int xpoint) {this.xpoint = xpoint;}public int getXpoint() {return xpoint;}public void setYpoint(int ypoint) {this.ypoint = ypoint;}public int getYpoint() {return ypoint;}
}
5,Engine类
package com.dayuanit.MarsCar.auto;import com.dayuanit.MarsCar.map.Point;public abstract class Engine {public abstract void move(Point point);}
6,ForwardEngine类
package com.dayuanit.MarsCar.auto;import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;public class ForwardEngine extends Engine {public static final String ORDER = "w";public void move(Point point) {if(MarsMap.checkMaxYpoint(point)) {point.setYpoint(point.getYpoint() + 1);}}
}
7,BackEngine类
package com.dayuanit.MarsCar.auto;import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;public class BackEngine extends Engine {public static final String ORDER = "s";public void move(Point point) {if(MarsMap.checkMinYpoint(point)) {point.setYpoint(point.getYpoint() - 1);}}
}
8,LeftEngine类
package com.dayuanit.MarsCar.auto;import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;public class LeftEngine extends Engine {public static final String ORDER = "a";public void move(Point point) {if(MarsMap.checkMinXpoint(point)) {point.setXpoint(point.getXpoint() -1);}}
}
9,RightEngine类
package com.dayuanit.MarsCar.auto;import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;public class RightEngine extends Engine {public static final String ORDER = "d";public void move(Point point) {if(MarsMap.checkMaxXpoint(point)) {point.setXpoint(point.getXpoint() + 1);}}
}
10,EngineFactory类
package com.dayuanit.MarsCar.factory;import com.dayuanit.MarsCar.auto.ForwardEngine;
import com.dayuanit.MarsCar.auto.BackEngine;
import com.dayuanit.MarsCar.auto.LeftEngine;
import com.dayuanit.MarsCar.auto.RightEngine;
import com.dayuanit.MarsCar.auto.Engine;public class EngineFactory {public Engine creatEngine(String order) {Engine engine = null;if(ForwardEngine.ORDER.equals(order)) {engine = new ForwardEngine(); }if(BackEngine.ORDER.equals(order)) {engine = new BackEngine();}if(LeftEngine.ORDER.equals(order)) {engine = new LeftEngine();}if(RightEngine.ORDER.equals(order)) {engine = new RightEngine();}return engine;//返回engine到MarsCar进行判断}
}