This lab is due one week from the start of your lab.
There is a flood happening and you have to figure out what areas will be affected. You’ll be provided a map indicating where the flooding is coming from and where the high grounds and low grounds are in order to figure which area will be flooded.
• Num rows and columns indicate the maps dimensions
• Start row and column are where flooding begins
• Water amount is how many spaces this flood could fill
• The row and columns coordinates range from 0 to (numRows-1) and 0 to (numCols-1)
• The top left of the map would be considered 0,0
The map consists of:
• Spaces (‘ ‘) = low ground, the areas that water can move into
• H = High ground, water cannot flood or cross over
A file is invalid and the program should end with an error message if…
• if file doesn’t exist
• if numRows are less than 1
• if numCols are less than 1
• if start position is not within range
You may assume the map characters match the parameters given above.
• Flooding starts at the start position
• Water only moves orthogonally (up, right, down, or left) not diagonally
• You must check for valid moves in the order: up, right, down, left
• You cannot move through the high ground
• If you run out of water the flooding stops
• If no more spaces can be flooded, the flooding stops
• Remember, the water cannot cross the high ground!
After receiving a file from command you will output the path of the flood to the screen. Every space that was flooded will have a ‘~’ to indicate it was flooded.
Also, indicate if the flood ran out of water or if it flooded the accessible area completely.
I’ve provided a few examples below.
Lab Discussion Points
1. Before starting implementation, design your code base. Design a class that will be in charge of reading the file.
• Make a list of methods and member variables you think it should have
2. Design a class that, given a valid map, will traverse it.
• Make a list of member variables and method you think it should have.
3. Discuss how you plan to detect the need for backtracking should you reach a deadend in the map. What will variables/objects/arrays will need to be updated when you backtrack?
4. Discuss how you plan to detect flooding all possible spaces OR running out of water
Do not use a stack object to solve the problem; use recursion.
Emailing Your Submission
Once you have created the tarball with your submission files, email it to your TA. The email subject line must look like “[EECS 268] SubmissionName”:
[EECS 268] Lab 0#
Note that the subject should be exactly like the line above. Do not leave out any of the spaces, or the bracket characters (“[” and “]”). In the body of your email, include your name and student ID.
• 60% Correctly floods map
• 30% If possible floods until all reachable spaces are flooded
• 30% Correctly floods until out of water
• 10% Correctly detects invalid file formats
• 20% Code design
• 10% Code style and documentation
HH HH H
H HH H
Starting position: 5,4
Sample Run that runs out of water
HH HH H
Starting position: 0,4
Flood ran out of water.
Sample Run with bad start position
Invalid starting position