एनम बनाम। कौशल मूल्यों के लिए पूर्णांक


10

मैं एक बुनियादी कौशल और विशेषता प्रणाली लागू कर रहा हूं, हालांकि मैं इसके बारे में दूसरे विचार रख रहा हूं कि मुझे इसके बारे में कैसे जाना चाहिए।

उदाहरण के लिए, मैं एक डिक्शनरी / हैशपॉप का उपयोग कर सकता हूं जो कुंजियों का प्रतिनिधित्व करने के लिए स्किलटाइप एनम का उपयोग करता है, और पूर्णांक मानों का प्रतिनिधित्व करता है। लेकिन क्या मुझे ऐसा करना चाहिए?

public class Skills
{
    public IDictionary<StatType, Int> skills; //StatType is enum, being the key; the int //is the value.

}

vs.

public class Skills
{
    public int LongBlade, Armor, Marksman; //...etc
}

मैं यहाँ मूल प्रकार के पूर्णांक का उपयोग करने के विपरीत, टाइप सुरक्षा के लाभों को जानना चाहता हूँ। कोई सिफारिशें?


मैं पसंद करूंगा interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };, वास्तव में ...
मार्टिन सोज्का

जवाबों:


8

अगर वहाँ अंततः होने जा रहा है:

  • आपके खेल में कौशल की एक बड़ी विविधता,
  • या क्षमता प्रदान करने वाले आइटम,
  • या क्षमता देने वाले शौकीन,
  • या बड़ी क्षमता वाला पेड़,

फिर मैं व्यक्तिगत उदाहरण क्षेत्रों के बजाय स्ट्रिंग या पूर्णांक कुंजियों के लचीलेपन को पसंद करना शुरू कर देता हूं या यहां तक ​​कि एक Enum कुंजी के साथ एक शब्दकोश।

मेरा तर्क-- क्योंकि आपको जल्द ही पता चल सकता है ...

लड़का, यह अच्छा होगा यदि मैं अपने मैथक्राफ्ट को ट्वीक कर सकता हूं और (मेरी पसंदीदा टेक्स्ट एडिटर | एक्सेल | एक कस्टम टूल) में यूनिट क्षमताओं का चयन कर सकता हूं।

... जिस बिंदु पर स्ट्रिंग या पूर्णांक कुंजी के साथ एक शब्दकोष होता है, वह एनुम मूल्यों या उदाहरण के क्षेत्रों की एक लंबी सूची को बनाए रखने की तुलना में अधिक प्राकृतिक रूप से फिट हो जाता है। हालाँकि, कहा गया उपकरण हमेशा C # कोड जनरेट करने के लिए लिखा जा सकता है, इसलिए आप एक खुश हाइब्रिड को खोजने में सक्षम हो सकते हैं।

यदि आपकी गेम जटिलता काफी सरल और कौशल की आपकी विविधता छोटी होने जा रही है, तो हाथ से उदाहरण क्षेत्रों (शब्दकोष और एनम के बजाय) को प्रबंधित करना अधिक सुविधाजनक लगता है और रन-टाइम और "कीस्ट्रोक" दोनों पर अप्रत्यक्ष स्तर से बचा जाता है। समय।


हालांकि यूनिट की क्षमताओं और गणित से आपका क्या मतलब है? मैं काफी पीछे नहीं हूं, कम से कम उस संबंध में। मैं एक enum का उपयोग करना चाहूंगा, अगर यह व्यावहारिक है।
ब्लिसफ्रीक

मैं आपके साथ आंशिक रूप से सहमत हूं, स्ट्रिंग उच्च स्तर (जैसे स्क्रिप्टिंग एपीआई) के लिए महान हैं, लेकिन चारों ओर घूमने के लिए एक अच्छा विचार नहीं है (मेमोरी और चलती समय सीमा अधिकतम ऑप्स की सीमा है जो आप प्रति फ्रेम कर सकते हैं)। हाइब्रिड एक विकल्प हो सकता है: पूर्णांक पहचानकर्ताओं के साथ नामित नाम। नामों को एक बार संग्रहीत किया जाना है (शायद सिंगलटन मैप में) और एंटाइटर्स पूर्णांक का उपयोग करके खुद को पहचानते हैं। ऐसा करने पर आप जरूरत पड़ने पर अपने इंटरफेस में तार डाल सकते हैं और काम कर सकते हैं जैसे कि वे एनम थे।
FxIII

@fxiii मैं सहमत हूं, और इसलिए मैंने "स्ट्रिंग या पूर्णांक" का उल्लेख किया है। मैं हालांकि बहुत विस्तार में नहीं गया, इसलिए पूर्णांक का उपयोग करने के संबंध में कुछ और क्यों और कैसे बढ़ाएँ, इसके लिए धन्यवाद।
डकमास्ट्रो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.