gridstatus.h

来自「Source code (C++) of the Amoebax game fo」· C头文件 代码 · 共 98 行

H
98
字号
//// Cross-platform free Puyo-Puyo clone.// Copyright (C) 2006, 2007 Emma's software//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//#if !defined (AMOEBAX_GRID_STATUS_H)#define AMOEBAX_GRID_STATUS_H#include <vector>#include "Amoeba.h"#include "Grid.h"namespace Amoebax{    ///    /// \class GridStatus    /// \brief Stores the state of a grid.    ///    /// This class is mainly used for AI players to check different    /// possible combinations of amoebas in order to compute the    /// best result.  It stores the state of a grid (i.e., where the    /// amoebas are in a given time) and lets perform "simulations"    /// on this grid state.    ///    class GridStatus    {        public:            /// The position (x, y) of a amoeba in the grid.            typedef std::pair<int16_t, int16_t> Position;            /// A Group of amoebas identified by they position.            typedef std::vector<Position> Group;            ///            /// \struct PositionResult            /// \brief The result of a position check.            ///            /// This struct is used to check the results of            /// making fall a pair to a position. This structure            /// is mainly used for AI players.            ///            struct PositionResult            {                /// Ghost amoebas removed.                uint16_t ghostAmoebasRemoved;                /// The groups of same coloured amoebas that are less of 4.                std::vector<uint16_t> groups;                /// The total of amoebas that are forming a group.                uint16_t groupsAmoebasNumber;                /// The maximum height from all columns.                uint16_t heightMax;                /// The mean height form all column.                uint16_t heightMean;                /// The height of the 3rd column.                uint16_t heightThirdColumn;                /// The steps chains and their size. If no step chain was formed, the first element is 0.                std::vector<uint16_t> stepChains;            };            explicit GridStatus ();            explicit GridStatus (const std::vector<Amoeba::Colour> &state);            void checkPositions (const Grid::FallingAmoeba &main,                                 const Grid::FallingAmoeba &satellite,                                 PositionResult &result);        private:            Group findFloatingAmoebas (void) const;            Amoeba::Colour getAmoebaColourAt (int16_t x, int16_t y) const;            std::vector<Group> makeFloatingAmoebasFall (const Group &floatingAmoebas);            void makeGroup (Group &group,                            Group &ghosts,                            int16_t x, int16_t y,                            std::set<Position> &visitedPositions,                            Amoeba::Colour groupColour = Amoeba::ColourNone,                            bool initialAmoeba = true);            void removeAmoebaGroup (const Group &group);            void setAmoebaColourAt (int16_t x, int16_t y, Amoeba::Colour colour);            /// The current grid's state.            std::vector<Amoeba::Colour> m_State;    };}#endif // !AMOEBAX_GRID_STATUS_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?