मैं एक बुनियादी आईफोन गेम पर काम कर रहा हूं जिसके लिए एक सिंगल-स्क्रीन टाइलमैप की आवश्यकता है। वहां कुछ भी मुश्किल नहीं है। मैं एक सी पृष्ठभूमि से आते हैं, इसलिए मेरे वर्तमान समाधान इस तरह एक सा दिखता है:2-आयामी सरणी?
typedef struct _Tile {
NSString *type;
} Tile;
@interface Map {
Tile mapData[MAP_TILE_MAX_X][MAP_TILE_MAX_Y];
}
यह ठीक काम करता है, लेकिन वहाँ है कि अगर एक से थोड़ा अधिक 'सही' जिस तरह से ऑब्जेक्टिव-सी के माध्यम से चीजों को संभालने के लिए मैं सोच रहा हूँ। यहां बताया गया है कि अगर मैं ऑब्जेक्टिव-सी दृष्टिकोण को अपनाना चाहता हूं तो मैं स्थिति को कैसे देख सकता हूं: मैं मूल टाइल गुणों को रखने के लिए बेस टाइल क्लास तैयार करूंगा, जिसे मैं विशिष्ट टाइल प्रकारों (@interface Water : Tile {}
, उदाहरण के लिए) के लिए उपclass कर सकता हूं। इससे मुझे टाइल-विशिष्ट तर्क भी मिल जाएगा। उदाहरण के लिए: टाइल क्लास में 'सोच' विधि हो सकती है जो किसी आवश्यक तर्क को निष्पादित करेगी। मेरे पानी के उप-वर्ग में, यदि खिलाड़ी डूबे हुए हों तो इसमें एक लहर प्रभाव पैदा हो सकता है।
मेरे सवालों का तो:
- यह इस स्थिति में सी structs उपयोग करने के लिए स्वीकार्य है? यदि नहीं, तो क्या मैं अपने ओब्जे-सी दृष्टिकोण के संबंध में सही रास्ते पर हूं?
- यदि मैं बेस टाइल क्लास बनाना चाहता हूं और विशिष्ट टाइल प्रकारों के लिए उप-वर्गों का उपयोग करना चाहता हूं, तो मैं प्रत्येक टाइल सबक्लास को गतिशील रूप से कैसे चालू करूं (यह देखते हुए कि मेरे पास एनएसटीटींग है जिसमें 'पानी' है, मुझे जल वर्ग को तुरंत चालू करना होगा)।
मैं enums के बारे में पता कर रहा हूँ बनाने के लिए। लेकिन क्या आप कक्षा के बदले यहां एक संरचना के उपयोग को औचित्य दे सकते हैं? मैं विशेष रूप से अपना कोड "कमाल" बनाने में रूचि नहीं रखता, मैं इसे उचित बनाना चाहता हूं। – ndg