オセロゲームを作ろう(4):スクリーンバッファ操作(2)
スクリーンバッファの操作
前回紹介した、スクリーンバッファ操作のサンプルについて解説します。
スクリーンバッファのバックアップ
# スクリーンバッファのバックアップ
function Backup-ScrBuf()
{
$rect = New-Object System.Management.Automation.Host.Rectangle
$rect.Left = 0
$rect.Top = 0
$rect.Right = $rui.WindowSize.Width
$rect.Bottom = $rui.CursorPosition.Y
$script:screen = $rui.GetBufferContents($rect)
}
PowerShellでコンソールの特定領域を取得するには、以下の処理を行います。
- 取得する領域を指定する。(Rectangleオブジェクト)
- コンソールの指定領域を取得する(GetBufferContentsメソッド)
まず、Rectangleオブジェクトを生成し、指定領域の座標をLeft,Top,Right,Bottomプロパティに設定します。
このサンプルでは、Rightプロパティに「コンソールWindowの横幅」、Bottomプロパティに「現在カーソル位置の行」を設定することで、全描画領域を指定しています。
次に、GetBufferContentsメソッドで領域を取得します。
GetBufferContentsメソッド
System.Management.Automation.Host.BufferCell[,] GetBufferContents(Rectangle r)
引数はRectangleオブジェクトで、戻り値はBufferCellオブジェクトの2次元配列となっています。
サンプルでは、$script:screenに取得しており、内容は以下のように取得します。
$script:screen[0,5] → 1行目の6桁目 $script:screen[1,10] → 2行目の11桁目
つづく。。。