diff --git a/Scripts/write-matrix.ps1 b/Scripts/write-matrix.ps1 index b444372e..b9bdfde6 100755 --- a/Scripts/write-matrix.ps1 +++ b/Scripts/write-matrix.ps1 @@ -4,27 +4,27 @@ .DESCRIPTION This PowerShell script writes the animated Matrix. .EXAMPLE - PS> ./write-fractal + PS> ./write-matrix.ps1 .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> -function CalculateMatrix { param([int]$Pos, [char]$Letter) - [int]$maxx = $rui.MaxWindowSize.Width - [int]$maxy = $rui.MaxWindowSize.Height +function CalculateMatrix { param([int]$pos, [char]$letter) + [int]$width = $rui.MaxWindowSize.Width + [int]$height = $rui.MaxWindowSize.Height [int]$y = 0 - for ([int]$x = 0; $x -lt $maxx; $x++) { - if ($x -eq $Pos) { - $global:buf[$y * $maxx + $x] = $Letter + for ([int]$x = 0; $x -lt $width; $x++) { + if ($x -eq $pos) { + $global:buf[$y * $width + $x] = $letter } else { - $global:buf[$y * $maxx + $x] = [char]32 + $global:buf[$y * $width + $x] = [char]32 } } - for ([int]$y = ($maxy - 1); $y -gt 0; $y--) { - for ([int]$x = 0; $x -lt $maxx; $x++) { - $global:buf[$y * $maxx + $x] = $global:buf[($y - 1) * $maxx + $x] + for ([int]$y = ($height - 1); $y -gt 0; $y--) { + for ([int]$x = 0; $x -lt $width; $x++) { + $global:buf[$y * $width + $x] = $global:buf[($y - 1) * $width + $x] } } } @@ -44,17 +44,18 @@ function NextLetter { $ui = (Get-Host).ui $rui = $ui.rawui $buffer0 = "" -1..($rui.MaxWindowSize.Width * $rui.MaxWindowSize.Height) | ForEach-Object { $buffer0 += " " } +1..($rui.MaxWindowSize.Width * $rui.MaxWindowSize.Height) | foreach { $buffer0 += " " } $global:buf = $buffer0.ToCharArray() $global:generator = New-Object System.Random $global:pos = [int]$global:generator.next(0, $rui.MaxWindowSize.Width) $global:index = 0 while ($true) { - $Letter = NextLetter - CalculateMatrix $global:pos $Letter + $letter = NextLetter + CalculateMatrix $global:pos $letter [console]::SetCursorPosition(0,0) - [string]$Screen = New-Object system.string($global:buf, 0, $global:buf.Length) - Write-Host -foreground green $Screen -noNewline + [string]$screen = New-Object system.string($global:buf, 0, $global:buf.Length) + Write-Host -foreground green $screen -noNewline + Start-Sleep -milliseconds 30 } exit 0 # success \ No newline at end of file