オセロゲームを作ろう(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でコンソールの特定領域を取得するには、以下の処理を行います。

  1. 取得する領域を指定する。(Rectangleオブジェクト)
  2. コンソールの指定領域を取得する(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桁目


つづく。。。