Description
Implementing Langton’s Ant
Goals –
• Review of programming with arrays
• Convert requirements (i.e. the rules) to a software design
• Think about the testing process, before and after writing the program.
Assignment –
The rules are:
1. In a white square, turn right 90o and change the square to black.
2. In a black square, turn left 90o and change the square to white.
NOTE – Think this through carefully before you start coding.
You can use a blank character for a white space. You can use the number sign (“#”) for black. And for the Ant? An asterisk of course (“*”). Left ? Right? Those are relative directions! How are you going to keep track of the direction the Ant is facing? How will you “remember” what color the current cell occupied by the Ant is or was? You will created an Ant class to help organize, hold, and manipulate this information.
Your program will prompt the user to enter the number of rows and columns for the 2D array. Use those values to create a dynamic array of Ant objects. You should also prompt the user for the number of steps. Suggest values to the user. Notice in the Wikipedia article they mention several hundred and 10000. Use functional decomposition to develop functions to validate the input. What parameters and criteria do these functions need? You should start by asking the user for the starting location of the Ant.
You should add the option for the user to have a random starting location.
Note: You should start saving utility functions for future programs you write.
Note: For testing purposes always start the Ant at the same location. Then try different locations.
Your program should display each step.
Graders: Do the points look appropriate?
Should the input validation and menu functions be in a separate library?
GRADING –
• Programming style and documentation (10%)
• Build the array (10%)
• Input validation function(s) (5%)
• Create the source and header file for the Ant class (10%)
• Displays each step correctly, including running for the correct number of steps (10%)
• The display allows the user to see the change(s) in the shape(s) (10%)
• Allow the user to specify the starting location of the pattern (10%)
• Allow the user to allow a random location of the pattern (10%)
• Implement a menu function to be reused in later programs (5%)
• Reflections document to include the design description, test plan, test results, and comments about how you resolved problems during the assignment (20%)
HINTS:
1. Use the grading breakdown to plan your program. Use incremental development. Get one part working. Test it. Save a copy and continue working on the next step in your plan. This ensures you will have something to submit!
2. Be very careful about borrowing any code, or ideas you see in someone else’s code. This is a problem used for researching mathematical topics; proofs?, “a two dimensional Turing machine”, “Cohen–Kong theorem”, proofs! Much more complicated than required for this project. As always, any code submitted must be yours and yours alone.
Suggested plan to design and code this project:
First. Get a pencil and some paper. Seriously. Low tech but it works. Develop an algorithm to apply the rules Answer the questions about the Ant; knowing the direction it is moving, and saving the color of the cell it is in. You’re not finished with the design yet!
Now that you have your algorithms developed convert them to pseudocode or flowcharts are whatever system you chose to represent program logic. Walk through your pseudocode. Did you miss any details? It’s much easier to find and fix logic errors now.
Now it is time to dig out the keyboard and start entering code.




Reviews
There are no reviews yet.