给不了的幸福 谢娜电脑围棋程序编写思路
荷蒲 wq.hepu
荷蒲围棋软件的编写思路。
在围棋程序的实现中,较为关键的是围棋电子棋盘的设计。其他所有功能都是围绕围棋电子棋盘展开的。电子围棋盘的核心是围棋棋盘的数据描述。
 1、首先定义围棋子信息:
#define EDGE 23        //棋盘最大格数
#define MAXMM 500  //最大手数
//color表示棋子颜,x,y表示在棋盘上的坐标
//num表示下子的顺序。=0表示提前摆放的子。
//zt 表示棋子状态
//qs 表示棋子的气数
//sm 表示有说明信息
typedef struct qizi
{
int color,x,y,num,zt,qs,sm;
} qizi;
qizi qipu[MAXMM];  //棋谱信息
qizi qipan[EDGE][EDGE];  //棋盘信息
 
2、紧接着要考虑的是下棋相关信息。
  int nk=0;      //显示棋子序号,nk=2显示序号,1=气数
    int BoardLines=19;        //棋盘线数,默认19
    bool ComputerPlaying;  //1=该计算机下  0=人下
    bool Computerp1=0;  //1=计算机下黑  0=人下
    bool Computerp2=0;  //1=计算机下白历届奥斯卡影帝  0=人下
    int PlayType=0;    //2=-人,1=-计算机,13=-网络,0=没有开始,-1=删除棋盘上死子,-2=暂停,3=布黑子,4=布白子,9=演示,11=学习
    int PlayType1=0;    //2=-人到中年的感悟人,1=-计算机,13=-网络,0=没有开始,-1=删除棋盘上死子,-2=暂停,3=布黑子,4=布白子,11=学习
    int MoveCount,MoveCount1;          //计步器,记录落子手数,自然顺序
    int Playnum=0,Playnum1=0;  //要标识的围棋手数,下棋顺序
    int CurrentX;          //记录热子X坐标,
    int CurrentY;          //记录热子Y坐标
    char CurrentWho;        //记录当前棋子颜,0=  1=  2=空(终局等,待写)
    char CurrentWho1; //备份上一次CurrentWho
    int timew=0,timeb=0; //计时器设定数据
    int sdy1=0,sdy2=0; //学习功能上使用
    int gz;    //规则0=中国规则,1=江疏影视频曝光日本规则,2=应氏规则
    bool plays1=true;  //学习持黑
    bool plays2=false;  //学习持白
 
3、围棋电子棋盘的数据初始化。
//数据初始化
void wqinit(void) 长沙有什么好玩的
{
BoardLines=19;  //19X19路标准围棋盘
MoveCount=0;    //一步棋未下,自然顺序
MoveCount1=0;    //一步棋未下
ComputerPlaying=1;    //默认电脑执黑先行
CurrentWho=0;        //默认黑先;  黑方=0;白方=1;空方=2
CurrentX=0;          //当前一步棋的X含有一对反义词的成语坐标,水平从左至右为1...19
CurrentY=0;          //当前一步棋的Y坐标,垂直从上到下为1...19
timew=0,timeb=0;
Playnum=0;  //下棋顺序
Playnum1=0;
//下面是棋盘初始化
  for (int i=0;i<=BoardLines;i++)