PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2008-05-15

[][]オセロゲームを作ろう(5):スクリーンバッファ操作(3)

スクリーンバッファの操作

前回に引き続き、前々回紹介した、スクリーンバッファ操作のサンプルについて解説します。

スクリーンバッファリストア

# スクリーンバッファリストア
function Restore-ScrBuf()
{
    Clear-Host
    $origin = New-Object System.Management.Automation.Host.Coordinates(0, 0)
    $rui.SetBufferContents($origin, $script:screen)
    $pos = New-Object System.Management.Automation.Host.Coordinates(0, $script:screen.GetUpperBound(0))
    $rui.CursorPosition = $pos
}

Restore-ScrBuf関数は、Backup-ScrBuf関数バックアップしたスクリーンバッファリストアします。

手順は以下です。

  1. コンソールのクリア(Clear-Host)
  2. スクリーンバッファの描画座標の生成(Coordinatesオブジェクト
  3. スクリーンバッファの描画(SetBufferContentsメソッド)
  4. カーソル位置を描画領域の最終行に移動(CursorPositionプロパティ

まず、Clear-Host関数でコンソールをクリアします。

描画座標はコンソール左上ですので、X=0,Y=0のCoordinatesオブジェクトを生成します。

次に、SetBufferContentsメソッドでスクリーンバッファを描画します。

SetBufferContentsメソッド
System.Void SetBufferContents(Coordinates origin, BufferCell[,] contents)
System.Void SetBufferContents(Rectangle r, BufferCell fill)

SetBufferContentsメソッドは2種類ありますが、今回利用するのは前者で、

引数は、描画座標(Coordinatesオブジェクト)とスクリーンバッファ(BufferCellオブジェクトの2次元配列)です。


最後に、カーソル位置を描画領域の最終行に移動します。

最終行は、リストアするスクリーンバッファの1次元目の最終配列要素(最終行)になります。


つづく。。。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/newpops/20080515/p1