1,Test類,能夠進行單個命令,也能夠進行多個命令java
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/*.java D:\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類this
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類code
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類get
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類it
package com.dayuanit.MarsCar.auto; import com.dayuanit.MarsCar.map.Point; public abstract class Engine { public abstract void move(Point point); }
6,ForwardEngine類class
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類test
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類import
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類map
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類im
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進行判斷 } }