作爲家庭作業的一部分,我必須用Java編程一個簡單的象棋遊戲。我想借此機會嘗試遞歸,我想知道遞歸代碼中是否有明顯的國際象棋候選人?在國際象棋程序設計中很好地使用遞歸?
回答
最明顯的候選人,我將是尋找最好的移動遞歸極小程序。這也涉及到搜索算法背後的許多理論,並且實現起來會很酷。
例子:
http://www.devshed.com/c/a/Practices/Solving-Problems-with-Recursion/6/
我甚至認爲,除了遞歸minmax(如果想要開發一個KI),別無選擇。 – 2010-05-27 12:39:49
此鏈接解釋alpha-beta也很有用http://www.fierz.ch/strategy1.htm – 2010-05-27 12:41:41
哇,這是一篇很棒的文章。看來這是一種在不同階段使用不同的方法。也許會有一個版本的隊友,一個版本的其他目標(例如,捕捉一塊),每個都有不同的深度。嗯...好玩。 – JDelage 2010-05-27 13:38:52
不是象棋,而是一個經典的益智國際象棋菲格雷斯:http://en.wikipedia.org/wiki/Eight_queens_puzzle
您正在考慮backtracking
深度優先搜索是遞歸的主要候選人。所以如果你爲編寫家庭作業編寫一個AI,那麼AI的lookhead算法試圖找出最佳的下一步行動將是一個不錯的選擇。
但要小心 - 您可能會快速耗盡內存。你可能想限制AI可以看到的移動數量。
是的。如果你有一些評估玩家白色的某些位置的「強制」功能。您可以移動一塊並遞歸調用以評估移動的價值並選擇最佳移動。
你應該爲玩家黑色調用相同的功能,交換黑人和白人的角色,從而評估對手移動的「危險」。
然後再爲白人,等等
要知道,你不應該去太深的遞歸水平,否則將永遠需要。
謝謝。我只需要爲每個動作的價值找到一個好的邏輯。 – JDelage 2010-05-27 14:08:24
心靈dynamic programming,你有這導致同一板上的多個組合,你應該記住緩存的移動,以避免重複計算
如果發現遞歸只是引導你,你有一個地方一直在打破那個電話。這就是所謂的backtracking
- 1. 在android中設計國際象棋
- 2. Java國際象棋小程序
- 3. iphone有很好的開源國際象棋遊戲嗎?
- 4. 「跟隨國際象棋」直播國際象棋遊戲如何?
- 5. 國際象棋時鐘倒計時
- 6. 在國際象棋比賽中成爲國王的地方
- 7. 面向對象的國際象棋遊戲設計
- 8. 爪哇國際象棋
- 9. 0x88國際象棋棋盤代表
- 10. 國際象棋棋盤代表 - 引擎
- 11. 國際象棋棋局職位
- 12. 編程一個國際象棋AI
- 13. 國際象棋編程make and unmake move
- 14. 國際象棋程序設計(無人工智能) - 移動驗證
- 15. 正在實施狀態模式的簡單國際象棋遊戲的一個很好的設計選擇?
- 16. 幫助設計一個國際象棋遊戲
- 17. 爲什麼Faile比簡單國際象棋程序(TSCP)快得多? (國際象棋引擎優化)
- 18. 如何使用Rybka 2.3.2a在java程序中的國際象棋邏輯?
- 19. 使用Javascript的簡單國際象棋棋盤
- 20. 國際象棋棋盤使用JavaScript和DOM
- 21. 用C++ GUI程序連接國際象棋引擎
- 22. 用於GAE的國際象棋AI爲
- 23. Java在線國際象棋遊戲
- 24. C中的國際象棋引擎
- 25. XNA中的國際象棋邏輯
- 26. JavaScript中的國際象棋遊戲
- 27. 在Android中創建一個國際象棋棋盤
- 28. 使用winsock的多線程國際象棋
- 29. 在開發國際象棋程序時使用另一個班級(Java)
- 30. C程序設計:遞歸
任何事情與樹木。 – 2010-05-27 12:20:29
我的第一個Java程序之一(1998年)是一個象棋遊戲程序,使用拉普拉斯在下面提到的遞歸極小極大算法。這絕對是一個有趣的學習Java和遞歸的項目。 – Jesper 2010-05-27 12:53:53
www.m-w.com表示遞歸性不是一個有效的英語單詞。編輯標題。 – 2010-05-28 04:05:48