Enum เทียบกับ จำนวนเต็มสำหรับค่าทักษะ


10

ฉันใช้ทักษะพื้นฐานและระบบคุณลักษณะแม้ว่าฉันจะมีความคิดที่สองเกี่ยวกับวิธีที่ฉันควรจะไปเกี่ยวกับมัน

ตัวอย่างเช่นฉันสามารถใช้ Dictionary / HashMap ซึ่งใช้ SkillType enums เพื่อเป็นตัวแทนของคีย์และค่าจำนวนเต็มแทนค่า แต่ฉันควรทำเช่นนี้?

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; /* ... */ };จริง ๆ แล้ว ...
Sojka มาร์ติน

คำตอบ:


8

หากในที่สุดจะเป็นไปได้:

  • ทักษะหลากหลายประเภทในเกมของคุณ
  • หรือรายการที่ให้ความสามารถ
  • หรือชื่นชอบความสามารถ
  • หรือต้นไม้ที่มีความสามารถสูง

จากนั้นฉันเริ่มชอบความยืดหยุ่นของสตริงหรือคีย์จำนวนเต็มในพจนานุกรมแทนที่จะเป็นฟิลด์อินสแตนซ์เดี่ยวหรือแม้แต่พจนานุกรมที่มีคีย์ enum

เหตุผลของฉัน - เพราะคุณอาจตระหนักในไม่ช้า ...

เด็กชายมันคงจะดีถ้าฉันสามารถบิด mathcraft ของฉันและเลือกความสามารถของหน่วยใน (โปรแกรมแก้ไขข้อความที่ชื่นชอบ | Excel | เครื่องมือที่กำหนดเอง)

... ตรงจุดที่พจนานุกรมด้วยสตริงหรือคีย์จำนวนเต็มกลายเป็นแบบที่เป็นธรรมชาติมากกว่าการรักษาค่า enum หรือรายการฟิลด์อินสแตนซ์ที่มีขนาดยาวด้วยตัวคุณเอง อย่างไรก็ตามเครื่องมือดังกล่าวสามารถเขียนเพื่อสร้างรหัส C # ได้เช่นกันดังนั้นคุณอาจจะพบกับลูกผสมที่มีความสุข

หากความซับซ้อนของเกมของคุณจะค่อนข้างง่ายและความหลากหลายของทักษะเล็ก ๆ น้อย ๆ แล้วจัดการฟิลด์อินสแตนซ์ด้วยมือ (แทนที่จะเป็นพจนานุกรม & enum) ดูเหมือนจะสะดวกกว่าและหลีกเลี่ยงระดับการอ้อมทั้งในเวลาทำงานและ "การกดแป้นพิมพ์" - เวลา.


คุณหมายถึงอะไรโดยความสามารถของหน่วยและคณิตศาสตร์ ฉันไม่ได้ติดตามอย่างน้อยในเรื่องนั้น ฉันต้องการใช้ enum ถ้าเป็นจริงแม้ว่า
blissfreak

ฉันเห็นด้วยกับคุณบางส่วนสตริงนั้นยอดเยี่ยมถึงระดับที่สูงขึ้น (เช่นสคริปต์ API) แต่การย้ายสตริงรอบ ๆ ไม่ใช่ความคิดที่ดี (หน่วยความจำและเวลาในการเคลื่อนที่ จำกัด จำนวน ops สูงสุดที่คุณสามารถทำได้ต่อเฟรม) ไฮบริดอาจเป็นตัวเลือก: เอนทิตีที่มีชื่อพร้อมตัวระบุจำนวนเต็ม ชื่อจะต้องถูกจัดเก็บหนึ่งครั้ง (ในแผนที่ซิงเกิลบางที) และเอนทิตีระบุตัวเองโดยใช้จำนวนเต็ม การทำเช่นนั้นคุณสามารถใส่สตริงในอินเทอร์เฟซของคุณถ้าจำเป็นและทำงานราวกับว่าพวกเขา enums
FxIII

@fxiii ฉันเห็นด้วยและเป็นเหตุผลที่ฉันพูดถึง "สตริงหรือจำนวนเต็ม" แม้ว่าฉันจะไม่ได้ลงรายละเอียดที่ดีนักดังนั้นขอขอบคุณที่ให้เหตุผลและวิธีการใช้จำนวนเต็ม
DuckMaestro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.