2012-03-25 104 views
0

我在c#中創建了一個簡單的井字遊戲,可以在1個玩家模式和2個玩家模式下玩遊戲。C#井字遊戲控制檯應用程序

我編程計算機正確反應(在計算機vs.玩家模式),但我認爲我的代碼比它應該大得多,因爲我所做的是我手動檢查了每種可能的組合, t似乎找到了如何最小化代碼。

這裏是makeComputerMove()FUNC:https://gist.github.com/2192374

變量的說明:

炭[,]板:2D陣列,包含 'X' 和 'O'

炭形狀:這是我用來確定優先級的方式,首先我將它設置爲'O',這樣計算機就會嘗試獲勝。如果它不能贏,它會嘗試阻止。如果沒有任何東西可以阻擋,它會嘗試在板子上的另一個「O」附近設置一個「O」。

位置P:包含值的對象行和列

謝謝。

編輯:現在我看到人們都在想我要你重寫我的代碼。我只是添加它,所以你可以看到我做了什麼。我只是要求提示(通過以不同方式接近問題)。

+0

你需要在這裏發佈你的代碼審查請求:http://codereview.stackexchange.com/ – 2012-03-25 08:36:34

+0

所以你基本上要求我們重寫你的應用程序? – 2012-03-25 08:37:11

+0

我所要求的是提供與我不同的思維方式,而不是書面的代碼,因爲它對我的學習沒有任何價值 – Novak 2012-03-25 08:38:23

回答

1

閱讀關於MinMax算法在這裏得到的一般想法。 這基本上是通過可能的移動來回溯,並且可能移動到所有可能的移動,並且如此進入一定數量的移動(ai深度)。這使用遞歸。 由於這是TicTacToe,您可能會失去「深度」並將「結束」作爲停止條件。