2008-08-21 5 views
15

से डेटा स्टोर करें मैंने हाल ही में कुछ सी # सीख लिया है और एक Yahtzee क्लोन लिखा है। मेरा अगला कदम (अब जब गेम तर्क जगह पर है और सही तरीके से काम कर रहा है) खेला गया सभी खेलों में आंकड़े रखने की कुछ विधि को एकीकृत करना है।सी # एप्लिकेशन

मेरा सवाल यह है कि, मुझे इस जानकारी को संग्रहीत करने के बारे में कैसे जाना चाहिए? मेरा पहला विचार डेटाबेस का उपयोग करना होगा और मुझे लगता है कि मुझे जवाब मिलेगा ... यदि ऐसा है, तो क्या आप मुझे सी # एप्लिकेशन से डेटाबेस बनाने और एक्सेस करने के लिए एक अच्छे संसाधन के लिए इंगित कर सकते हैं?


एक XML फ़ाइल में संग्रहीत वास्तव में मेरे लिए अधिक समझ में आता है, लेकिन मैंने सोचा कि अगर मैं सुझाव दिया है कि मैं फाड़ हो चाहते हैं;)। मैं वेब अनुप्रयोगों के निर्माण के लिए उपयोग किया जाता हूं और उन लोगों के लिए, पाठ फ़ाइलों को आम तौर पर फेंक दिया जाता है।

तो, एक एक्सएमएल फ़ाइल के साथ जाकर, मुझे किन वर्गों को देखना चाहिए जिससे आसान हेरफेर की अनुमति मिल सके?

उत्तर

16

यहां एक विचार है: एक्सएमएल सीरियलाइजेशन का उपयोग करें। अपनी गेमस्टैट डेटा संरचना को डिज़ाइन करें और वैकल्पिक रूप से स्कीमा को प्रभावित करने के लिए एक्सएमएल विशेषताओं का उपयोग करें। मैं छोटे डेटा सेट के लिए इस विधि का उपयोग करना चाहता हूं क्योंकि इसकी त्वरित और आसान और मुझे बस डेटा संरचना को डिजाइन और कुशल बनाना है।


using (FileStream fs = new FileStream(....)) 
{ 
    // Read in stats 
    XmlSerializer xs = new XmlSerializer(typeof(GameStats)); 
    GameStats stats = (GameStats)xs.Deserialize(fs); 

    // Manipulate stats here ... 

    // Write out game stats 
    XmlSerializer xs = new XmlSerializer(typeof(GameStats)); 
    xs.Serialize(fs, stats); 

    fs.Close(); 
} 
7

एक डेटाबेस अधिक हो सकता है - क्या आपने केवल फाइल में स्कोर संग्रहीत करने के बारे में सोचा है?

यदि आप किसी डेटाबेस के साथ जाने का निर्णय लेते हैं, तो आप SQLite पर विचार कर सकते हैं, जिसे आप एक फ़ाइल की तरह वितरित कर सकते हैं। एक ओपन सोर्स .NET प्रदाता - System.Data.SQLite है - जिसमें आपको प्रारंभ करने के लिए आवश्यक सब कुछ शामिल है।

.NET में डेटाबेस से एक्सेस करना और पढ़ना काफी आसान है - नमूना कोड के लिए this question पर एक नज़र डालें।

13

एक डेटाबेस शायद इस तरह के कुछ के लिए ओवरकिल होगा - एक्सएमएल दस्तावेज़ में अपनी जानकारी संग्रहीत करने के साथ शुरू करें (या एक्सएमएल दस्तावेज़ों की श्रृंखला, यदि बहुत सारे डेटा हैं)। आपको वह निफ्टी एक्सकॉपी परिनियोजन सामग्री मिलती है, आप अभी भी LINQ का उपयोग कर सकते हैं, और यदि आपने बाद में निर्णय लिया कि आपको वास्तव में निष्पादक संबंधपरक तर्क तर्क की आवश्यकता है तो यह डेटाबेस में एक आसान संक्रमण होगा।

3

