2015-06-07 34 views
0

我是一個相對缺乏經驗的程序員,最近我對製作一個學校項目的Checkers遊戲應用程序感興趣。我不知道我可以從哪裏開始(或者如果我甚至可以嘗試)來創建它。我想到的這個項目可能不會涉及多玩家模式的簡單AI &。開發一個跳棋(草稿)引擎,如何開始?

任何人都可以給我一些提示/指導開始學習?

+2

請參觀並閱讀幫助中心。 –

+0

@SotiriosDelimanolis我對這個網站不熟悉,請問你能指導我嗎?謝謝。 – CowNorris

+1

右上角的「搜索」欄旁邊的「幫助」下。 –

回答

1

在一定程度上我有一些建議對這個問題的意見,同意「嘗試一些簡單的第一」,但跳棋是很簡單,你可以得到一個工作程序 - 你肯定會學到有用的東西你走。

我的建議是將問題分成幾個部分並依次解決問題。例如:

1)板表示 - 也許使用一個8×8陣列來表示板。你需要能夠用空的,白色的棋子,黑色的棋子,白色的國王,黑色的國王填滿廣場。一個更有效的解決方案可能是看一下「位板」,其中的電路板佔用由一組64位整數描述。你可能想要結束可以加載或保存電路板狀態,打印或顯示電路板的功能,並確定在某個位置上有什麼(如果有的話)。

2)移動表示法 - 找到計算合法移動的方法。哪些棋子可以移動,哪些棋子可以移動。您需要考慮 - 移動棋盤邊緣,阻擋移動,跳躍,多次跳躍,國王向後移動等。您可能想要結束可以計算棋子的所有合法棋步的函數,確定如果建議的舉動是合法的,那麼將遊戲記錄爲一系列動作,可以通過鼠標或輸入文本命令與最終用戶進行交互,以便在遊戲板上「玩」遊戲。所以,即使你只有那麼遠,你纔有一個你可以展示的「產品」,人們可以互動。

3)計算機遊戲 - 這是比較難的部分 - 你需要學習最小極限,alpha-beta修剪,迭代加深和所有與計算機遊戲AI相關的關聯遊戲 - 它聽起來比實際上更難是。您還需要開發一種位置評估算法來衡量一個位置的價值,以便計算機可以決定哪個是最好的。這可以像樸素的假設一樣簡單,即採取對手棋子永遠比不採取對手棋子更好,使國王勝於不奪取對手,或者使得未來更多動作離開你的舉動比離開對手更好你的下一步行動的選擇較少。在實踐中,如果你能看2-3次,那麼即使是一個非常簡單的「貪婪」評估板也能很好地工作。總而言之,看起來比跳棋不那麼雄心勃勃的事情可能會更簡單一些 - 奧賽羅可能是一個不錯的選擇,並且寫一個奧賽羅的球員並不難,因爲他可以擊敗沒有參加過比賽的人很多遊戲。 3D井字棋,或者一個小型的點和盒子游戲也可能是合適的。像這樣的遊戲更簡單,因爲沒有國王或界限使事情複雜化,所有(大部分)動作都是合法的,而且玩起來非常有趣,是一個有價值的軟件演示。

+0

謝謝你的回覆。我確實瞭解這個項目的潛在規模,但實際上我已經有一年左右的時間來完成這個項目,這就是爲什麼我選擇了一些雄心勃勃的目標。你給了我很多非常棒的信息,比K非常多! – CowNorris

0

首先讓我的狀態,你所談論的任務是很多大,那麼你認爲它是。

你應該怎麼做是分解成非常小的可管理件。

的原因是

  • 較小的步驟更容易理解
  • 獲得快速的反饋將有助於激勵你繼續,並會幫助你解決的事情,因爲他們出問題。

當你開始考慮要做的事情的最小步驟。以下是部分的一些想法開始:

  • 做一個簡單的標題畫面'只是稱號,並擊中了它 關鍵走開。
  • 爲空的棋盤網格創建UI。

我知道那些聽起來不是很多,但那些可能會比你想象的要多得多。

然後添加東西一樣加入跳棋,保持了遊戲鍵盤數據等,

甚至不要去想AI,直到你有一個遊戲,兩個玩家可以在沒有UI玩。

你應該做的是想想:我可以做的最小增量是多少,並補充說,然後考慮下一小塊是什麼。

相信我這是關於它的最好方法。如果你試圖一次寫完所有東西,它永遠不會發生。