Mesoscopic Programming

タコさんプログラミング専門

ヌメロン製作講座第23回:Double アイテム処理

今回は Double アイテム処理を実装します。

プレイ画面

Double アイテムを使用した例です。

修正ソースファイル
  1. Numer0n.h
  2. Numer0n.cpp
  3. main.h
  4. main.cpp


enum ErrorID(ファイル読込みエラーコード)

棋譜データファイル読込み時の以下のエラーコードを追加しました。

  1. ERR_DOUBLE_RANK
    • Double アイテムの位数読込みエラー
  2. ERR_DOUBLE_DIGIT
    • Double アイテムの指定位の番号読込みエラー


Rank ThinkDoubleRank()

Double アイテム使用の際、相手がオープンする位を決めるためのコンピュータ思考ルーチンを追加しました。

Rank ThinkDoubleRank( MoveID move )
{
    Analyze & anal  = anals[ move ][ maxRecord ];
    int     max     = 0;
    Column  column  = 0;

    for ( int column2 = 0; column2 < maxColumn; column2++ )
    {
        for ( int digit = 0, count = 0; digit < MAX_DIGIT; digit++ )
        {
            if ( anal.valids[ column2 ][ digit ] )
            {
                if ( ++count > max )
                {
                    max     = count;
                    column  = ( Column ) column2;
                }
            }
        }
    }

    return ColumnToRank( column );
}
処理内容
  • すべての位の有効番号の数を調べ、もっとも数の多い位を選択して返す


class Numer0n(ヌメロンクラス)

Save() 関数と Load() 関数に Double アイテム対応処理を追加しました。

  1. BOOL Save( LPCTSTR path )
  2. BOOL Load( LPCTSTR path )
    • Double アイテム対応処理追加


enum EditModeID(編集モード識別子)

Double アイテム使用時の指定位の番号入力時のモードを追加しました。

  1. EDIT_DIGIT
    • 番号入力モード


struct Cell(セル構造体)

関連する既存関数に Double アイテム処理を追加しました。

  1. BOOL GetRecordText( PTCHAR text )
    • セル表示文字列取得関数
  2. BOOL GetRecordEditParam( EditParam & edit )
    • セル編集開始関数
  3. BOOL SetRecordEditData( EditParam & edit )
    • セル編集終了関数

以上です。