मुझे नहीं पता कि डेटाबेस क्या आवश्यक है या नहीं। यह एक साधारण खेल के लिए आँकड़े संग्रहित करने के लिए अधिक हो सकता है। डेटाबेस अच्छे हैं; लेकिन आपको हर स्थिति में स्वचालित रूप से एक का उपयोग नहीं करना चाहिए (मुझे लगता है कि यह एक क्लाइंट एप्लिकेशन है, न कि ऑनलाइन गेम)।

व्यक्तिगत रूप से, केवल एक उपयोगकर्ता के कंप्यूटर पर मौजूद एक गेम के लिए, मैं केवल आंकड़ों को एक फ़ाइल में संग्रहीत करता हूं (एक्सएमएल या बाइनरी - पसंद इस बात पर निर्भर करता है कि आप इसे मानव-पठनीय या नहीं चाहते हैं)।

4

SQL Express एमएस से उनके SQL सर्वर डेटाबेस का एक बहुत अच्छा, हल्का संस्करण है। यदि आप डीबी मार्ग पर जाते हैं तो आप कोशिश कर सकते हैं।

वैकल्पिक रूप से, आप बस आवेदन के भीतर डेटासेट बना सकते हैं और एक्सएमएल को क्रमानुसार सकता है, या आप नए मतलब Entity Framework जो .NET 3.5 एसपी 1 के साथ भेज दिया की तरह कुछ इस्तेमाल कर सकते हैं

1

आप System::Xml नाम स्थान या उपयोग कर सकते हैं System::Data नामस्थान। पहला आपको कच्चे एक्सएमएल देता है, बाद वाला आपको एक्सएमएल के लिए एक आसान रैपर देता है।

1

मैं सिर्फ एक डेटाबेस का उपयोग कर की सिफारिश करेंगे।मैं डेटाबेस से बातचीत करने के लिए LINQ या ORM टूल का उपयोग करने की अनुशंसा करता हूं। LINQ सीखने के लिए, मैं स्कॉट गुथरी की पोस्ट पर एक नज़र डालेगा। मुझे लगता है कि उनमें से 9 एक साथ हैं। मैंने नीचे भाग 1 जोड़ा है। यदि आप एक ओआरएम उपकरण के साथ जाना चाहते हैं, तो निबर्ननेट कहें, तो मैं ग्रीष्मकालीन nHibernate स्क्रीनकास्ट को देखने की सलाह दूंगा। वे निबर्ननेट के लिए वास्तव में एक अच्छा सीखने संसाधन हैं।

मैं एक्सएमएल का उपयोग करने से असहमत हूं। बहुत सारे डेटा पर रिपोर्टिंग आंकड़ों के साथ, आप एक रिलेशनल डेटाबेस का उपयोग करके हरा नहीं सकते हैं। हाँ, एक्सएमएल हल्का वजन है, लेकिन पूरी तरह से उड़ाए गए सेवा आधारित कार्यान्वयन के साथ-साथ हल्के वजन संबंधपरक डेटाबेस के लिए बहुत सारे विकल्प हैं। (यानी SQL Server Compact, SQLite, आदि ...)

+0

कोई विचार नहीं कि आपको इतना वोट क्यों दिया गया है। इस मामले में, मैं खुद डेटाबेस (यहां तक ​​कि आपके द्वारा वर्णित हल्के वजन वाले) तक नहीं जाऊंगा, लेकिन आपका बिंदु मान्य है और एक दिन मूल पोस्टर ने अपने आंकड़ों के लिए पर्याप्त रूप से जोड़ा होगा ताकि डीबी को अधिक उपयोग करने योग्य विकल्प बनाया जा सके (कोशिश करने और इसे अनदेखा करने के लिए +1) –

2

मैं की तरह साधारण Pocos में अपने डेटा को बचाने और या तो उन्हें xml या एक बाइनरी फ़ाइल को serializing, सलाह देते हैं ब्रायन ऊपर था।

यदि आप डेटाबेस के लिए गर्म हैं, तो मैं Sql Server Compact Edition, या VistaDB का सुझाव दूंगा। दोनों आपके आवेदन के भीतर inproc होस्टेड हैं।

1

इस स्थिति के लिए, [Serializable] अच्छी तरह से मॉडल Stats कक्षा और XmlSerializer पर विशेषता है, आईएमओ जाने का तरीका है।

संबंधित मुद्दे