PowerShell/scripts/write-xmas-tree.ps1

44 lines
1.3 KiB
PowerShell
Raw Permalink Normal View History

2024-11-18 13:16:59 +01:00
<#
.SYNOPSIS
Writes a Xmas tree
.DESCRIPTION
This PowerShell script writes a christmas tree to the terminal.
.EXAMPLE
PS> ./write-xmas-tree.ps1
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
2024-11-18 07:42:17 +01:00
2024-11-18 13:16:59 +01:00
param( [array]$Size=@(21,8,4), # tree height, trunk width, trunk height
[int]$XPos=50, # starting x position
[array]$colors = @("blue", "green", "cyan", "red", "yellow", "magenta"),
[int]$Idx = (Get-Random -Min 0 -Max ($colors.Length-1)),
[int]$count = 100,
[int]$duration = 250) # ms
2024-11-18 07:42:17 +01:00
2024-11-18 08:05:06 +01:00
Clear-Host
do {
[console]::SetCursorPosition(0,0)
2024-11-18 13:16:59 +01:00
Write-Host "`n`t`t`tMerry Christmas" -foregroundColor yellow
Write-Host "`t`t`t &" -foregroundColor yellow
Write-Host "`t`t`t Happy New Year" -foregroundColor yellow
for ( $i=1; $i -le $Size[0]; $i++ ) {
$line = " " * ($XPos - $i) + "*" * ($i * 2)
$Idx = $Idx % $colors.Length
Write-Host $line -foregroundColor $colors[$Idx]
$Idx++
}
2024-11-18 07:42:17 +01:00
2024-11-18 13:16:59 +01:00
for ( $j=1; $j -le $Size[2]; $j++ ){
$line = " " * ( $XPos - ( $Size[1] / 2 ) ) + "#" * $Size[1]
Write-Host $line -foregroundColor DarkGreen
}
2024-11-18 07:42:17 +01:00
2024-11-18 08:05:06 +01:00
Start-Sleep -milliseconds $duration
$count--
} while ($count -gt 0)
2024-11-18 07:42:17 +01:00