您的位置:首页 > 编程语言

火星车(面向对象思想编程)

2017-07-04 00:00 190 查看
摘要: 在九宫格内移动,输出坐标,越界了就不移动

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/*.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类

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进行判断
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: