C++ QT开发人机象棋(大纲)
目錄
?
1?系統需求分析:
1.1游戲簡介:
1.2機器下棋史:
1.3研究內容:
1.4編譯環境:QT
2 總體設計
2.1系統功能分析:
1.界面表示
2.鼠標點擊
3.棋子走法
4.評估函數
5.搜索算法
6.剪枝算法
2.2系統功能模塊劃分與設計
?
?
1?系統需求分析:
?
1.1游戲簡介:
象棋以充滿趣味性的游戲形式興起并延續至今,在近現代則作為體育項目添加了競技因素,以及作為文化載體被傳統中國文化及思想賦予了文化精髓。
象棋是由兩人輪流走子,以“將死”對方將(帥)為勝的一種棋類運動,古今中外,象棋都有著廣泛的愛好者。在國內,象棋經過近千年的實踐,于北宋末定型成近代模式:32枚棋子,有河界的棋盤,將在九宮之中等等。南宋時期,象棋家喻戶曉,成為流行極為廣泛的棋藝活動。李清照、劉克莊、楊慎、唐寅、郎英等文學家,洪遵、文天祥等政治家,都嗜好下象棋。宮廷設的"棋待詔"中,象棋手占一半以上。
民間有稱為"棋師"的專業者和專制象棋子和象棋盤的手工業者。象棋在國外尤其是在東南亞的僑胞和外籍華人中也廣泛流傳。這些地區和國家近年也都舉行象棋比賽,而且都已分別成立了象棋總會或象棋協會。許多海外華僑、華人和港澳同胞把象棋看作是僑胞與祖國聯系的橋梁和紐帶,把開展象棋活動看作是炎黃后裔對自己民族文化的繼承和發揚。
近幾十年來,隨著貿易和文化交往的不斷發展,象棋在英、美、法、加拿大、德國等國家也發展了不少的愛好者。象棋正從它的發源地,經過亞洲,傳播到世界各個角落。
1.2機器下棋史:
20世紀80年代中期,卡內基梅隆大學的柏林納開始用專用硬件來實現下棋機,他的成果 HiTech 馬上成為最強的機器棋手。? 這時來自中國臺灣的許峰雄到卡內基梅隆大學計算機系跟隨孔祥重讀計算機體系結構方向的博士。 許峰雄的室友很快把他拉到 HiTech 項目幫忙設計一個硬件的評估函數,但許峰雄卻和柏林納關系不睦。 在資金有限的情況下,許峰雄和幾個研究生利用業余時間快速開發出了 ChipTest,而 ChipTest 立即變成了 HiTech 的競爭對手,并受到柏林納的打壓。 許峰雄在計算機系也變成眾矢之的,每次都是靠導師孔祥重的幫忙化險為夷。 ChipTest 的改進版“深思”(Deep Thought)1989年贏得弗雷德金二等獎:成為第一個國際象棋特級大師的機器棋手。隨后 HiTech 也加入這個行列。 而此時 IBM 意識到“深思”的商業價值,于是勸說整個團隊在畢業后加入 IBM,開發下棋機,把對手鎖定為當時的世界冠軍俄羅斯特級大師卡斯帕羅夫。 卡斯帕羅夫對機器下棋非常熟悉,他在屢次和機器對決后曾說:機器下棋沒有洞見(insight)。 IBM 的外號叫 Big Blue,于是新的項目1996年被命名為“深藍”(Deep Blue)。 1996年 ACM 年會的閉幕節目是“深藍”對決卡斯帕羅夫,六局棋?!吧钏{”旗開得勝,第一局就贏了老卡,最后還是老卡 4:2 贏得決賽。 此時老卡對“深藍”刮目相看,他說機器對手不光有洞見,而且有幾步簡直像“上帝下的”。 第二年“深藍”和老卡再戰,老卡號稱要捍衛人類的智力尊嚴。他贏了第一局,但隨后則越來越保守,徹底輸給“深藍”。 1997年5月11日,老卡認輸,“深藍”成了第一位戰勝當時世界冠軍的機器。事后,卡斯帕羅夫回憶:第二局是關鍵,機器表現超出他的想象,它經常放棄短期利益,表現出非常擬人的危險。 在“深藍”贏了卡斯帕羅夫之后,職業棋手并沒有因此而改行,他們反而更多地依賴計算機來訓練。機器作為教練,反而更快地幫助人類棋手進步。 從來就沒有過這么多年輕棋手在年齡很小時就積分這么高,這都得益于計算機教練,因為過去的孩子從來就沒有機會能和特級高手比賽。 現在兩臺個人電腦下棋,人已經看不懂它們在下什么。盡管如此,“深藍”隊員,同樣畢業于卡內基梅隆大學的坎普爾仍然不認為機器有智能。 這其實是整個“深藍”團隊的意見,他們都不是人工智能出身,反而和同系的人工智能教授結下梁子。 “深藍”獲勝后,美國人工智能學會(AAAI)曾經組織過一個研討會,對人工智能啟發式搜索做出過杰出貢獻的加州大學洛杉磯分校教授科夫曾不滿“深藍”團隊的立場。
1.3研究內容:
人工智能的基本思考方法是窮舉法,即通過對所有可能的招法的演化結果進行比較,最后選擇出一個最好的招法。這種比較一定是越深越好。我們知道,平日里象棋水平越高的人,能夠對戰局演化看得越遠,比如看到五步棋。計算機也一樣,走出一個棋子后,便生成一個“局面”;在這個新的局面下,又有38種可能的棋子走法,無論選擇其中哪一種,都會再次生成一個更新的局面。每一次考慮一個棋子的走法時,如果將所有這些變化列起來,就會形成一棵“樹”,主干上有38個分支,每個分支上再有38個分支,依此類推,共有120層(中國象棋一般可以走120步)。這就是“博弈樹”。計算機要做的就是比較最后一層的結果,選擇其中一個最好的結果,然后逆推,找到本局面最好的一個走法。
1.4編譯環境:QT
?
2 總體設計
?
2.1系統功能分析:
1.界面表示
2.鼠標點擊
3.棋子走法
4.評估函數
5.搜索算法
6.剪枝算法
2.2系統功能模塊劃分與設計
總結
以上是生活随笔為你收集整理的C++ QT开发人机象棋(大纲)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方维分享社区系统——详解伪静态开启方法
- 下一篇: APUE实战篇1:在Ubuntu环境搭载