飞扬围棋

标题: 来一个棋谱结构 [打印本页]

作者: ywqz    时间: 2003-9-8 09:01
标题: 来一个棋谱结构
//vc6 code

#define COMMENTSIZE_SGF 16

typedef struct SGFProperty_t {
        struct SGFProperty_t *next;
        short name;
        char  value[COMMENTSIZE_SGF];
} SGFProperty;

typedef struct SGFNode_t {
        SGFProperty_t      *props;
        struct SGFNode_t *parent;
        struct SGFNode_t *child;
        struct SGFNode_t *brother;
} SGFNode;

class NodeCounter
{//集中new节点、属性,统一利用,最后集中销毁
public:
        NodeCounter()
        {
                m_count ++;
        }
        ~NodeCounter()
        {
                m_count --;
                if(m_count == 0)
                {
                        while(m_dGnode != NULL)
                        {
                                SGFNode *p = m_dGnode;
                                m_dGnode = m_dGnode->child;
                                delete []p;
                        }
                        while(m_dPnode != NULL)
                        {
                                SGFProperty *p = m_dPnode;
                                m_dGnode = m_dPnode->next;
                                delete []p;
                        }
                }
        }

        int GetObjectCount(){ return m_count;};
        int GetGNodeCount(){ return m_Gnodecount;};
        int GetPNodeCount(){ return m_Pnodecount;};

        static SGFNode* sgfNewQipuNode();
        static void sgfFreeQipuNode(SGFNode *node);
        static SGFProperty * sgfPNode();
        static void sgfFreePNode(SGFProperty *node);
private:
        static int m_count;
        static int m_Gstep; //=10*1.5^No.1
        static int m_Gnodecount;        //已用节点个数
        static SGFNode* m_Gnode;        //空闲的节点串
        static SGFNode* m_dGnode;        //取数组的第一个节点(不作它用)串联,作最后删除用
        static int m_Pstep; //=10*1.5^No.2
        static int m_Pnodecount;
        static SGFProperty * m_Pnode;
        static SGFProperty * m_dPnode;
};
class CSGFTree  
{
public:
        CSGFTree();
        virtual ~CSGFTree();
public:
        //记录棋谱
        SGFNode *root;
        SGFNode *lastnode;
protected:
        NodeCounter m_nodecouter;
public:
        //...
}
作者: 郝搏生    时间: 2003-9-12 11:52
先收藏着,以后慢慢研究。
作者: ywqz    时间: 2003-9-12 12:15
昨天上传的程序,里面有全部代码
作者: 郝搏生    时间: 2003-9-12 13:48
多谢了!

另,老兄什么时候混了个 Member 呢?是不是过几个月就送你一个啊?
作者: ywqz    时间: 2003-9-15 15:17
以下是引用郝搏生在2003-9-12 13:48:39的发言:
另,老兄什么时候混了个 Member 呢?是不是过几个月就送你一个啊?

说什么呀?没搞懂,请详解
作者: 郝搏生    时间: 2003-9-15 15:20
-->
头衔:Member

是说你的头衔呢!
作者: ywqz    时间: 2003-9-15 15:21
哦,我就懒得没改过
作者: ywqz    时间: 2003-9-15 15:27
改一改,头像也改一改,哈哈
作者: 郝搏生    时间: 2003-9-15 15:28
噢,原来如此。
作者: shaoys    时间: 2003-9-17 21:04
看不懂!




欢迎光临 飞扬围棋 (http://flygo.net/bbS/) Powered by Discuz! X3.2