moonrover's Introduction
=========== MOON ROVERS =========== =========================== ASSUMPTIONS IN THE SOLUTION =========================== 1. The controller runs the program through the command prompt. 2. The controller operates the rovers through a customized input board made up of numbers[0-9], SPACEBAR, letters[N, S, W, E, L, R and M] and ENTER. 3. The controller is very accurate such that inputs match the input types expected. For example if input is 2 integers and a letter separated by spaces. 4. There is one moon plateau where all the moon rovers are located. 5. One or more moon rovers can be located at the same x and y coordinate pair(x,y) on the moon plateau. 6. If a moon rover is initialised with a co-ordinate outside the plateau the coordinate is set to 0. 7. If a moon rover is initialised with an invalid orientation, the orientation is set to North. 8. If a moon rover is given invalid explore commands, the rover simply skips such commands, gives an alert and continues with the explore commands. 9. If the rover is at the edges of the moon plateau and a move requires it to move beyond the edge it simply does not move but maintains its state. The SOLUTION is made up of 4 classes and one of the classes is a test case using JUnit. ============= The classes: ============= 1. Plateau 2. MoonRover 3. MoonRoverTest(This is the test case) 4. RoverExplore 1.Plateau class is used to create an object which represents the rectangular moon plateau. The object has states: plateauXMax plateauYMax Methods: Plateau - "Initiailises the states of the plateau" giveXPlateau - "Returns plateauXMax" giveYPlateau - "Returns plateauYMax" 2.MoonRover class is used to create an object which represents the Moon Rover on the moon plateau. The object has states: xCoordinate yCoordinate orientation Methods:MoonRover - "Initialises the states of the MoonRover object" rectifyOrientation - "Corrects the orientation according to the possible cardinal points that the rover can face" spinLeft - "Spin the rover 90 degrees to the left" spinRight - "Spin the rover 90 degrees to the right" move - "Move the rover one step in the orientation it is facing" whereAreYou - "Returns string containing the location of the rover on the grid and its orientation" 3.MoonRoverTest is used to test MoonRover class. It uses hard coded input and expected output to perform the test. 4.RoverExplore is a class that contains the main method. It provides an interface on the command prompt from where the controller can: Initialise the moon plateau Determine the number of moon rovers on the moon plateau Initialise and the moon rovers Enter the exploration commands for the moon rovers Finally he can final location and orientation of each moon rover =============================== Interaction between the classes =============================== Plateau class contains a static method which is used by the MoonRover class to access the static variables plateauXMax and plateauYMax. MoonRoverTest class simply tests the MoonRover class with hard coded input to assertain if the expected output is produced. RoverExplore class creates a Plateau object and a MoonRover object(s) using the Plateau and MoonRover classes. RoverExplore class can invoke the spinLeft, spinRight, move and whereAreYou methods of the MoonRover class. ================================= Compiling and Running the Classes ================================= On *nix Operating Systems Enter the following commands: Change the directory to the Moon Rover which was extracted from the tar.gz you downloaded 1. javac Plateau.java 2. javac MoonPlateau.java 3. javac -cp .:junit-4.11.jar:hamcrest-core-1.3.jar MoonRoverTest.java 4. javac RoverExplore.java Testing the MoonPlateau Class 5. java -cp .:junit-4.11.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore MoonRoverTest Running RoverExplore Class 6. java RoverExplore
moonrover's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.