『壹』 高分求演算法:關於井字棋(三子棋)的演算法!!面談感謝!!!!
「井字棋」游戲(又叫「三子棋」),是一款十分經典的益智小游戲,想必很多玩家都有玩過。「井字棋」的棋盤很簡單,是一個3×3的格子,很像中國文字中的「井」字,所以得名「井字棋」。「井字棋」游戲的規則與「五子棋」十分類似,「五子棋」的規則是一方首先五子連成一線就勝利;「井字棋」是一方首先三子連成一線就勝利。
井字棋(英文名Tic-Tac-Toe)
井字棋的出現年代估計已不可考,西方人認為這是由古羅馬人發明的;但我們中國人認為,既然咱們都發明了圍棋、五子棋,那發明個把井字棋自然是不在話下。這些純粹是口舌之爭了,暫且不提。
想起小時候上課喜歡玩井字棋,只要一張草稿紙、一支筆、同桌兩人就可以玩了。上體育課,也可以拿著樹枝在沙坑裡玩。但一直感覺這游戲太簡單了,後來接觸了五子棋,著迷了一陣,但水平總是很差,便也不玩了。
一字棋游戲極小極大分析法
設有九個空格,由MAX,MIN二人對弈,輪到誰走棋誰就往空格上放一隻自己的棋子,誰先使自己的棋子構成「三子成一線」(同一行或列或對角線全是某人的棋子),誰就取得了勝利。
用叉號表示MAX,用圓圈代表MIN。
比如右圖中就是MIN取勝的棋局。
為了不致於生成太大的博弈樹,假設每次僅擴展兩層。估價函數定義如下:
設棋局為P,估價函數為e(P)。
(1) 若P對任何一方來說都不是獲勝的位置,則e(P)=e(那些仍為MAX空著的完全的行、列或對角線的總數)-e(那些仍為MIN空著的完全的行、列或對角線的總數)
(2) 若P是MAX必勝的棋局,則e(P)=+∞。
(3) 若P是B必勝的棋局,則e(P)=-∞。
比如P如右圖示,則e(P)=6-4=2
要注意利用棋盤位置的對稱性,在生成後繼節點的位置時,下列博弈結局
都是相同的棋局(在博弈中,一宇棋的分枝系數比較小起初是由於對稱性,而後是由於棋盤上未布子的空格減少所致)。圖3.15畫出了經過兩層搜索生成的博弈樹,靜態估值記在端節點下面,倒推值記在圓圈內。
由於右圖所示位置具有最大的倒推值,它應當選取為MAX的第一步(正好是MAX的最好的優先走步)。
現在我們假設MAX走了這一步,而MIN的回步是直接在X上方的空格里放上一個圓圈(對MAX來說這是一步壞棋,他一定沒有採用好的搜索策略)。下一步,MAX又在新的格局下搜索兩層,產生如圖3.16所示的搜索圖。
現在圖中MAX有兩個可能「最好的」優先走步,假設MAX走了圖上指明的那一步。而MIN為了避免立即敗北被迫走了另一步,從而產生如下棋局:MAX再次搜索,產生如圖3.17所示的樹。
在這棵樹中某些端節點(例如其中一個標記著A)代表MIN獲勝,因此它們的估值為—∞。當這些估值被倒推回去時,可看到MAX的最好的也是唯一能使他避免立即失敗的一個走步。現在,MIN可以看出MAX必然在他的下一走步中獲勝,因此,MIN只好認輸。
按極大極小演算法編程下一字棋的演示(右圖,可以點擊操作)...
我們就利用Visual Basic編寫一個「井字棋」的小游戲。
【設計思路】
首先,我們要知道,「井字棋」游戲是一款典型的棋類游戲,游戲時一方式是電腦,另一方是玩家。所以,這類游戲在開始時有兩種方式:一種是玩家先走;另一種是電腦先走。這是我們要考慮的第一個問題。
其次,由於與玩家對戰的是計算機,所以我們要編寫一個過程(Chuqi),它可以使程序模擬人的思維與人下棋(其實就是「人工智慧」的體現),這個Chuqi過程也是本游戲軟體的關鍵。此外,我們還要編寫兩個過程(Lianxian和Shuying),Lianxian過程用來時刻判斷棋盤中是否有三個棋子連成一線;Shuying過程用來判斷如果有三個棋子連成一線,是哪一方連成一線的,即判斷哪一方獲勝。
以上幾個問題就是該「井字棋」游戲實現的關鍵思路。....
QQ:744192659
郵箱:[email protected]
『貳』 井字過三關
井字過三關,又名打井、井字游戲、井字棋、OX棋。在歐美地區相當流行,最早是個紙筆游戲。
玩法類似於中國的五子棋,兩個玩家,一個打X,一個打O,兩人輪流在3乘3的格上打自己的符號,誰先連成一線便勝。如果雙方都下得正確無誤,將得和局。
站一個位置相對來講就比較保險,就是站中間的位置。這個游戲要想贏,只能藉助對手失誤。如果雙方都沒有失誤,必定是平局。分出了勝負時,仔細分析一下就知道輸者有失誤。
井字棋(英文名Tic-Tac-Toe)
井字棋的出現年代估計已不可考,西方人認為這是由古羅馬人發明的;但我們中國人認為,既然咱們都發明了圍棋、五子棋,那發明個把井字棋自然是不在話下。這些純粹是口舌之爭了,暫且不提。
『叄』 世界一共有多少種棋非常感謝
呵呵,暫時知道18種,等待完善中……
1、圍棋(go) 圍棋已經遠遠超出了它的娛樂功能,它是一種理念,一種生活的態度,一種生命的哲學。當人們為計算機程序「深藍」戰勝世界國際象棋冠軍卡斯帕羅夫而驚嘆的同時,我想人工智慧科學家們忽略了一點,那就是棋是智慧的延伸而不僅僅是智力的角逐,也許只有圍棋才能把這些深層的東西體現出來。
2、中國象棋(Chinese Chess)中國象棋具有悠久的歷史。經過近百年的實踐,象棋於北宋末定型成近代模式: 32 枚棋子, 有河界的棋盤,將在九宮之中等等。南宋時期,象棋 " 家澈戶曉 " ,成為流行極為廣泛的棋藝活動。中國象棋根植民間,應該是中國最普及的棋類運動。
3、國際象棋(Chess)國際象棋無疑是全世界最普及的棋類,但是現制國際象棋在我國開展的時間不算長,從 1956 年開始,國際象棋才和我國傳統的中國象棋與圍棋一起列入國家開展的體育項目。
4、五子棋
起源於中國古代的傳統黑白棋種之一。現代五子棋發展於日本,日文稱之為"連珠",英譯為"Renju","Gobang"或"FIR"(Five in a Row的縮寫),亦有"連五子"、"五子連"、"串珠"、"五目"、"五目碰"、"五格"等多種稱謂。有兩種規則 無禁手採用最簡單古老的規則。黑白雙方依次落子,任一方先在棋盤上形成橫向、豎向、斜向的連續的相同顏色的五個(含五個以上)棋子的一方為勝。有禁手(走禁手就輸,禁手不能落子) 鑒於無禁手規則黑棋必勝,人們不斷採用一些方法限制黑棋先行的優勢,以平衡黑白雙方的形式。禁手最簡單地說就是一手棋形成長連(連成五個以上連續相同的棋子),或兩個以上的活三,或者兩個以上的四,並且這些四、活三和長連都要包括這一手棋。
5、軍棋與四國大戰
軍棋又被稱為盲象棋(BLIND CHESS) 是由南非(South-Africa)的一位叫Henry Michael Temple人於1899年發明的。他本人是一名國際象棋愛好者,因為自己的夥伴希望能玩一種反映戰爭的游戲,於是他借鑒國際象棋的棋子,發明了這種戰爭游戲。它使旁觀者和下棋人共享其中的歡樂。軍棋是一種成功的變形象棋。它和象棋最大的區別就是不允許看對方的棋子,更具有挑戰性。
四國大戰, 4 人游戲時,相對的兩家聯盟與另外兩家對抗,配合戰斗的樂趣是其它棋類所沒有的。
6、 暗棋,是以中國象棋棋盤和棋子進行的一項棋類游戲,游戲時,棋子放在普通象棋棋盤的上半部分,棋盤的下半部分用於擺放雙方被吃掉的棋子。 暗棋一開始必須靠雙方不斷地把只顯示背面的棋子翻過來,但只能移動自己顏色的棋子,棋子的大小順序是將、士、象、車、馬、炮、兵,大子吃相同的子和小子,但小兵吃將,炮不能吃馬。
7、跳棋
游戲規則很簡單,棋子的移動可以一步步在有直線連接的相鄰六個方向進行,如果相鄰位置上有任何方的一個棋子,該位置直線方向下一個位置是空的,則可以直接 " 跳 " 到該空位上, " 跳 " 的過程中,只要相同條件滿足就可以連續進行。誰最先把正對面的陣地全部佔領,誰就取得勝利。
8、黑白棋,又叫反棋 (Reversi) 、奧賽羅棋 (Othello) ,蘋果棋,翻轉棋。黑白棋在西方和日本很流行。游戲通過相互翻轉對方的棋子,最後以棋盤上誰的棋子多來判斷勝負。
游戲通過相互翻轉對方的棋子,最後以棋盤上誰的棋子多來判斷勝負。黑白棋的棋盤是一個有 8*8 方格的棋盤。下棋時將棋下在空格中間,而不是像圍棋一樣下在交叉點上。開始時在棋盤正中有兩白兩黑四個棋子交叉放置,黑棋總是先下子。 把自己顏色的棋子放在棋盤的空格上,而當自己放下的棋子在橫、豎、斜八個方向內有一個自己的棋子,則被夾在中間的全部翻轉會成為自己的棋子。並且,只有在可以翻轉棋子的地方才可以下子。 如果玩家在棋盤上沒有地方可以下子,則該玩家對手可以連下。雙方都沒有棋子可以下時棋局結束,以棋子數目來計算勝負,棋子多的一方獲勝。
9、六子棋(connect6) 台灣交通大學資訊工程系副教授吳毅成發明六子棋新游戲,據稱彌補了五子棋「先下者有利」的公平性困境。
六子棋的簡明規則:
一、黑白兩色棋子,縱橫各十九道。 (完全可用圍棋的棋盤棋子)
二、黑方先落一子,此後雙方輪流落子,一次兩顆。
三、先有六子連成一直線者,贏。
補充:應該說明中國還有一種傳統的六子棋。交戰雙方棋子數均為六顆,故稱六子棋。六子棋的棋盤為3乘以3的方格。棋子可信手拿來,只要互相區分即可。 玩法 槍斃,行棋一方若將兩顆棋子移至一起,且一頭挨著對方的一顆棋時,則可吃子(稱為槍斃)。抬子,行棋一方兩個棋子夾住對方的一個棋子時,則可吃子(稱為抬子)。挑子,行棋一方一個棋子插入對方的兩個棋子中間時,則可吃對方兩個棋子(稱為挑子)。
第一種吃子方法是最常用的,後兩種走法一般在雙方默認情況下不用。游戲中當一方的棋子被對方圍困住無法行棋或者被吃到少於兩顆棋子時,就被判為輸棋。說的正確,一般我們都是使用第一種方法來玩。
10、西洋雙陸棋(Backgammon)
11、將棋 日本棋種
12、井字棋(Tic-Tac-Toe)也叫三子棋。「井字棋」的棋盤很簡單,是一個3×3的格子,很像中國文字中的「井」字。「井字棋」游戲的規則是一方首先三子連成一線就勝利。太簡單吧。
13、四子棋
14、斗獸棋(Animal),小時候常玩的動物棋,雙方有八隻棋子,依大小順序為象、獅、虎、豹、狗、狼、貓、鼠。較大的可吃較小的,同類可以互吃,而鼠則可吃象。
15、疊棋
16、盤三又稱「棋三」或"三棋",棋三是流傳於中國民間的一種雙人對弈的一類版圖游戲。雙方各持棋子若干(最少十二顆,一般多備幾顆用於壓對方被吃的棋子),棋子可信手拿來,只要互相能夠區分即可。
棋三的對弈過程分兩步:
放子,對弈雙方依次將己方的棋子放入棋盤中,當自已的三個棋子成一直線時就可以吃對方一個棋子(用自己的棋子壓在對方的棋子上面,只作標識用,暫時不能拿走)。直到棋盤上所有點都放滿了棋子為止。
走子,將放子時被吃掉的棋子清理出棋盤,騰出的空位便可以走子了,但不可下再下棋子。棋子每次只能走一格,走至能將己方的棋子連成一線,就可以吃掉對方任意一個棋子。直到有一方的棋子少於三粒時告負並結束。
17、
六連棋是在六邊形格的棋盤上玩的圖版游戲,亦是數學游戲,通常使用10乘10或11乘11的菱形棋盤(約翰·納希則採用14×14的棋盤)。
18、獨粒鑽石棋是一個人的游戲,起源於法國,是一種風靡世界的益智游戲,與中國發明的「華容道」、匈牙利人發明的「魔方」並稱為「智力游戲界的三大不可思議。它類似於跳棋,但不能走步,只能跳。走棋時棋子跳過相鄰的棋子到空位上,並把跳過的旗子吃掉。棋子可以沿棋盤的格線橫跳、縱跳,但不能斜跳。
『肆』 井字棋的介紹
井字棋,英文名叫Tic-Tac-Toe,是一種在3*3格子上進行的連珠游戲,和五子棋比較類似,由於棋盤一般不畫邊框,格線排成井字故得名。游戲需要的工具僅為紙和筆,然後由分別代表O和X的兩個游戲者輪流在格子里留下標記(一般來說先手者為X)井字策略,英文名叫Tic Tactics,一個經典的重生!Tic Tactics是一個回合制多人游戲,簡單易學,但具挑戰性!如果你知道怎麼玩井字棋,你已經知道怎麼玩Tic Tactics。不同的是你才是決定每一步把你的對手送到哪裡的關鍵。你會為戰略的縱深大吃一驚!挑戰朋友或者陌生人來提升你的等級,並最終成為Tic Tactics軍師!(詳細玩法井字棋吧置頂貼有介紹)
『伍』 世界上有哪些棋種
只是個簡單的統計,不斷完善中。
1、圍棋(go) 圍棋已經遠遠超出了它的娛樂功能,它是一種理念,一種生活的態度,一種生命的哲學。當人們為計算機程序「深藍」戰勝世界國際象棋冠軍卡斯帕羅夫而驚嘆的同時,我想人工智慧科學家們忽略了一點,那就是棋是智慧的延伸而不僅僅是智力的角逐,也許只有圍棋才能把這些深層的東西體現出來。
2、中國象棋(Chinese Chess)中國象棋具有悠久的歷史。經過近百年的實踐,象棋於北宋末定型成近代模式: 32 枚棋子, 有河界的棋盤,將在九宮之中等等。南宋時期,象棋 " 家澈戶曉 " ,成為流行極為廣泛的棋藝活動。中國象棋根植民間,應該是中國最普及的棋類運動。
3、國際象棋(Chess)國際象棋無疑是全世界最普及的棋類,但是現制國際象棋在我國開展的時間不算長,從 1956 年開始,國際象棋才和我國傳統的中國象棋與圍棋一起列入國家開展的體育項目。
4、五子棋
起源於中國古代的傳統黑白棋種之一。現代五子棋發展於日本,日文稱之為"連珠",英譯為"Renju","Gobang"或"FIR"(Five in a Row的縮寫),亦有"連五子"、"五子連"、"串珠"、"五目"、"五目碰"、"五格"等多種稱謂。有兩種規則 無禁手採用最簡單古老的規則。黑白雙方依次落子,任一方先在棋盤上形成橫向、豎向、斜向的連續的相同顏色的五個(含五個以上)棋子的一方為勝。
5、軍棋與四國大戰
軍棋又被稱為盲象棋(BLIND CHESS) 是由南非(South-Africa)的一位叫Henry Michael Temple人於1899年發明的。他本人是一名國際象棋愛好者,因為自己的夥伴希望能玩一種反映戰爭的游戲,於是他借鑒國際象棋的棋子,發明了這種戰爭游戲。它使旁觀者和下棋人共享其中的歡樂。軍棋是一種成功的變形象棋。它和象棋最大的區別就是不允許看對方的棋子,更具有挑戰性。
四國大戰, 4 人游戲時,相對的兩家聯盟與另外兩家對抗,配合戰斗的樂趣是其它棋類所沒有的。
6、 暗棋,是以中國象棋棋盤和棋子進行的一項棋類游戲,游戲時,棋子放在普通象棋棋盤的上半部分,棋盤的下半部分用於擺放雙方被吃掉的棋子。暗棋一開始必須靠雙方不斷地把只顯示背面的棋子翻過來,但只能移動自己顏色的棋子,棋子的大小順序是將、士、象、車、馬、炮、兵,大子吃相同的子和小子,但小兵吃將,炮不能吃馬。
7、跳棋
游戲規則很簡單,棋子的移動可以一步步在有直線連接的相鄰六個方向進行,如果相鄰位置上有任何方的一個棋子,該位置直線方向下一個位置是空的,則可以直接 " 跳 " 到該空位上, " 跳 " 的過程中,只要相同條件滿足就可以連續進行。誰最先把正對面的陣地全部佔領,誰就取得勝利。
8、黑白棋,又叫反棋 (Reversi) 、奧賽羅棋 (Othello) ,蘋果棋,翻轉棋。黑白棋在西方和日本很流行。游戲通過相互翻轉對方的棋子,最後以棋盤上誰的棋子多來判斷勝負。
9、六子棋(connect6) 台灣交通大學資訊工程系副教授吳毅成發明六子棋新游戲,據稱彌補了五子棋「先下者有利」的公平性困境。
六子棋的簡明規則:
一、黑白兩色棋子,縱橫各十九道。 (完全可用圍棋的棋盤棋子)
二、黑方先落一子,此後雙方輪流落子,一次兩顆。
三、先有六子連成一直線者,贏。
10、西洋雙陸棋(Backgammon)
11、將棋 日本棋種
12、井字棋(Tic-Tac-Toe)也叫三子棋。「井字棋」的棋盤很簡單,是一個3×3的格子,很像中國文字中的「井」字。「井字棋」游戲的規則是一方首先三子連成一線就勝利。太簡單吧。
13、四子棋
14、斗獸棋(Animal),小時候常玩的動物棋,雙方有八隻棋子,依大小順序為象、獅、虎、豹、狗、狼、貓、鼠。較大的可吃較小的,同類可以互吃,而鼠則可吃象。
15、疊棋
16、盤三又稱「棋三」或"三棋",棋三是流傳於中國民間的一種雙人對弈的一類版圖游戲。
17、
六連棋是在六邊形格的棋盤上玩的圖版游戲,亦是數學游戲,通常使用10乘10或11乘11的菱形棋盤(約翰·納希則採用14×14的棋盤)。
18、獨粒鑽石棋是一個人的游戲,起源於法國,是一種風靡世界的益智游戲,與中國發明的「華容道」、匈牙利人發明的「魔方」並稱為「智力游戲界的三大不可思議。它類似於跳棋,但不能走步,只能跳。走棋時棋子跳過相鄰的棋子到空位上,並把跳過的旗子吃掉。棋子可以沿棋盤的格線橫跳、縱跳,但不能斜跳。
『陸』 井字棋的奧秘
第一步 一定要在CROSS 里
『柒』 井字棋,你怎麼看待它的意義
我很喜歡玩井字棋啊,雖然套路很明顯,但是挺有意思的,比其他的棋簡單很多,意義就是娛樂玩耍。
『捌』 井字棋存在的意義
橫豎都二
『玖』 古今中外有什麼棋類
『拾』 井字棋一字棋三字棋現在才搞懂是同一種 誰能給我找點文字介紹 多謝
「井字棋」游戲(又叫「三子棋」),是一款十分經典的益智小游戲,想必很多玩家都有玩過。「井字棋」的棋盤很簡單,是一個3×3的格子,很像中國文字中的「井」字,所以得名「井字棋」。「井字棋」游戲的規則與「五子棋」十分類似,「五子棋」的規則是一方首先五子連成一線就勝利;「井字棋」是一方首先三子連成一線就勝利。
井字棋(英文名Tic-Tac-Toe)
井字棋的出現年代估計已不可考,西方人認為這是由古羅馬人發明的;但我們中國人認為,既然咱們都發明了圍棋、五子棋,那發明個把井字棋自然是不在話下。這些純粹是口舌之爭了,暫且不提。
想起小時候上課喜歡玩井字棋,只要一張草稿紙、一支筆、同桌兩人就可以玩了。上體育課,也可以拿著樹枝在沙坑裡玩。但一直感覺這游戲太簡單了,後來接觸了五子棋,著迷了一陣,但水平總是很差,便也不玩了。
一字棋游戲極小極大分析法
設有九個空格,由MAX,MIN二人對弈,輪到誰走棋誰就往空格上放一隻自己的棋子,誰先使自己的棋子構成「三子成一線」(同一行或列或對角線全是某人的棋子),誰就取得了勝利。
用叉號表示MAX,用圓圈代表MIN。
比如右圖中就是MIN取勝的棋局。
為了不致於生成太大的博弈樹,假設每次僅擴展兩層。估價函數定義如下:
設棋局為P,估價函數為e(P)。
(1) 若P對任何一方來說都不是獲勝的位置,則e(P)=e(那些仍為MAX空著的完全的行、列或對角線的總數)-e(那些仍為MIN空著的完全的行、列或對角線的總數)
(2) 若P是MAX必勝的棋局,則e(P)=+∞。
(3) 若P是B必勝的棋局,則e(P)=-∞。
比如P如右圖示,則e(P)=6-4=2
要注意利用棋盤位置的對稱性,在生成後繼節點的位置時,下列博弈結局
都是相同的棋局(在博弈中,一宇棋的分枝系數比較小起初是由於對稱性,而後是由於棋盤上未布子的空格減少所致)。圖3.15畫出了經過兩層搜索生成的博弈樹,靜態估值記在端節點下面,倒推值記在圓圈內。
由於右圖所示位置具有最大的倒推值,它應當選取為MAX的第一步(正好是MAX的最好的優先走步)。
現在我們假設MAX走了這一步,而MIN的回步是直接在X上方的空格里放上一個圓圈(對MAX來說這是一步壞棋,他一定沒有採用好的搜索策略)。下一步,MAX又在新的格局下搜索兩層,產生如圖3.16所示的搜索圖。
現在圖中MAX有兩個可能「最好的」優先走步,假設MAX走了圖上指明的那一步。而MIN為了避免立即敗北被迫走了另一步,從而產生如下棋局:MAX再次搜索,產生如圖3.17所示的樹。
在這棵樹中某些端節點(例如其中一個標記著A)代表MIN獲勝,因此它們的估值為—∞。當這些估值被倒推回去時,可看到MAX的最好的也是唯一能使他避免立即失敗的一個走步。現在,MIN可以看出MAX必然在他的下一走步中獲勝,因此,MIN只好認輸。
按極大極小演算法編程下一字棋的演示(右圖,可以點擊操作)...
我們就利用Visual Basic編寫一個「井字棋」的小游戲。
【設計思路】
首先,我們要知道,「井字棋」游戲是一款典型的棋類游戲,游戲時一方式是電腦,另一方是玩家。所以,這類游戲在開始時有兩種方式:一種是玩家先走;另一種是電腦先走。這是我們要考慮的第一個問題。
其次,由於與玩家對戰的是計算機,所以我們要編寫一個過程(Chuqi),它可以使程序模擬人的思維與人下棋(其實就是「人工智慧」的體現),這個Chuqi過程也是本游戲軟體的關鍵。此外,我們還要編寫兩個過程(Lianxian和Shuying),Lianxian過程用來時刻判斷棋盤中是否有三個棋子連成一線;Shuying過程用來判斷如果有三個棋子連成一線,是哪一方連成一線的,即判斷哪一方獲勝。
以上幾個問題就是該「井字棋」游戲實現的關鍵思路。....
http://family.chinaok.com/2005-12/15745.htm