91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

[純C語言 + Win32 API]一步一步寫個圍棋程序之十二:實現對弈

資源截圖

代碼片段和文件信息

#include?“GoBoard.h“


BOARDDATA?g_BoardData[MAX_BOARDSIZE][MAX_BOARDSIZE];?????//棋盤狀態數據
STONEDATA?g_StoneData[MAX_STONENUMBER];??????????????????//棋子信息數據
int?g_iStoneNumber?g_iShowStoneNumber;??????????????????//棋子總手數、總顯示數
unsigned?char?g_iBoardSize?=?9;?????????????????????????//棋盤線數
char?g_cNextColor?=?BLACK;???????????????????????????????//下一手棋的顏色

static?int?g_haveCount[MAX_BOARDSIZE][MAX_BOARDSIZE];????//算氣的方向標志
static?int?g_noLiberty[MAX_BOARDSIZE][MAX_BOARDSIZE];????//沒氣的標志

#define?ClearHaveCount()?ClearNoLibertyHaveCount((int?**)g_haveCount)
#define?ClearNoLiberty()?ClearNoLibertyHaveCount((int?**)g_noLiberty)
static?void?ClearNoLibertyHaveCount(int?**p);
static?int?Count(int?int?int);??????????//數氣
static?int?CheckLastStone(void);
static?void?AddOneStone(int?int?int?int);
static?void?DeleteLastStone();


//取得棋盤交叉點位置棋子顏色
//參數:x、y?交叉點坐標
extern?int?GetBoardCrossColor(int?x?int?y)
{
????return?g_BoardData[x][y].c;
}

//取得總手數
extern?int?GetTotalStoneNumber()
{
????return?g_iStoneNumber;
}

//取得棋盤線數
extern?unsigned?char?GetBoardSize()
{
????return?g_iBoardSize;
}

//取得下一手棋的顏色
extern?char?GetNextColor()
{
????return?g_cNextColor;
}

//設置下一手棋的顏色
extern?char?SetNextColor(char?c)
{
????if(c?==?BLACK?||?c?==?WHITE)
????????g_cNextColor?=?c;

????return?g_cNextColor;
}

//清空棋盤狀態數據
extern?void?ClearBoardData()
{
????int?i?j;
????BOARDDATA?**p;

????p?=?(BOARDDATA?**)g_BoardData;

????g_iStoneNumber?=?g_iShowStoneNumber?=?0;
????g_cNextColor?=?BLACK;

????//棋盤內數據全部歸0
????for(i=1;?i<=g_iBoardSize;?i++)
????????for(j=1;?j<=g_iBoardSize;?j++)
????????????((BOARDDATA*)p+i*MAX_BOARDSIZE+j)->c?=?((BOARDDATA*)p+i*MAX_BOARDSIZE+j)->n?=?EMPTY;

????//棋盤外圍顏色賦?-1
????j?=?g_iBoardSize?+?2;
????for(i=0;?i????????((BOARDDATA*)p+i)->c?=?((BOARDDATA*)p+j*MAX_BOARDSIZE+i)->c?=?((BOARDDATA*)p+i*MAX_BOARDSIZE)->c?=?((BOARDDATA*)p+i*MAX_BOARDSIZE+j)->c?=?GRAY;
}

//獲得氣
//參數:x?y?棋盤的邏輯坐標,c?棋子顏色
//返回值:x?y點所在C顏色棋塊的氣數
extern?int?GetLiberty(int?x?int?y?int?c)
{
????ClearHaveCount();
????return?Count(x?y?c);
}

//落下一手棋
//x?y?棋盤邏輯坐標
//有效則返回吃子數,禁手(包括打劫)返回-1?,當前點有子返回-2
extern?int?PlayStone(int?x?int?y?char?c)
{
????int?i;

????//點擊非空位
????if(g_BoardData[x][y].c?>?0)
????????return?-2;

????//先增加一子
????AddOneStone(x?y?c?g_iStoneNumber);

????//檢查有效性(有效時已經更新數據?)
????i?=?CheckLastStone();
????if(i?>=?0)
????????return?i;
????//無效再刪掉
????else
????{
????????DeleteLastStone();
????????return?-1;
????}
}

//回退一步
//返回值:成功返回1,否則返回0
extern?BOOL?WithdrawOneStep(void)
{
????if(g_iStoneNumber>0)
????{
????????//把最后一子吃掉的棋還原
????????int?i;
????????for(i=1;?i????????????if(g_StoneData[i].bk?==?g_iStoneNumber)
????????????{
????????????????g_StoneData[i].bk?=?0;
????????????????g_BoardData[g_StoneData[i].x][g_StoneData[i].y].n?=?g_StoneData[i].n;
????????????????g_BoardData[g_StoneData[i].x][g_StoneData[i].y].c?=?g_StoneData[

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????8763??2012-09-02?07:39??TryHandTalk\GoBoard.c

?????文件???????1492??2012-09-02?01:09??TryHandTalk\GoBoard.h

?????文件??????17514??2012-09-02?01:07??TryHandTalk\main.c

?????文件?????691254??2012-08-30?08:46??TryHandTalk\res\board.bmp

?????文件?????201354??2012-07-11?18:39??TryHandTalk\res\Stone.bmp

?????文件??????28866??2012-08-30?08:48??TryHandTalk\res\ToolbarDisable.BMP

?????文件??????28866??2012-08-30?08:49??TryHandTalk\res\ToolbarHover.BMP

?????文件??????28866??2012-08-30?08:49??TryHandTalk\res\ToolbarNormal.BMP

?????文件???????1221??2012-09-01?13:05??TryHandTalk\Resource.h

?????文件???????1595??2012-09-02?00:07??TryHandTalk\TryHandTalk.cbp

?????文件????????865??2012-09-02?01:23??TryHandTalk\TryHandTalk.depend

?????文件???????1063??2012-09-02?07:41??TryHandTalk\TryHandTalk.layout

?????文件???????1256??2012-09-01?13:01??TryHandTalk\TryHandTalk.rc

?????目錄??????????0??2012-09-01?21:51??TryHandTalk\res

?????目錄??????????0??2012-09-02?07:41??TryHandTalk

-----------?---------??----------?-----??----

??????????????1012975????????????????????15


評論

共有 條評論