में 2 डी दुनिया का मॉडल कैसे करें मैं एक गेम बना रहा हूं। खेल में एक अनंत विमान शामिल है। इकाइयों को एक अलग वर्ग पर होना चाहिए, इसलिए वे एक साधारण Location { x :: Int, y :: Int }
हास्केल
के साथ स्थित हो सकते हैं Unit
एस के कई प्रकार हो सकते हैं। कुछ प्राणी हो सकते हैं, और कुछ पत्थर, या लकड़ी के ब्लॉक की तरह वस्तुएं हैं (वहां 2 डी Minecraft सोचें)। बहुत खाली होंगे (बस घास या जो कुछ भी)।
हास्केल में आप इसे कैसे मॉडल करेंगे? मैंने नीचे करने पर विचार किया है, लेकिन ऑब्जेक्ट बनाम प्राणी के बारे में क्या? उनके पास अलग-अलग फ़ील्ड हो सकते हैं? यूनिट पर उन सभी को सामान्यीकृत करें?
data Unit = Unit { x :: Int, y :: Int, type :: String, ... many shared properties... }
मैं भी एक स्थान प्रकार
data Location = Location { x :: Int, y :: Int, unit :: Unit }
-- or this
data Location = Location { x :: Int, y :: Int }
data Unit = Unit { unitFields... , location :: Location }
आप किसी भी विचार है होने पर विचार किया है? ओओ भाषा में, शायद मुझे Location
या Unit
दूसरे से प्राप्त होता, और विशिष्ट प्रकार के यूनिट को एक-दूसरे से प्राप्त किया जाता।
एक और विचार यह है कि यह तार पर इन वस्तुओं को बहुत से भेज देगा, इसलिए मुझे क्लाइंट पर उपयोग के लिए JSON पर क्रमबद्ध करने की आवश्यकता होगी, और कई पार्सिंग बॉयलरप्लेट लिखना नहीं चाहते हैं।
अपने ग्रिड के रूप में 'Data.Map.Map' का उपयोग करें। –
तो क्या एक्स एक y मानचित्र में एक कुंजी से अधिक नहीं है, और इकाइयों के पास उनके विभिन्न फ़ील्ड हैं? जब ग्राहक को उन्हें भेजने के लिए समय आता है, तो क्या मुझे वहां एक नक्शा/हैश भी भेजना चाहिए? –