Question: create test code for this: export class MoveType { readonly deltar: number; readonly deltac: number; constructor ( dr: number, dc: number ) { this.deltar =
create test code for this: export class MoveType
readonly deltar: number;
readonly deltac: number;
constructordr: number, dc: number
this.deltar dr;
this.deltac dc;
static parses: string: MoveType
if s "down"s "Down" return Down;
if s ups Up return Up;
if s "left"s "Left" return Left;
if s "right"s "Right" return Right;
return NoMove;
export const Down new MoveType "down";
export const Up new MoveTypeup;
export const Left new MoveType "left";
export const Right new MoveType "right";
export const NoMove new MoveType; no move is possible
export class Coordinate
readonly row: number;
readonly column: number;
constructorrow: number, column: number
this.row row;
this.column column;
export class Piece
readonly width: number;
readonly height: number;
readonly isWinner: boolean;
readonly label: string
row: number;
column: number;
constructorw: number, h: number, isWinner: boolean, label: string
this.width w;
this.height h;
this.isWinner isWinner;
this.row ;
this.column ;
this.label label
movedirection: MoveType
this.row direction.deltar
this.column direction.deltac
placerow: number, col: number
this.row row;
this.column col;
location: Coordinate
return new Coordinatethisrow, this.column
containscoord: Coordinate: boolean
for let r this.row; r this.row this.height; r
for let c this.column; c this.column this.width; c
if r coord.row && c coord.column
return true
return false nope: safe!
copy: Piece
let p new Piecethiswidth, this.height, this.isWinner, this.label;
pplacethisrow, this.column;
return p;
export class Puzzle
readonly numRows: number;
readonly numColumns: number;
readonly destination: Coordinate;
readonly finalMove: MoveType;
selected: Piece undefined
pieces: Array undefined;
constructornumRows: number, numColumns: number, destination: Coordinate, finalMove: MoveType
this.numRows numRows;
this.numColumns numColumns;
this.destination destination;
this.finalMove finalMove;
this.selected undefined;
initializepieces: Array
make sure to create NEW Piece objects
this.pieces pieces.mapp pcopy;
Determines if any piece in the puzzle covers given coordinate.
isCoveredcoord: Coordinate: boolean
if thispieces
let p: Piece undefined this.pieces.findpiece
return piece.containscoord
return p undefined
return false nothing
findlabel:string : Pieceundefined
if thispieces
return this.pieces.findpiece
return piece.label label
return undefined
Return all available moves given current state and selected Piece
availableMoves: Array
let selected this.selected
if selected undefined return
let moves: Array ;
let coord selected.location;
can move left?
let available false
if coordcolumn
available true;
for let r ; r selected.height; r
if thisisCoverednew Coordinatecoordrow r coord.column
available false
break
if available
moves.pushLeft
can move right?
if coordcolumn selected.width this.numColumns
available true;
for let r ; r selected.height; r
if thisisCoverednew Coordinatecoordrow r coord.column selected.width
available false;
break
if available
moves.pushRight;
can move up
if coordrow
available true;
for let c ; c selected.width; c
if thisisCoverednew Coordinatecoordrow coord.column c
available false;
break;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
