2010-10-27 72 views
0

Nim的這個特殊變體涉及: 兩名球員交替從一堆球中取出彈珠。在每一次移動中,玩家都會選擇要玩多少個彈珠。玩家必須至少拿到一個,但最多隻有一半的彈珠。然後另一個玩家輪流轉。拿最後一個彈珠的玩家輸了。 我需要: - 編寫一個程序,其中一個人玩電腦 - 生成一個10到100之間的隨機int來表示堆的初始大小 - 生成一個0到1之間的隨機int來決定計算機或者人類首先輪到 - 在0和1之間生成一個隨機int以決定計算機是否玩「智能」或「愚蠢」(計算移動或隨機選擇)Nim遊戲組織/創建課程的問題

問題是我們必須使用三類:樁,球員和遊戲。我不知道如何讓所有三個班級彼此「交談」,以及如何分配所到之處。我完全失去了如何開始這個。

+0

首先創建類的實驗,從寫入一些方法開始。你會對這個任務有更好的感覺,並且你可能會弄清楚。另外,程序是否使用Scanner/BufferedReader獲得輸入? – irrelephant 2010-10-27 01:16:18

+0

是的,掃描儀將被使用,因此玩家可以輸入他們希望移除的彈珠數量。 – Matt 2010-10-27 01:37:48

回答

1

名義上,我希望Game包含一個Pile實例和兩個Player實例。然後遊戲會根據需要調用每個實例的方法。

樁將最低限度包含一個int來存儲堆中彈珠的數量,這種方法會生成初始數字和一個取彈子的方法。

2

首先定義你的類。

你有堆。你可以對樁做什麼?你可以問什麼問題?例如:「樁,剩下多少個彈珠?」寫下這些問題和行動 - 他們將成爲樁上的公共方法。

你有一名球員。玩家可以做什麼?玩家可以做的一件事是「輪流」。玩家還能做什麼?寫下所有這些東西 - 它們將成爲玩家的公共方法。

你有一個遊戲。遊戲是做什麼的?可能就像「玩」一樣。寫下這些東西,它們將成爲遊戲中的公共方法。

現在你有3個類充滿了有用的方法。對它們進行編碼。一旦你得到了那麼多,回來。

+0

「你可以問什麼問題」似乎是將這部分對象設計概念化的好方法。 – philosodad 2010-10-28 04:18:05

0

如果你的意思是:「我不知道如何讓一個類調用另一個類的方法」,當你第一次開始學習編程時,這是一個常見的問題。所以我會做出可能沒有根據的假設,特別是你對編程和麪向對象編程非常陌生。

嘗試用一個Integer類型的私有變量編寫一個名爲'Pile'的類來開始。調用這個變量「彈子」並將其初始化爲某個數字,例如50.

爲該類編寫一個名爲'how_many'的函數,該函數返回大理石的數量,另一個名爲'take_marbles'的公用方法一個整數並減小堆的大小。

創建一個名爲「遊戲」的類。遊戲有型「樁」,將創建一個新的遊戲時創建的屬性,它有允許它稱之爲「HOW_MANY」和「take_marbles」的是樁方法的方法。

然後建立創建一個新的遊戲,有它隨機降低一堆彈珠的數量,直到數量達到零一個小測試程序。每次它消除了一些彈珠,它應該輸出離開大理石的數量。

我認爲一旦你這樣做了,你就會明白下一步該怎麼做。