2013-05-01 90 views
2

我正在製作一個小型的2D遊戲,它有一個可以跳躍的角色(側滾動)。現在遊戲中的關卡是用瓷磚製作的(馬里奧喜歡?)。現在我的角色可以在此刻跳躍,但他無法登陸(因爲地磚仍然不存在)。我應該使用Tiles對象嗎?

我的問題是,我應該使類的瓷磚實例(看起來非常OO)?我想出的另一種方法是將瓷磚繪製到關卡中,並製作矩形以保持其位置,但是我覺得這會讓它很難賦予它們特殊的屬性。喜歡:可以被破壞,是固體?

任何人都有任何替代解決方案瓷磚實施?

回答

3

當然。

瓷磚是您的程序邏輯中的一個實體。這些實體自然對應於對象。除此之外,還沒有一個合理的替代方案,儘管當然不是每個類型的實體都必須由它自己的自己的類來表示。

從某種意義上說,這個問題甚至都沒有意義,因爲整個對象方向的角度是所有東西都是是一個對象。不過,你的問題可能更多的是是否應該由一個班級來表示瓦片。但是,答案會是肯定的:否則關於你的tile對象的推理會變得很難:你將有*不相交(數據(座標,表示,動作)對應於一個tile。因爲這些數據是不相交的,所以很難推理關於連貫的對象,您可以不寫代碼,把瓷磚作爲邏輯實體

關於您的選擇:

我來到了剛剛繪製磚入水平,使矩形的替代哪些抓住那裏的位置,但我覺得這樣會讓它很難賦予它們特殊的屬性。像:可以被破壞,是固體的?

你已經注意到了缺點。這根本不是一個明智的選擇,它會讓一些簡單的任務變得非常複雜(或不可能)。

結構

結構和類在C同樣的事情++(除了用於本討論的目的不相關的詳細信息)。

從屏幕上讀取瓦

就像你的第一選擇,這只是一個沒有提供好處。

從某種意義上來說,這個問題很難一蹴而就,因爲(不管你是否在尋找一個面向對象的解決方案),代表對象的貼圖甚至不是一個選擇,它是自動的。

+0

感謝您的明確回答,關於:「不是每一種類型的實體都必須用自己的類來表示」,那麼實現的首選方式是什麼?遺產? – 2013-05-01 09:46:25

+0

@弗洛里斯我的意思就是:說你有一個人的數據庫(例如公司的僱員)。現在,你*可以*通過'Name'的類來代表他們的名字,他們的年齡由'Age'等的類來表示。但是用'unsigned int'來表示他們的名字可能更簡單。但仍然是*對象*。事實上,用C++的說法,根據定義,駐留在內存中的所有類型都是一個對象。更一般地(以對象爲導向),你推理的每個實體都是一個對象。 – 2013-05-01 09:48:33