飞扬围棋
标题:
来一个棋谱结构
[打印本页]
作者:
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