资源简介
[纯C语言 + Win32 API]一步一步写个围棋程序之二十二:最终代码
Pelles C 编译通过。
代码片段和文件信息
#include
#include “GoBoard.h“
int g_iBoardSize = 19; //棋盘线数
BOARDDATA g_BoardData[MAX_BOARDSIZE*MAX_BOARDSIZE]; //棋盘状态数据
int g_iStoneNumber g_iShowStoneNumber; //棋子总手数、总显示数
STONECOLOR g_cNextColor = BLACK; //下一手棋的颜色
STONEDATA g_StoneData[MAX_STONENUMBER]; //棋子信息数据
int g_iBackStoneNumber; //棋子备份总手数
STONEDATA g_BackStoneData[MAX_STONENUMBER]; //备份棋子信息数据
int g_iTempStoneNumber; //临时棋子备份总手数
STONECOLOR g_BoardExam0[MAX_BOARDSIZE*MAX_BOARDSIZE]; //点目状态各交叉点真实棋子颜色
STONECOLOR g_BoardExam2[MAX_BOARDSIZE*MAX_BOARDSIZE]; //点目状态各交叉点所属颜色
static STONECOLOR g_BoardExam1[MAX_BOARDSIZE*MAX_BOARDSIZE]; //点目状各色棋子边线
static DIRECTION g_HaveCount[MAX_BOARDSIZE*MAX_BOARDSIZE]; //算气、寻找同色子的方向标志
static bool g_NoLiberty[MAX_BOARDSIZE*MAX_BOARDSIZE]; //算气的死活标志
static int Count(unsigned char unsigned char STONECOLOR);
static int CheckLastStone(void);
static void FindSameInBoardExam0(unsigned char unsigned char STONECOLOR bool);
static STONECOLOR DecideCrossColor(unsigned char unsigned char STONECOLOR *p);
static void AddOneStone(unsigned char unsigned char STONECOLOR bool);
static void DeleteLastStone(void);
//清空棋盘状态数据
extern void ClearBoardData(void)
{
unsigned char i j;
//棋盘内数据全部归0
memset(g_BoardData 0 sizeof(g_BoardData));
//棋盘外围颜色赋 -1
j = g_iBoardSize+1;
for(i=0; i<=j; i++)
{
g_BoardData[i].c = GREY;
g_BoardData[MAKESITE(j i)].c = GREY;
g_BoardData[MAKESITE(i 0)].c = GREY;
g_BoardData[MAKESITE(i j)].c = GREY;
}
}
//清空棋子信息数据
extern void ClearStoneData(void)
{
g_iStoneNumber = g_iShowStoneNumber = 0;
g_cNextColor = BLACK;
memset(g_StoneData 0 sizeof(g_StoneData));
}
//拷贝棋子信息数据
extern void CopyStoneData(void)
{
g_iBackStoneNumber = g_iStoneNumber;
memcpy(g_BackStoneData g_StoneData sizeof(STONEDATA)*MAX_STONENUMBER);
}
//扫描 g_BoardExam,取得黑白各色子数
extern void ScanBoardExam(int *b int *w int *e)
{
unsigned char i j;
*b = *w = *e = 0;
//由真实棋子确定各色区域线
for(i=1; i<=g_iBoardSize; i++)
for(j=1; j<=g_iBoardSize; j++)
g_BoardExam1[MAKESITE(i j)] = DecideCrossColor(i j g_BoardExam0);
//确定各色区域线内空格归属该色
for(i=1; i<=g_iBoardSize; i++)
for(j=1; j<=g_iBoardSize; j++)
g_BoardExam2[MAKESITE(i j)] = DecideCrossColor(i j g_BoardExam1);
//扫描全盘数子
for(i=1; i<=g_iBoardSize; i++)
for(j=1; j<=g_iBoardSize; j++)
{
if(g_BoardExam2[MAKESITE(i j)] == BLACK)
(*b)++;
else if(g_BoardExam2[MAKESITE(i j)] == WHITE)
(*w)++;
else
(*e)++;
}
}
//初始化点目状态各交叉点真实棋子颜色
extern void InitBoardExam0(void)
{
unsigned char i j;
//盘面棋子
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14863 2012-09-26 09:10 TryHandTalk\GoBoard.c
文件 3287 2012-09-26 09:10 TryHandTalk\GoBoard.h
文件 40670 2012-09-26 09:10 TryHandTalk\main.c
文件 1583 2012-09-26 08:31 TryHandTalk\main.ppj
文件 442422 2012-09-03 18:15 TryHandTalk\res\board.bmp
文件 15550 2007-04-22 18:42 TryHandTalk\res\Dead.wav
文件 17132 2008-06-02 08:00 TryHandTalk\res\Invalid.wav
文件 8728 2007-04-22 18:39 TryHandTalk\res\Move.wav
文件 72654 2012-09-03 18:15 TryHandTalk\res\Stone.bmp
文件 13878 2012-09-07 12:02 TryHandTalk\res\ToolbarDisable.BMP
文件 13878 2012-09-07 12:03 TryHandTalk\res\ToolbarHover.BMP
文件 13878 2012-09-07 12:03 TryHandTalk\res\ToolbarNormal.BMP
文件 2482 2012-09-13 17:46 TryHandTalk\resource.h
文件 4929 2012-09-26 09:10 TryHandTalk\sgfSupport.c
文件 762 2012-09-26 09:10 TryHandTalk\sgfSupport.h
文件 1761 2012-09-26 08:45 TryHandTalk\TryHandTalk.cbp
文件 2655 2012-09-13 17:46 TryHandTalk\TryHandTalk.rc
目录 0 2012-09-07 17:41 TryHandTalk\res
目录 0 2012-09-26 09:12 TryHandTalk
----------- --------- ---------- ----- ----
671112 19
- 上一篇:VProtect+注册机.rar
- 下一篇:缩短循环码(2616)编译码程序-C语言
相关资源
- RSA算法纯C语言代码实现,带测试dem
- 变频器源码 DSPIC30F5015电机控制专用芯
- jpeg压缩纯C语言实现
- 纯C语言写的sift算法,亲测,可用,可
- 纯C语言——电子相册
- [纯C语言 + Win32 API]一步一步写个围棋
- 纯C语言+libjpeg实现最简单jpeg图片解码
- YUV合成 YUV裁剪 YUV_to_JPEG 纯c语言编写
- Windows下纯C语言Socket、smtp发送邮件,
- 纯C语言写的打字母游戏
- 纯C语言写的https模拟GET和POST
- 算术编码纯C语言实现
- tftp服务器源码,纯c语言
- 纯C语言写的hex转bin小工具
- 敢死队问题纯C语言编写
- [纯C语言 + Win32 API]一步一步写个围棋
- 纯C语言+libalsa实现最简单录音程序
- Linux下纯C语言 多线程 人机 贪吃蛇
- 五子棋纯c语言代码(测试完美)
- 纯C语言实现工资管理系统
- 纯C语言实现https的post和get不依赖任何
- c语言 根据坐标 截取yuv420p 区域 保存
- 纯C语言的串口YModem程序
- mpu9250九轴算法-纯c语言
-
纯C语言解析xm
l字符串 - 纯C语言写计算器界面源码
- 新编Windows API参考大全全中文、win32
-
纯C语言解析xm
l字符串含 - 纯c语言迷宫源码.zip
- 纯C语言 实现SVM,VS工程,亲测可用
评论
共有 条评论