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

  • 大小: 39KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2024-01-27
  • 語言: 其他
  • 標簽:

資源簡介

六子沖棋(博弈程序設計教程) www.leilei.name 原創 源代碼

資源截圖

代碼片段和文件信息

/*************************************************************
*?=?民間六子棋(六子沖)人機博弈引擎實現與教程?=
*?
*??????????????www.leilei.name?
*?
*???????by?LeiLei?2010.3.2?-?2010.3.5
*?
*?
*?本教程主要講解六子沖棋的博弈引擎實現,不講解界面實現部分。
*?本教程共分四節講解:
*??
*?第一節:局面表示?--?構成可下棋的基本元素?
*?第二節:走法生成?--?實現下棋的規則?
*?第三節:局面評估?--?量化一個局面的雙方優劣勢?
*?第四節:局面搜索?--?讓電腦具備思考的能力?
*?
*?本教程主要以便于理解為目標,不追求代碼技巧,希望對寫代碼實踐
*?較少的你,會有所幫助。
*/

/*************************************************************
*?=?附:六子沖介紹?=
*??
*?????六子沖是流傳于中國民間的一類棋類游戲。由于這個游戲對環境的
*?要求不高孩子們大都是在光滑的地面或石板上畫上方格,以石子或木
*?棍、草節等為棋子,并有簡單的比賽規則:
*?
*?????縱橫各四條直線組成一個正方形棋盤,直線相交的地方為落子點。
*?開局時放子處為上下左右邊線上的落子點,且不同方的子不可交叉放置。
*?游戲雙方著二色棋子各6個在一?個“九宮”型棋盤上進行對抗因為游戲雙
*?方各著6個棋子,故名“六子沖”。 棋子只能停留在棋盤上的落子點,棋
*?子只能在線上移動,棋子只能移動一步(即相鄰落子點),每回合只能移
*?動1個棋子。消滅對方棋子的方法只有一條,也很簡單。那就是:二子打
*?一子。即在棋盤上攻擊方的2個棋子(2子必須相連并主動移動其中的1個)
*?與被攻方的1個棋子皆處在一條直線上并相鄰時,被攻方的這個棋子就被
*?消滅。重復上面的步驟,保護自己的棋子并消滅對方的棋子,直到最后
*?勝利。
*?
*?開始:雙方棋子數均為六顆,分列棋盤四周,見圖片“六子沖開始時”。
*?
*?吃子:行棋一方若將兩顆棋子移至一排,且一頭挨著對方的一顆棋時,
*???????則可吃子,見圖片“吃子”。
*?
*?注意:
*?  1.行棋一方若將三顆棋子移至一排,不可吃子,見圖1。
*?  2.行棋一方若將兩顆棋子移至一排,但一頭挨著對方的兩顆棋,不可
*???????子吃,見圖2。
*?  3.行棋一方若將兩顆棋子移至一排,但兩頭分別挨著對方的一顆棋,
*???????不可吃子,見圖3。
*?  4.行棋一方若將兩顆棋子移至一排,且一頭挨著對方的一顆棋時,但
*???????對方的該顆棋后有我方棋,不可吃子見圖4。
*?
*?流傳:
*?  ????有好多民間代代相承的傳統兒戲,在六七十年代仍十分盛行,80年
*?????代后逐漸衰落。80年代以后,由于社會生活和居住環境的變化,孩子們
*?????聚在一起玩耍的機會較少,又有新興的各類現代化的高檔玩具流行,這
*?????樣的游戲則逐漸鮮為人知了。
*?  ????六子沖就是其中最有代表性的一項游戲.也是當年的小孩子因陋就
*?????簡玩的一種棋類游戲。據傳,六子沖游戲源自中國古代戰爭的士兵陣
*?????型訓練,后逐漸演變為一種棋類游戲。六子沖規則簡單,上手容易,但
*?????變化無窮,是一種讓人玩起來就欲罷不能的智力對抗游戲。六子沖游戲
*?????在上世紀主要流行于中國四川一帶。
*?  ????在中國山區農村流傳甚廣,,由于規則簡單,工具可信手拈來,是
*?????我國鄉間常見的棋類游戲。在商洛鎮安,涪城等地農村流行。
*?????顧問:姜年檑
*????(以上文字摘自百度百科,參見原文請訪問:
*???????????????????????????http://baike.baidu.com/view/2472074.htm)
*?
*/

#include?

/*************************************************************
*?=?第一節??局面表示?=
*
*?1.1?棋子表示
*?
*?棋子可以隨便用個數字表示,可以把它定義為常量,
*?但是有時候為了方便運算和轉換,也應該精心挑選用哪些數字表示棋子。
*?這里演示就隨便選兩個數字。
*?
*?(1)需要定義用來表示棋子的常量
*?
*?如下所示:?
*/

#define??STONE?????3?//定義常量?石頭(白色棋子)
#define??LEAF??????7?//?????????樹葉(黑色棋子)
#define??WHITE?????0?//?????????白方用0表示
#define??BLACK?????1?//?????????黑方用1表示
#define??NOPIECE???0?//?????????無棋子用0

/*
*?1.2?棋盤表示
*
*?我們可以用數組來表示棋盤?
*?用4*4的二維數組就可以表示這個游戲的棋盤結構和棋子在棋盤上的分布了。如下(簡單吧):?
*?int?board[4][4]?=?{?//?對應坐標:
*???3?3?3?3???????//?(00)?(10)?(20)?(30)
*???3?0?0?3???????//?(01)?(11)?(21)?(31)
*???7?0?0?7???????//?(02)?(12)?(22)?(32)?
*???7?7?7?7????????//?(03)?(13)?(23)?(33)
*?};
*?
*?數組下標構成的坐標表示棋子在棋盤上的位置。
*?可以用0表示棋盤上無棋子。?
*?我們可以用4*4的數組表示棋盤,但是為了運算方便,這里我們采用8*8的一維數組來裝棋盤,效果更好。
*?我們可以把棋盤放在數組的中央。
*?然后我們用一個8*8的inBoard數組來標識棋盤在數組中的位置。
*?棋子在棋盤上的位置,我們直接用數組下標表示。
*?
*?所以,
*?(1)我們需要一個用來表示棋盤的數組?
*?(2)我們用一個數組來標識棋盤在數組中的位置(用來判斷棋子是否在棋盤上)?
*?(3)寫幾個函數來轉換坐標。
*?
*?如下所示:
*/

//棋盤數組(帶開局棋子位置)
int?board[64]?=?{
??0?0?0?0?0?0?0?0
??0?0?0?0?0?0?0?0
??0?0?7?7?7?7?0?0
??0?0?7?0?0?7?0?0
??0?0?3?0

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

?????文件???????5989??2010-03-02?17:43??六子沖開始時.jpg

?????文件??????30868??2010-03-05?22:40??oldSix.c

?????文件??????12800??2010-03-05?21:42??oldSix.exe

?????文件???????3845??2010-03-02?17:55??1.jpg

?????文件???????3941??2010-03-02?17:55??2.jpg

?????文件???????3651??2010-03-02?17:55??3.jpg

?????文件???????3958??2010-03-02?17:56??4.jpg

?????文件???????3567??2010-03-02?17:44??吃子.jpg

?????文件???????1859??2010-03-02?17:54??六子沖.txt

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

????????????????70478????????????????????9


評論

共有 條評論

相關資源