我在c#中有作業。我必須用minimax和alphabeta來製作一個遊戲(例如跳棋,象棋或其他東西,但不是tic tac腳趾 - 而且我選擇跳棋/草稿),但我甚至不知道如何開始: (我有一個緊急的截止日期我在學校一點點工作,但我不是一個程序員 現在我試圖做一個數組,這將代表一個董事會和它的片斷的位置。有什麼更好的?如果關於棋子的位置和它們的值的信息將被保存在棋盤上,或者如果這些信息將被分別保存爲每個棋子,並且如何爲此做出最佳排列組合。需要的是一個建議如何開始,如何表示遊戲狀態 - 該程序等的基本結構在C中使用minimax的跳棋/草案#
回答
提示:使用2維數組來表示遊戲板:
int[,] board = new int[8, 8];
謝謝,我已經開始使用相同的數組,現在我正在發電板上的碎片... – Washa 2010-08-26 14:42:03
它需要在內存8x8?男人只能站在32個方格上...... – Adrian 2010-08-26 16:17:02
這是一項家庭作業,所以我不會選擇最優化的解決方案。保持可以理解。所以,當你編碼跳棋時,你位於2,0位置,你知道你可以移動到1,1或3,1。如果你保持它4x4,那麼你必須記住哪一行被移動到哪個方向和你可以更容易犯錯。在每個空間中使用int,以便知道有什麼。例如,0是空的。 1個紅色,2個紅色國王,11個黑色,12個黑色國王。 – Dan 2010-08-27 13:21:57
用於存儲板狀態的標準方法是使用bitboards。
public class Board
{
private UInt64 m_RedPieces = 0x0000000000559955; // Initial position;
private UInt64 m_BlackPieces = 0x9955990000000000; // Initial position;
}
除了事實上它們超快速以外,關於位板的一件很酷的事情是,它使得生成合法的後繼位置變得更容易。你仍然很難理解,但是通過使用刨花板,你可以將移動演變減少到一系列位操作(移位,AND,OR,XOR等)。
我確定在互聯網上已經有很多資源,這些資源都有與位面板一起工作的公式。
謝謝,但我認爲這對我和我的技能太難了:( – Washa 2010-08-26 14:37:11
@Washa:不一定,我想例如,要從初始位置生成所有後繼位置,首先將m_RedPieces左移7位並對m_RedPieces進行異或運算,以刪除已經被紅色塊佔據的正方形,還有幾個更多這裏涉及到的細節,但你明白了,你會增加更多的位操作來捕捉包括跳躍在內的其他場景,而不是進入被對手棋子佔據的方塊等等。我想你會發現這比製作系列更容易'if-else' blocks。 – 2010-08-26 14:56:29
Brian,是的,你絕對是對的,但我擔心這個......我從來沒有在c#或其他任何地方使用這些操作作爲XOR,OR等。 Ø在理論上是理性的(在學校課但不是編程科目):( – Washa 2010-08-26 15:50:09
- 1. 草稿/跳棋應用的最佳主機解決方案
- 2. 跳棋的規則(草稿)死鎖
- 3. 是跳棋還是中國跳棋?
- 4. C#跳棋遊戲運動
- 5. Minimax與國際象棋引擎moveselection
- 6. 開發一個跳棋(草稿)引擎,如何開始?
- 7. 用於跳棋的MinMax AI
- 8. SDL中的跳棋遊戲
- 9. ISO C++標準草案
- 10. 跳棋強制跳躍
- 11. 用於黑白棋的Minimax算法不能正常工作
- 12. Java跳棋遊戲移動棋子
- 13. 在python中製作跳棋板
- 14. 在Python中創建一個跳棋板
- 15. 在Python中使用機器學習來玩跳棋?
- 16. 跳棋的開源實現
- 17. GLSL棋盤圖案
- 18. 跳棋/草稿服務器和板的實現(通過使用Ruby on Rails的Web瀏覽器)
- 19. 沒有可用的西洋跳棋
- 20. C#minimax樹實現
- 21. 跳棋/草稿遊戲?可這項工作還是我錯了路
- 22. 實現minimax和alpha beta算法的國際象棋
- 23. 如何在C++中使用可變大小的棋盤來創建棋盤格?
- 24. 使用C++上傳草圖
- 25. FFT後的棋盤圖案
- 26. Android佈局草案
- 27. 巴澤爾跳棋支持
- 28. NSView - 繪製2色跳棋
- 29. 我工作在Java中的跳棋遊戲似乎並不能畫上棋子
- 30. W3C工作草案和編輯草案有什麼區別?
那麼,tic tac腳趾會更容易... – Carra 2010-08-26 13:47:48
是的,但井字我不能選擇:( – Washa 2010-08-26 14:31:31
WOW!草稿由minimax和alpha-beta修剪驅動作爲作業,在緊迫的截止日期。 ..你有點難以看出從哪裏開始回答這個問題,你說你想在C#中找到''''的答案,但你自己並不是AC#程序員,我假設你已經閱讀並理解了關於minimax的WikiP文章?剛剛搜索的「草稿編程」,第一個答案是一個非常合理的codeproject鏈接...也有一些主要的草稿文件,因爲它最近是'解決' - 在計算機v計算機匹配將始終以平局結束 – Adrian 2010-08-26 15:14:17