当前位置: 首页>>代码示例>>C++>>正文


C++ Stage::items方法代码示例

本文整理汇总了C++中Stage::items方法的典型用法代码示例。如果您正苦于以下问题:C++ Stage::items方法的具体用法?C++ Stage::items怎么用?C++ Stage::items使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Stage的用法示例。


在下文中一共展示了Stage::items方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: writeStart

    //------------------------------------------------------------------------------
    /// ステージの記録を開始することを通知します。
    ///
    /// @param[in] aStage 現在実行しているステージを表す Stage クラスへの参照。
    void RecordStage::writeStart(const Stage& aStage)
    {
#ifdef DEBUG
        mField.set(aStage.field());
        mItems.set(aStage.items());
#endif
    }
开发者ID:jinopapo,项目名称:marathon,代码行数:11,代码来源:HPCRecordStage.cpp

示例2: Setup

    //------------------------------------------------------------------------------
    /// 渡された Stage に対しマップを生成します。
    ///
    /// @param[in]      aNumber ステージ番号
    /// @param[in,out]  aStage  ステージ情報。関数を呼ぶと書き換えられます。
    /// @param[in,out]  aRandom 乱数
    void LevelDesigner::Setup(int aNumber, Stage& aStage, Random& aRandom)
    {
        int width = Parameter::FieldWidthMin;
        width += aRandom.randTerm((Parameter::FieldWidthMax - Parameter::FieldWidthMin) / 4 + 1) * 4;
        int height = Parameter::FieldHeightMin;
        height += aRandom.randTerm((Parameter::FieldHeightMax - Parameter::FieldHeightMin) / 4 + 1) * 4;

        // ステージ番号から、壁密度、時間帯指定されている荷物の割合、荷物数を決める。
        int wallDensityIndex = aNumber % Parameter::WallDensityMax;
        int periodSpecifiedIndex = (aNumber / Parameter::WallDensityMax) % Parameter::PeriodSpecifiedMax;
        int itemCountIndex = (aNumber / (Parameter::WallDensityMax * Parameter::PeriodSpecifiedMax)) % Parameter::ItemCountMax;

        // wallDensity は 0 にはならないようにする。あまりにも壁がない迷路になるため。
        int wallDensity = (wallDensityIndex + 1) * (100 / Parameter::WallDensityMax);

        // 時間帯指定されている荷物の個数。割合がそのまま適用される。端数は切り捨て。
        int itemCount = itemCountIndex + 1;
        int periodSpecifiedCount = itemCount * periodSpecifiedIndex / (Parameter::PeriodSpecifiedMax - 1);

        // フィールド生成
        aStage.field().setup(width, height, wallDensity, aRandom);

        // 荷物の生成
        aStage.items().reset();
        int weightHistogram[Parameter::ItemWeightMax + 1] = { 0 };
        int itemWeights[Parameter::ItemCountMax];
        int periodSpecs[Parameter::ItemCountMax];
        for (int i = 0; i < itemCount; ++i) {
            int w;
            do {
                w = aRandom.randMinMax(Parameter::ItemWeightMin, Parameter::ItemWeightMax);
            } while (weightHistogram[w] >= Parameter::WeightHistogramMax);
            itemWeights[i] = w;
            weightHistogram[w]++;
            periodSpecs[i] = -1;
        }

        // 時間帯指定を決める。
        int periodItemWeightSum[Parameter::PeriodCount] = { 0 };
        for (int i = 0; i < periodSpecifiedCount; ++i) {
            for (;;) {
                int ix = aRandom.randTerm(itemCount);
                if (periodSpecs[ix] == -1) {
                    int p = aRandom.randTerm(Parameter::PeriodCount);
                    if (periodItemWeightSum[p] + itemWeights[ix] <= Parameter::TruckWeightCapacity) {
                        periodSpecs[ix] = p;
                        periodItemWeightSum[p] += itemWeights[ix];
                        break;
                    }
                }
            }
        }

        // 荷物を生成
        for (int i = 0; i < itemCount; i++) {
            Pos pos;
            for (;;) {
                int x = aRandom.randTerm(width);
                int y = aRandom.randTerm(height);
                pos = Pos(x, y);
                if (aStage.field().isWall(pos)) {
                    continue;
                }
                if (aStage.field().officePos() == pos) {
                    continue;
                }
                bool overlaps = false;
                for (int j = 0; j < i; ++j) {
                    if (aStage.items()[j].destination() == pos) {
                        overlaps = true;
                        break;
                    }
                }
                if (overlaps) {
                    continue;
                }
                break;
            }
            aStage.items().addItem(pos, periodSpecs[i], itemWeights[i]);
        }
    }
开发者ID:mt-bay,项目名称:HPC2015,代码行数:87,代码来源:HPCLevelDesigner.cpp

示例3: Init

 //------------------------------------------------------------------------------
 /// 各ステージ開始時に呼び出されます。
 ///
 /// ここで、各ステージに対して初期処理を行うことができます。
 ///
 /// @param[in] aStage 現在のステージ。
 void Answer::Init(const Stage& aStage)
 {
     choose_item(aStage.field(), aStage.items());
     //std::cout << "num. of item : " << aStage.items().count() << std::endl;
     
 }
开发者ID:mt-bay,项目名称:HPC2015,代码行数:12,代码来源:160104_0200.cpp


注:本文中的Stage::items方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。