# encoding: ascii
# api: powershell
# title: tic tac toe demo
# description: update $cur variable scope to $script:cur
# version: 0.1
# type: function
# author: silvia
# license: CC0
# x-poshcode-id: 6807
# x-archived: 2017-03-25T17:18:24
# x-published: 2017-03-20T18:29:00
#
#
function frmMain_Show {
Add-Type -Assembly System.Windows.Forms
[Windows.Forms.Application]::EnableVisualStyles()
$ico = [Drawing.Icon]::ExtractAssociatedIcon(($PSHome + '\powershell.exe'))
$script:cur = $false #users switch
$btn = New-Object "Windows.Forms.Button[,]" 3, 3
$frmMain = New-Object Windows.Forms.Form
$btnPlay = New-Object Windows.Forms.Button
#
#btnPlay
#
$btnPlay.Location = New-Object Drawing.Point(78, 225)
$btnPlay.Text = "New Play"
$btnPlay.Add_Click({
$script:cur = $false
$btn | % {$_.Text = [String]::Empty}
})
#
#frmMain
#
$frmMain.ClientSize = New-Object Drawing.Size(231, 260)
$frmMain.Controls.Add($btnPlay)
$frmMain.FormBorderStyle = [Windows.Forms.FormBorderStyle]::FixedSingle
$frmMain.Icon = $ico
$frmMain.MainMenuStrip = $mnuMain
$frmMain.MaximizeBox = $false
$frmMain.MinimizeBox = $False
$frmmain.StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
$frmMain.Text = "Tic Tac Toe"
$frmMain.Add_Load({
for ($i = 0; $i -lt 3; $i++) {
for ($j = 0; $j -lt 3; $j++) {
$btn[$i, $j] = New-Object Windows.Forms.Button
$btn[$i, $j].Parent = $this
$btn[$i, $j].Left = 10 + $j * 70
$btn[$i, $j].Top = 10 + $i * 70
$btn[$i, $j].Size = New-Object Drawing.Size(70, 70)
$btn[$i, $j].Font = New-Object Drawing.Font("Microsoft Sans Serif", 27, [Drawing.FontStyle]::Bold)
$btn[$i, $j].Add_Click({
if ([String]::IsNullOrEmpty($this.Text)) {
switch ($script:cur) {
$true {
$this.ForeColor = [Drawing.Color]::Crimson
$this.Text = "O"
$script:cur = $false
}
default {
$this.ForeColor = [Drawing.Color]::DarkGreen
$this.Text = "X"
$script:cur = $true
}
} #switch
}
}) #btnX_Click
} #for
} #for
})
[void]$frmmain.ShowDialog()
}
frmMain_Show