Osero Object Class

Osero Object Class を作成します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

Object Class の領域

  1. Osero Object Class の protected 領域です。
        HWND    hWnd;
        char    T[8][8];                //OSEROの盤を定義
        HPEN    bPen,wPen,grPen;        //黒、白、灰色のペン
        HBRUSH  bBrush,wBrush,gBrush;   //黒、白、緑のブラシ
        RECT    rcBox;                  //盤の罫線部分
        

    T[8][8] はオセロ盤の定義です。
    盤上のコマは、次のように表現します。
    盤上のコマ格納する値
    コマが置かれていない所  0
    黒のコマが置かれている所  1
    白のコマが置かれている所 -1

    HPEN, HBRUSH は盤とコマを描画するためのペンとブラシです。
    rcBox は盤の罫線部分を定義する矩形です。

  2. Osero Object Class の public 領域です。
        UINT    Ypos,Xpos;              //OSERO盤の座標
        int     TEBAN;                  //手番(1:黒  -1:白)
        int     SHIRO_C,KURO_C;         //終了時の駒数
        

    Ypos,Xpos はオセロ盤の座標計算の結果を格納する領域です。
    TEBAN は黒白の手番を格納する領域です。
    SHIRO_C,KURO_C はゲームが終了した時の駒をカウントする領域です。

Object Class のメンバ関数

    public メンバ関数です。

  1. Constructor です。
    Pen や Brush を作成します。
    Init() で初期化します。
    OseroApp(HWND hwnd);
  2. Destructor です。
    Pen や Brush を削除します。
    ~OseroApp();
  3. オセロ盤を初期設定して、手番を設定します。
    void Init();
  4. オセロの盤とコマの表示です。
    void Disp(HDC);
  5. クリックした位置(pt)を盤の座標に変換して Xpos Ypos に格納します。
    void SetPos(POINT pt);
  6. コマが置けるかチェックします。
    正しいプレイのとき、挟んだコマを裏返します。
    エラーとパスと終局を判定してリターンコードで返します。
    リターン値意味
    正常にプレイしたとき
    その場所にコマを置けないとき
    手番側がパスのとき
    終局のとき
    int Check_Play(int c, int x, int y);
    int Check_Play() { return(Check_Play(TEBAN,Xpos,Ypos)); }

    protected メンバ関数です。

  7. 一個の駒を表示します。
    void Koma(HDC hdc, UINT x, UINT y, HBRUSH brush1, HBRUSH brush2);
  8. 置けるかどうかをチェックします。
    この関数は Check_Play() から呼び出されます。
    リターン値が FALSE のときは、置くことができません。
    int Check(UINT x, UINT y, int c, char t[8][8]);
  9. t[y][x] に駒を置いて、挟んだ駒を裏返します。
    この関数は Check_Play() から呼び出されます。
    リターン値が TRUE のときは正常終了で FALSE のときはエラーです。
    int Reverse(UINT x, UINT y, int c, char t[8][8]);

[Next Chapter ↓] 「オセロバトルゲーム」の説明
[Previous Chapter ↑] 挟んだ駒を裏返す

超初心者のプログラム入門(Win32API C++)