Parameter.hpp

//------------------------------------------------------------------------------
/// @file
/// @author   ハル研究所プログラミングコンテスト実行委員会
///
/// @copyright  Copyright (c) 2018 HAL Laboratory, Inc.
/// @attention  このファイルの利用は、同梱のREADMEにある
///             利用条件に従ってください。
//------------------------------------------------------------------------------
#pragma once

//------------------------------------------------------------------------------
namespace hpc {

/// ゲームのパラメータ一覧。
class Parameter
{
public:
    /// @name ステージ設定
    //@{
    /// ステージ数。
    static const int GameStageCount = 20;
    /// ステージごとのターン数。
    static const int GameTurnLimit = 1000;
    //@}

    /// @name オーブン設定
    //@{
    /// 天板の横幅。
    static const int OvenWidth = 20;
    /// 天板の縦幅。
    static const int OvenHeight = 20;
    /// 天板の面積。
    static const int OvenCellCount = OvenWidth * OvenHeight;
    //@}

    /// @name 生地設定
    //@{
    /// 生地置き場がプレイヤーに公開している生地の数。
    static const int CandidatePieceCount = 8;
    /// 生地の長辺+短辺を折る位置の中央値の最小値。
    static const float MinPieceFoldPosRateCenter;
    /// 生地の長辺+短辺を折る位置の中央値の最大値。
    static const float MaxPieceFoldPosRateCenter;
    /// 生地の長辺+短辺を折る位置の幅の最小値。
    static const float MinPieceFoldPosRateRange;
    /// 生地の長辺+短辺を折る位置の幅の最大値。
    static const float MaxPieceFoldPosRateRange;
    //@}

    /// @name 小型生地専用設定
    //@{
    /// 基準正方形の一辺の長さの最小値。
    static const int MinSmallPieceSampleEdgeLength = 2;
    /// 基準正方形の一辺の長さの最大値。
    static const int MaxSmallPieceSampleEdgeLength = 5;
    /// 原始スコアの最小値。
    static const int MinSmallPiecePrimalScore = 27;
    /// 原始スコアの最大値。
    static const int MaxSmallPiecePrimalScore = 45;
    /// スコア換算係数の中央値。
    static const float SmallPieceScoreCoeffCenter;
    /// スコア換算係数の幅。
    static const float SmallPieceScoreCoeffRange;
    //@}

    /// @name 大型生地専用設定
    //@{
    /// 基準正方形の一辺の長さの最小値。
    static const int MinLargePieceSampleEdgeLength = 7;
    /// 基準正方形の一辺の長さの最大値。
    static const int MaxLargePieceSampleEdgeLength = 10;
    /// 原始スコアの最小値。
    static const int MinLargePiecePrimalScore = 1280;
    /// 原始スコアの最大値。
    static const int MaxLargePiecePrimalScore = 1920;
    /// スコア換算係数の中央値の最小値。
    static const float MinLargePieceScoreCoeffCenter;
    /// スコア換算係数の中央値の最大値。
    static const float MaxLargePieceScoreCoeffCenter;
    /// スコア換算係数の幅。
    static const float LargePieceScoreCoeffRange;
    //@}
};

} // namespace
// EOF