SDL.NET का उपयोग करके C # में प्रोग्रामिंग गेम्स

खुले स्रोत के साथ समस्याओं में से एक यह है कि परियोजनाएं कभी-कभी सड़क के किनारे गिरने लगती हैं या भ्रामक मोड़ लेती हैं। SDL.NET लें। बिक्री के लिए वेबसाइट को अनदेखा करना, वेब पर एक खोज से पता चलता है cs-sdl.sourceforge.net ऐसा प्रोजेक्ट जो नवंबर 2010 में बंद हो गया लगता है। हमें नहीं लगता कि यह रुका है, लेकिन जैसा दिखता है वैसा ही है।

यदि आप C # नहीं जानते हैं, तो आपको सबसे पहले यह सीखना होगा कि कैसे C # में कार्यक्रम. कहीं और देखते हुए, हम मोनो वेबसाइट पर जुड़े ताओ ढांचे के पार आए, जो एक ही क्षेत्र को कवर करने और ध्वनि आदि के लिए समर्थन जोड़ने के लिए लगता है। लेकिन सोर्सफोर्ज (फिर से!) को देखते हुए इसके द्वारा सुपरसीड किया गया है OpenTK लेकिन फोकस वहाँ OpenGL है। हालाँकि, इसमें OpenAL भी शामिल है इसलिए दोनों को स्थापित करना (cs-sdl और OpenTK) आगे बढ़ने का मार्ग प्रतीत होता है।

OpenTk इंस्टॉल का हिस्सा विफल रहा; NS (shader) क्योंकि हमारे पास VS 2008 स्थापित नहीं है! हालाँकि, यह बाकी था। हमने एक C # कंसोल प्रोजेक्ट बनाया और SDL.NET के साथ खेलना शुरू किया। ऑनलाइन प्रलेखन यहां पाया जा सकता है।

instagram viewer

पीछे मुड़कर देखें, तो हम देख सकते हैं कि OpenTK फ्रेमवर्क की आवश्यकता नहीं थी, जैसे कि SDL.NET ने सब कुछ स्थापित किया था लेकिन उस समय यह स्पष्ट नहीं था। यह अभी भी ताओ फ्रेमवर्क का उपयोग करता है भले ही इसका विकास OpenTK द्वारा किया गया हो। यह थोड़ा भ्रामक है और हमें उम्मीद है कि SDL.NET टीम भविष्य में एक OpenTk संगत संस्करण लाएगी।

यह नहीं है, जैसा कि हमने सोचा था, सिर्फ एक पतला रैपर एसडीएल है, लेकिन काफी अतिरिक्त कार्यक्षमता जोड़ता है। निम्नलिखित प्रदान करने के लिए कई कक्षाएं प्रदान की जाती हैं:

दो SDL.NET dlls (SdlDotNet.dll और Tao का पता लगाएँ। Sdl.dll) साथ ही OpenTK dlls, और उन्हें प्रोजेक्ट संदर्भों में जोड़ें। स्थापना के बाद, dll प्रोग्राम फ़ाइलें \ SdlDotNet \ bin (32 बिट Windows और प्रोग्राम फ़ाइलें (x86) \ SdlDotNet \ bin 64 बिट विंडोज पर स्थित हैं। समाधान एक्सप्लोरर में संदर्भ अनुभाग पर राइट क्लिक करें फिर संदर्भ जोड़ें पर क्लिक करें और ब्राउज़ टैब चुनें। यह एक एक्सप्लोरर डायलॉग खोलता है और इसके बाद डीएलएस का चयन करने के बाद ओके पर क्लिक करें।

एक आखिरी बात, View \ Properties पर क्लिक करें ताकि यह प्रॉपर्टी पेजों को खोले और पहले टैब (एप्लिकेशन) कंसोल एप्लिकेशन से विंडोज एप्लिकेशन में आउटपुट प्रकार बदलें। यदि आप ऐसा नहीं करते हैं जब प्रोग्राम पहली बार चलता है और एसडीएल मुख्य विंडो को खोलता है तो यह कंसोल विंडो को भी खोलेगा।

अब हम शुरू करने के लिए तैयार हैं और मैंने नीचे एक छोटा एप्लिकेशन बनाया है। यह अनियमित रूप से आकार और स्थित आयतों और वृत्तों की संख्या को खिड़की की सतह पर 1,700 प्रति सेकंड 50 फ्रेम प्रति फ्रेम की दर से खींचता है।

यह 1,700 फ्रेम के प्रति खींची गई संख्या को 17 पर सेट करने और वीडियो का उपयोग करते हुए विंडो कैप्शन में फ्रेम प्रति सेकंड प्रदर्शित करने से आता है। WindowCaption। प्रत्येक फ्रेम में 17 भरे हुए वृत्त और आयतें होती हैं, 17 x 2 x 50 = 1,700। यह आंकड़ा वीडियो कार्ड, सीपीयू आदि पर निर्भर करता है। यह एक प्रभावशाली गति है।

// डेविड बोल्टन द्वारा, http://cplus.about.com
सिस्टम का उपयोग;
सिस्टम का उपयोग कर। चित्रकारी;
SdlDotNet का उपयोग करना। ग्राफिक्स;
SdlDotNet का उपयोग करना। कोर;
SdlDotNet का उपयोग करना। ग्राफिक्स। पुरातन;
सार्वजनिक वर्ग ex1
{
निजी कॉन्स्टेंस इंट वैक्टर = 1024;
निजी कास्ट इंट माइट = 768;
निजी स्थिर सतह स्क्रीन;
निजी स्थिर रैंडम आर = नया रैंडम ();
सार्वजनिक स्थैतिक शून्य main (String [] args)
{
स्क्रीन = वीडियो। SetVideoMode (जोखिम, मट्ठा, 32, झूठी, झूठी, झूठी, सच्ची);
आयोजन। टारगेटफ़्स = 50;
आयोजन। क्विट + = (QuitEventHandler);
आयोजन। टिक + = (TickEventHandler);
आयोजन। Daud() ;
}
निजी स्थिर शून्य QuitEventHandler (ऑब्जेक्ट प्रेषक, QuitEventArgs args)
{
आयोजन। QuitApplication ();
}
निजी स्थिर शून्य TickEventHandler (ऑब्जेक्ट प्रेषक, TickEventArgs args)
{
के लिए (var i = 0; i <17; मैं ++)
{
var rect = नया आयत (नया बिंदु) (r) अगला (एक्सपोज़र- 100), आर। अगला (wheight-100)),
नया आकार (10 + आर। अगला (जोखिम - 90), 10 + आर। अगला (मट्ठा - 90)));
var Col = रंग। FromArgb (आर। अगला (255), आर। अगला (255), आर। अगला (255));
var CircCol = रंग। FromArgb (आर। अगला (255), आर। अगला (255), आर। अगला (255));
लघु त्रिज्या = (लघु) (10 + आर। अगला (मट्ठा - 90));
var सर्किल = नया सर्किल (नया पॉइंट (r) अगला (एक्सपोज़र- 100), आर। अगला (wheight-100)), त्रिज्या);
स्क्रीन। भरें (सुधार, कर्नल);
Circ। ड्रा (स्क्रीन, सर्कोल, गलत, सच);
स्क्रीन। अपडेट करें() ;
वीडियो। WindowCaption = घटनाएँ। एफपीएस। तार() ;
}
}
}

वीडियो वीडियो मोड सेट करने, वीडियो सतहों को बनाने, माउस कर्सर को छिपाने और दिखाने के लिए, और ओपनजीएल के साथ बातचीत करने के तरीके प्रदान करता है। ऐसा नहीं है कि हम कुछ समय के लिए OpenGL कर रहे हैं।

यहां वीडियो ऑब्जेक्ट का उपयोग गेम विंडो के आकार और रिज़ॉल्यूशन को सेट करने के लिए किया जाता है (पूर्ण स्क्रीन एक विकल्प है)। SetVideoMode के लिए पैरामीटर आपको इनको बदलने की अनुमति देते हैं और 13 ओवरलोड बहुत विविधता प्रदान करते हैं। सभी वर्गों और सदस्यों के दस्तावेज़ीकरण में dch फ़ोल्डर में .chm फ़ाइल (Windows html सहायता प्रारूप) है।

ईवेंट ऑब्जेक्ट में एक क्विट ईवेंट हैंडलर है जो आपको क्लोज डाउन लॉजिक जोड़ने देता है और आपको ईवेंट को कॉल करना चाहिए। QuitApplication () एप्लिकेशन को बंद करने वाले उपयोगकर्ता को इसका जवाब देने के लिए। घटनाएँ। टिक संभवतः सबसे महत्वपूर्ण घटना हैंडलर है। यह प्रत्येक फ्रेम में निर्दिष्ट ईवेंट हैंडलर कहता है। यह सभी SDL.NET विकास का मॉडल है।

आप अपनी वांछित फ्रेम दर और मेरे लूप को 5 पर सेट कर सकते हैं और टारगेटफिश को 150 में बदल सकते हैं। हमने इसे 164 फ्रेम प्रति सेकंड पर चलाया। TargetFps एक बॉलपार्क आकृति है; यह आपको उस आंकड़े के पास पहुंचने में देरी करता है, लेकिन घटनाक्रम। एफपीएस वह है जो वितरित किया जाता है।

SDL के मूल नॉन विंडो विंडो की तरह, SDL.NET स्क्रीन को रेंडर करने के लिए सतहों का उपयोग करता है। ग्राफिक्स फाइल से एक सतह का निर्माण किया जा सकता है। बड़ी संख्या में गुण और विधियाँ हैं जो पिक्सेल के साथ-साथ पढ़ना या लिखना संभव बनाती हैं ग्राफिक्स प्राइमेटिव्स ड्रा करें, अन्य सतहों को ब्लिट करें, यहां तक ​​कि एक सतह को डिस्क फ़ाइल में लेने के लिए डंप करें स्क्रीनशॉट।

instagram story viewer