Mesoscopic Programming

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

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

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

プレイ画面

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

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


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

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

  1. ERR_SLASH_NUMBER
    • Slash アイテムのスラッシュナンバー読込みエラー


struct Analyze(分析データ構造体)

Slash アイテム対応処理を追加しました。

  1. VOID AddData( BOOL * buffer, Number maxNumber, MoveID move, const Record & record );
    1. Slash アイテム対応処理追加

VOID Analyze :: AddData()

VOID Analyze :: AddData( BOOL * buffer, Number maxNumber, MoveID move, const Record & record )
{
    ~中略~

    else if ( record.did == DATA_ITEM_SLASH )
    {
        for ( int number = 0; number < maxNumber; number++ )
        {
            if ( buffer[ number ] )
            {
                NumberToArray( number, array );

                min = DIGIT_9;
                max = DIGIT_0;

                for ( int column = 0; column < maxColumn; column++ )
                {
                    if ( array[ column ] < min )
                    {
                        min = array[ column ];
                    }

                    if ( array[ column ] > max )
                    {
                        max = array[ column ];
                    }
                }

                if ( max - min != record.itemSlash.slash )
                {
                    buffer[ number ] = FALSE;
                }
            }
        }

        CollectCandidate( buffer, maxNumber );
        ValidateByCandidate( buffer, maxNumber );
    }

    ~中略~
}
処理内容
  • すべての正解候補ナンバーのスラッシュナンバーを与えられたスラッシュナンバーと比較して不一致ならば除外する


class Numer0n(ヌメロンクラス)

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

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


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

Slash アイテム使用時のスラッシュナンバー入力モードを追加しました。

  1. EDIT_SLASH
    • スラッシュナンバー入力モード


struct Cell(セル構造体)

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

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

以上です。