火星車(面向對象思想編程)

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進行判斷
	}
}
相關文章
相關標籤/搜索