2014-09-30 24 views
0

我有一個關於組織代碼的問題,同時也顯示了基本的OOP原則。我的任務是實現一個世界(MxN網格)與機器人誰得到指示,以字符串的形式移動。他們也獲得了初始的開始位置和方向。指令一次完成一個機器人。帶地圖的OOP組織

我做了兩個類,Robot和Map,但是當我完成我的編碼時,我意識到Map並沒有真正做任何事情,當我想測試Robot類中的函數時(確保座標在範圍內等等)似乎Map類比任何事情都更麻煩。不過,我覺得這對於展示事物的分離很重要。在這種情況下,有必要有兩個類?

回答

1

我認爲它的確如此。

地圖看起來像一個機器人集合。這就像機器人流入和流出的歐拉控制量。它追蹤空間和時間的可接受位置的空間。它保持規則(例如「一次只有一個機器人在廣場上」)。感覺類似於國際象棋或棋類遊戲的棋盤。

問題似乎是,你無法弄清楚Map有意義的狀態和行爲。

我可以看到機器人如何與地圖交互:它會提出一個運動,它是一個具有方向和大小的矢量,並詢問地圖以查看它是否違背任何運動規則機器人。這些由地圖擁有,而不是機器人。不同的地圖可能允許不同的運動規則(例如,沒有對角線移動,一次一個方格等)

+0

除了移出可能的空間範圍之外,沒有移動限制。在這種情況下拋出異常不是更好嗎? – 2014-10-01 00:36:42

+0

我不這麼認爲。例外是用於強制執行代碼控制的糟糕設計。什麼都可以?多麼瘋狂,毫無意義的遊戲。 – duffymo 2014-10-01 00:55:11