Mesoscopic Programming

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

ヌメロン製作講座第28回(最終回?):何らかの処理

今回は何らかの処理を実装します。

何らかの処理とは入力エラーチェックとかです。
あとメニューバーの更新とか。
それとデータ変更時の保存チェックとか。
変な値が入力できないように一応ひと通りチェックしました。
コンピュータの思考ルーチンはほぼランダムですがそこそこ遊べるようです。
アイテムの数は各々が9個まで対応してますんで番組のヌメロンで飽き足らない方は試してみる価値ありです。
今回で基本的に終了です。
あとは思考ルーチンの改良とかですか。

プレイ画面

何らかを使用した例です。

修正ソースファイル

何らかを修正しました。

  1. Numer0n.h
  2. Numer0n.cpp
  3. main.h
  4. main.cpp


class Numer0n(ヌメロンクラス)

棋譜データファイルのセーブ/ロード関係の修正。
設定ナンバーまわりの書式変更とコメント対応など。

  1. VOID ConvDataText( LPCTSTR src, PTCHAR dst )
    • 文字列中のダブルクォートを \ マーク付きに変換する関数を追加
  2. BOOL Save( LPCTSTR path )
  3. BOOL Load( LPCTSTR path )
  4. DataID ReadData( PTCHAR text )
    • 設定ナンバーの書式変更とコメント対応処理追加

VOID Numer0n :: ConvDataText()

棋譜データファイルに文字列を保存するとき、文字列中にダブルクォートが入ってると文字列の終了と見なされるのを回避するために \ マークを付けました。

VOID Numer0n :: ConvDataText( LPCTSTR src, PTCHAR dst )
{
    for ( ; * src; )
    {
        if ( * src == '\"' )
        {
            * dst++ = '\\';
        }
        else if ( _ismbblead( * src ) )
        {
            * dst++ = * src++;
        }

        * dst++ = * src++;
    }

    * dst = '\0';
}
処理内容
  • ソース文字列中にダブルクォートを発見したらその前に \ マークを付けてデスティネーション側にコピーする

enum DataID(棋譜データファイル項目識別子)

棋譜データファイルのコメントに対応するため以下の項目を追加しました。

  1. DATA_COMMENT


グローバル関数

  1. ItemID ThinkAttackItem( MoveID move )
    • 攻撃アイテム使用判断思考ルーチン追加
  2. ItemID ThinkDefenseItem( MoveID move )
    • 防御アイテム使用判断思考ルーチン追加

struct Cell(セル構造体)

修正

  1. BOOL GetRecordEditParam( EditParam & edit )
    • コンピュータのアイテム使用判断思考ルーチン対応


class Grid(グリッドクラス)

バグ修正

  1. int Grid :: HitTest( int x, int y )
    • Y座標判定の単純ミス修正


以上です。