CS计算机代考程序代写 Java package parser;

package parser;
import java.util.Arrays;

/**
* This captures the state of the pointer and the trace of its movement.
* IMPORTANT: This class is incomplete. Please look for “TODO” comments.
*
*
*/
public class Screen {
public static final String NON_VISITED_MARK = “#”;
public static final String VISITED_MARK = “.”;

public int noOfRows;
public int noOfColumns;
public Pointer pointer;
public String[][] trace;

public Screen (int noOfRows, int noOfColumns, Pointer pointer) throws OutOfScreenException {
this.noOfRows = noOfRows;
this.noOfColumns = noOfColumns;
this.pointer = pointer;

this.trace = new String[noOfRows][noOfColumns];
for (String[] row : trace) {
Arrays.fill(row, NON_VISITED_MARK);
}

// mark initial position
if (this.pointer.isPenDown) this.markVisistedPos(pointer.position);
}

/**
* Mark the current position as visited.
* @param position
* @throws Exception
*/
public void markVisistedPos(Position p) throws OutOfScreenException {
if (p.x >= 0 && p.x < noOfRows && p.y >= 0 && p.y < noOfColumns) { trace[p.x][p.y] = VISITED_MARK; } else { throw new OutOfScreenException(); } } /** * NOTE: It inserts a new line character after every row including the last one. * @see {@link ScreenTest} for the expected result * @return a string representing the screen including pointer's visited positions, its current position and direction. */ public String trace() { // TODO: Add your implementation here. // Hints: append "\n" to create a new line in string // Note that {@link ScreenTest} doesn't require complete implementation of parser. // Check the expected outcome in ScreenTest.java } }