Private/GetSudokuMove.ps1
<# .SYNOPSIS Gets a user's number placement. .DESCRIPTION Gets a user's number placement ensuring numbers are between 1 and 9 (inclusive) .PARAMETER SudokuGrid The current state of the Sudoku Grid. .EXAMPLE $SudokuPlay = GetSudokuMove -SudokuGrid $Grid .INPUTS Takes in a Sudoku Board .OUTPUTS Returns a 2d Tuple, with [0] being the number to place and [1] being the row, column to place at. #> Function GetSudokuMove { param( [parameter(Mandatory=$true)] [System.Object]$SudokuGrid, [parameter(Mandatory=$true)] [System.Object]$OriginalGrid ) $Counter = 0 while($true) { $Counter++ if ($Counter %3 -eq 0) { PrintSudokuGridUI -SudokuGrid $SudokuGrid -OriginalGrid $OriginalGrid } $Row, $Column, $NumToPlace = $null, $null, $null $Row = Read-Host -Prompt "Enter row placement(1-9)" if ($Row -eq '-hint' -or $Row -eq '-solve') { return $Row } $Column = Read-Host -Prompt "Enter column placement(1-9)" if ($Column -eq '-hint' -or $Column -eq '-solve') { return $Column } $NumToPlace = Read-Host -Prompt "Enter the number to place (1-9)" if ($NumToPlace -eq '-hint' -or $NumToPlace -eq '-solve') { return $NumToPlace } Try { $Row, $Column, $NumToPlace = [int32]$Row, [int32]$Column, [int32]$NumToPlace } Catch { Write-Error "Row, Column, and Number must be a number between 1-9, '-hint', or '-solve'" } if ($OriginalGrid[$Row-1][$Column-1] -ne '-') { Write-Error "You cannot modify this number as it is part of the original board." continue } if (($Row -lt 10 -and $Row -gt 0) -and ($Column -lt 10 -and $Column -gt 0) -and ($NumToPlace -lt 10 -and $NumToPlace -gt 0) ) { $Placement = [System.Tuple]::Create($Row, $Column) return @($NumToPlace, $Placement) } Write-Error "Row, Column, and Number must be between 1-9 (inclusive)" } } |