संवाद प्रणाली लागू करके अपने गेमप्ले अनुभव को और अधिक गहन बनाएं।
Pygame में एक संवाद प्रणाली को लागू करने से गेम के इंटरैक्टिव अनुभव में काफी वृद्धि हो सकती है। एक संवाद प्रणाली खेल को खिलाड़ी के सामने बातचीत, संदेश और विकल्प प्रस्तुत करने की अनुमति देती है, जिससे अधिक गहन और आकर्षक गेमप्ले बनता है।
पायगेम लाइब्रेरी ग्राफिकल यूजर इंटरफेस (जीयूआई) बनाने और उपयोगकर्ता इनपुट को संभालने के लिए आवश्यक उपकरण प्रदान करती है, जिससे यह एक संवाद प्रणाली को लागू करने के लिए एक आदर्श विकल्प बन जाता है।
एक सरल गेम बनाएं
शुरू करने से पहले, सुनिश्चित करें कि आपके पास है आपके सिस्टम पर पाइप स्थापित है. इंस्टॉल करने के लिए इस कमांड का उपयोग करें pygame पुस्तकालय:
पिप इंस्टाल पायगेम
उसके बाद, एक सरल गेम बनाकर शुरुआत करें जहां खिलाड़ी दुश्मन से बचते हुए बाएं और दाएं घूम सकता है।
इस आलेख में प्रयुक्त कोड इसमें उपलब्ध है गिटहब रिपॉजिटरी और यह आपके लिए एमआईटी लाइसेंस के तहत उपयोग करने के लिए निःशुल्क है।
नीचे दिया गया कोड स्निपेट गेम विंडो सेट करता है, खिलाड़ी और दुश्मन गुणों को आरंभ करता है, और गेम लूप चलाता है।
# आवश्यक पुस्तकालय आयात करें
आयात pygame
से pygame.locals आयात *pygame.init()
# गेम विंडो सेट करें
स्क्रीन_विड्थ, स्क्रीन_ऊंचाई = 800, 600
स्क्रीन = pygame.display.set_mode((स्क्रीन_विड्थ, स्क्रीन_हाइट))
pygame.display.set_caption("मेरा खेल")#रंगों को परिभाषित करें
काला = (0, 0, 0)
सफ़ेद = (255, 255, 255)
ग्रे = (128, 128, 128)# प्लेयर गुण
प्लेयर_एक्स = 400
प्लेयर_वाई = 500
प्लेयर_स्पीड = 5#शत्रु संपत्ति
शत्रु_x = 400
शत्रु_य = 100
शत्रु_गति = 3दौड़ना= सत्य
घड़ी = pygame.time. घड़ी()जबकि दौड़ना:
के लिए आयोजन में pygame.event.get():
अगर इवेंट.प्रकार == छोड़ें:
दौड़ना= असत्यकुंजी = pygame.key.get_pressed()
# खिलाड़ी आंदोलन
अगर कुंजियाँ[K_LEFT] और प्लेयर_एक्स > 0:
प्लेयर_एक्स - = प्लेयर_स्पीड
अगर कुंजियाँ[K_RIGHT] और प्लेयर_एक्स प्लेयर_एक्स += प्लेयर_स्पीड# दुश्मन की स्थिति अपडेट करें
शत्रु_य += शत्रु_गति
अगर शत्रु_वाई > स्क्रीन_ऊंचाई:
शत्रु_य = -50# टकराव की जाँच करें
अगर pygame. रेक्ट (प्लेयर_एक्स, प्लेयर_वाई, 50, 50.colliderect (pygame. रेक्ट (शत्रु_x, शत्रु_y, 50, 50)):
# यहां डायलॉग बॉक्स लागू करें
उत्तीर्णस्क्रीन.फिल (काला)
pygame.draw.rect (स्क्रीन, सफेद, (प्लेयर_एक्स, प्लेयर_वाई, 50, 50))
pygame.draw.rect (स्क्रीन, सफेद, (दुश्मन_x, दुश्मन_y, 50, 50))
pygame.display.flip()
घड़ी.टिक(60)
pygame.छोड़ें()
नीचे आउटपुट है:
डायलॉग बॉक्स बनाएं
एक संवाद बॉक्स को लागू करने के लिए, जब भी खिलाड़ी दुश्मन को छूता है तो आपको इसे प्रदर्शित करना होगा। जोड़ें संवाद_बॉक्स वैरिएबल, जो नियंत्रित करता है कि डायलॉग बॉक्स प्रदर्शित होना चाहिए या नहीं।
गेम लूप के अंदर, खिलाड़ी और दुश्मन के बीच टकराव की जाँच करें, और यदि कोई टकराव हो, तो सेट करें संवाद_बॉक्स को सत्य. जिस स्थिति में संवाद_बॉक्स है सत्य, का उपयोग करके स्क्रीन पर एक ग्रे आयत बनाएं pygame.draw.rect() संवाद बॉक्स का प्रतिनिधित्व करने के लिए.
नामक एक नई फ़ाइल बनाएँ संवाद.py और नीचे दिए गए अपडेट के साथ कोड जोड़ें:
# संवाद बॉक्स गुण
डायलॉग_बॉक्स_विड्थ = 400
संवाद_बॉक्स_ऊंचाई = 200
डायलॉग_बॉक्स_एक्स = (स्क्रीन_विड्थ - डायलॉग_बॉक्स_विड्थ) // 2
डायलॉग_बॉक्स_वाई = (स्क्रीन_हाइट - डायलॉग_बॉक्स_हाइट) // 2
संवाद_बॉक्स= असत्य
# ...
जबकि दौड़ना:
के लिए आयोजन में pygame.event.get():
अगर इवेंट.प्रकार == छोड़ें:
दौड़ना= असत्य
कुंजी = pygame.key.get_pressed()
# खिलाड़ी आंदोलन
अगर कुंजियाँ[K_LEFT] और प्लेयर_एक्स > 0:
प्लेयर_एक्स - = प्लेयर_स्पीड
अगर कुंजियाँ[K_RIGHT] और प्लेयर_एक्स प्लेयर_एक्स += प्लेयर_स्पीड
# दुश्मन की स्थिति अपडेट करें
शत्रु_य += शत्रु_गति
अगर शत्रु_वाई > स्क्रीन_ऊंचाई:
शत्रु_य = -50
# टकराव की जाँच करें
अगर pygame. रेक्ट (प्लेयर_एक्स, प्लेयर_वाई, 50, 50.colliderect (pygame. रेक्ट (शत्रु_x, शत्रु_y, 50, 50)):
संवाद_बॉक्स= सत्य
स्क्रीन.फिल (काला)
अगर संवाद_बॉक्स:
pygame.draw.rect (स्क्रीन, ग्रे, (डायलॉग_बॉक्स_x,
डायलॉग_बॉक्स_y,
संवाद_बॉक्स_चौड़ाई,
संवाद_बॉक्स_ऊंचाई))
# यहां संवाद पाठ और बटन जोड़ें
अन्य:
pygame.draw.rect (स्क्रीन, सफेद, (प्लेयर_एक्स, प्लेयर_वाई, 50, 50))
pygame.draw.rect (स्क्रीन, सफेद, (दुश्मन_x, दुश्मन_y, 50, 50))
pygame.display.flip()
घड़ी.टिक(60)
pygame.छोड़ें()
नीचे आउटपुट है:
अब, डायलॉग बॉक्स को अधिक कार्यात्मक और इंटरैक्टिव बनाने के लिए, आप बटन और टेक्स्ट जोड़ने के लिए आगे बढ़ सकते हैं।
पायथन जीयूआई का उपयोग करके बटन जोड़ें
संवाद बॉक्स में बटन जोड़ने के लिए, आप Pygame GUI या PySimpleGUI जैसी Python GUI लाइब्रेरी का उपयोग कर सकते हैं।
स्थापित करें और आयात करें pygame_gui मॉड्यूल, फिर एक Pygame GUI मैनेजर का उपयोग करके बनाएं pygame_gui. यूआई प्रबंधक. उसके बाद, का उपयोग करके एक बटन बनाएं यूआईबटन पायथन जीयूआई लाइब्रेरी द्वारा प्रदान की गई कक्षा।
गेम लूप के अंदर, जोड़ें मैनेजर.अपडेट (pygame.time.get_ticks() / 1000.0) GUI प्रबंधक को अद्यतन करने के लिए, और प्रबंधक.draw_ui (स्क्रीन) स्क्रीन पर GUI तत्व बनाने के लिए।
नामक एक नई फ़ाइल बनाएँ बटन.पी.ई और नीचे दिए गए अपडेट के साथ कोड जोड़ें:
आयात pygame_gui# पायगेम जीयूआई प्रबंधक
मैनेजर = pygame_gui. UIManager((स्क्रीन_विड्थ, स्क्रीन_ऊंचाई))# एक बटन बनाएं
बटन_चौड़ाई = 100
बटन_ऊंचाई = 30
बटन_एक्स = डायलॉग_बॉक्स_एक्स + (डायलॉग_बॉक्स_विड्थ - बटन_विड्थ) // 2
बटन_वाई = डायलॉग_बॉक्स_वाई + (डायलॉग_बॉक्स_हाइट - बटन_हाइट) // 2
बटन = pygame_gui.elements. यूआईबटन (relative_rect=pygame. आयताकार (बटन_x, बटन_y, बटन_चौड़ाई, बटन_ऊंचाई),
पाठ='मुझे क्लिक करें',
प्रबंधक=प्रबंधक)दौड़ना= सत्य
घड़ी = pygame.time. घड़ी()जबकि दौड़ना:
के लिए आयोजन में pygame.event.get():
अगर इवेंट.प्रकार == pygame. छोड़ना:
दौड़ना= असत्यप्रबंधक.प्रक्रिया_घटनाएँ (घटना)
कुंजी = pygame.key.get_pressed()
# टकराव की जाँच करें
अगर pygame. रेक्ट (प्लेयर_एक्स, प्लेयर_वाई, 50, 50.colliderect (pygame. रेक्ट (शत्रु_x, शत्रु_y, 50, 50)):
संवाद_बॉक्स= सत्यस्क्रीन.फिल (काला)
अगर संवाद_बॉक्स:
pygame.draw.rect (स्क्रीन, ग्रे, (डायलॉग_बॉक्स_x,
डायलॉग_बॉक्स_y,
संवाद_बॉक्स_चौड़ाई,
संवाद_बॉक्स_ऊंचाई))
मैनेजर.अपडेट (pygame.time.get_ticks() / 1000.0)
प्रबंधक.draw_ui (स्क्रीन)
अन्य:
pygame.draw.rect (स्क्रीन, सफेद, (प्लेयर_एक्स, प्लेयर_वाई, 50, 50))
pygame.draw.rect (स्क्रीन, सफेद, (दुश्मन_x, दुश्मन_y, 50, 50))pygame.display.flip()
घड़ी.टिक(60)
pygame.छोड़ें()
नीचे आउटपुट है:
इन परिवर्तनों के साथ, बटन अब संवाद बॉक्स के प्रकट होने पर उसके अंदर दिखाई देना चाहिए।
पायथन जीयूआई का उपयोग करके टेक्स्ट जोड़ें
संवाद बॉक्स में कस्टम टेक्स्ट प्रदर्शित करने के लिए, आप पायथन जीयूआई लाइब्रेरी द्वारा प्रदान की गई टेक्स्ट कार्यक्षमता का उपयोग कर सकते हैं।
का उपयोग करके फ़ॉन्ट गुणों को परिभाषित करें pygame.font. फ़ॉन्ट(). एक बनाने के मूलपाठ वांछित सामग्री के साथ परिवर्तनीय, और फिर निर्दिष्ट फ़ॉन्ट और रंग का उपयोग करके इसे प्रस्तुत करें।
नामक एक नई फ़ाइल बनाएँ text.py और नीचे दिए गए अपडेट के साथ कोड जोड़ें:
# Pygame GUI मैनेजर को इनिशियलाइज़ करें
मैनेजर = pygame_gui. UIManager((स्क्रीन_विड्थ, स्क्रीन_ऊंचाई))# फ़ॉन्ट गुणों को परिभाषित करें
फ़ॉन्ट = pygame.font. फ़ॉन्ट(कोई नहीं, 24)
text_color = काला# ...
जबकि दौड़ना:
# ...अगर संवाद_बॉक्स:
pygame.draw.rect (स्क्रीन, ग्रे, (डायलॉग_बॉक्स_x,
डायलॉग_बॉक्स_y,
संवाद_बॉक्स_चौड़ाई,
संवाद_बॉक्स_ऊंचाई))# डायलॉग बॉक्स में टेक्स्ट जोड़ें
पाठ = "नमस्कार, खेल में आपका स्वागत है!"
रेंडर_टेक्स्ट = फ़ॉन्ट.रेंडर (टेक्स्ट, सत्य, पाठ का रंग)
text_rect = rendered_text.get_rect (केंद्र=(संवाद_बॉक्स_x + संवाद_बॉक्स_विड्थ // 2,
डायलॉग_बॉक्स_वाई + डायलॉग_बॉक्स_हाइट // 2))
स्क्रीन.ब्लिट (रेंडर_टेक्स्ट, टेक्स्ट_रेक्ट)
नीचे आउटपुट है:
अतिरिक्त सुविधाओं सहित
बटन और टेक्स्ट के अलावा, कई अन्य सुविधाएं हैं जिन्हें आप Pygame में अपने संवाद सिस्टम में जोड़ने पर विचार कर सकते हैं। यहां कुछ और उदाहरण दिए गए हैं:
चरित्र भावनाएँ
संवाद के दौरान पात्रों की मनोदशा या प्रतिक्रिया व्यक्त करने के लिए उनकी भावनाओं या चेहरे के भावों को प्रदर्शित करें। इसे एनिमेटेड स्प्राइट या छवि ओवरले का उपयोग करके प्राप्त किया जा सकता है जो बातचीत के संदर्भ के आधार पर बदलते हैं।
सशर्त संवाद
खिलाड़ी की प्रगति, पिछली पसंद या इन-गेम घटनाओं जैसे कुछ मानदंडों के आधार पर विशिष्ट संवादों को ट्रिगर करने के लिए सशर्त बयानों का उपयोग करें। यह खिलाड़ी के कार्यों के आधार पर गहराई और वैयक्तिकृत इंटरैक्शन जोड़ता है।
वॉयस ओवर
चरित्र संवादों के लिए ध्वनि अभिनय को शामिल करके संवाद प्रणाली के विसर्जन को बढ़ाएं। Pygame में ऑडियो क्लिप चलाएं जो पात्रों को एक अलग आवाज देने के लिए संवाद बॉक्स में प्रदर्शित पाठ से मेल खाता है।
इन अतिरिक्त सुविधाओं को शामिल करके, आप एक अधिक गतिशील और आकर्षक संवाद प्रणाली बना सकते हैं जो खिलाड़ी के विसर्जन को बढ़ाती है और एक अद्वितीय गेमप्ले अनुभव प्रदान करती है।
संवाद प्रणाली जोड़ने के लिए सर्वोत्तम अभ्यास
Pygame में एक संवाद प्रणाली लागू करते समय, दक्षता, रखरखाव और एक सहज खिलाड़ी अनुभव सुनिश्चित करने के लिए कुछ सर्वोत्तम प्रथाओं का पालन करना महत्वपूर्ण है। विचार करने के लिए यहां कुछ अतिरिक्त सर्वोत्तम प्रथाएं दी गई हैं:
डेटा-संचालित डिज़ाइन का उपयोग करें
बाहरी डेटा फ़ाइलों (जैसे, JSON, XML) में टेक्स्ट, स्पीकर जानकारी और संवाद विकल्प सहित संवाद सामग्री संग्रहीत करें। यह कोड परिवर्तन की आवश्यकता के बिना संवाद सामग्री के आसान संशोधन, स्थानीयकरण और प्रबंधन की अनुमति देता है।
एक संवाद प्रबंधक लागू करें
एक समर्पित संवाद प्रबंधक वर्ग या मॉड्यूल बनाएं जो संवाद इंटरैक्शन के प्रबंधन के लिए तर्क को संभालता है। यह कोड को व्यवस्थित रखने में मदद करता है और आसान रखरखाव और विस्तारशीलता की अनुमति देता है।
खेल परीक्षण और संतुलन
यह सुनिश्चित करने के लिए नियमित रूप से संवाद प्रणाली का परीक्षण और संतुलन करें कि संवाद स्वाभाविक रूप से प्रवाहित हों, विकल्पों के सार्थक परिणाम हों और गति समग्र गेमप्ले अनुभव के साथ संरेखित हो। खिलाड़ियों से प्रतिक्रिया एकत्र करें और खिलाड़ियों की सहभागिता को बेहतर बनाने के लिए संवाद सामग्री और संरचना पर पुनरावृति करें।
स्थानीयकरण समर्थन
संवाद प्रणाली को शुरू से ही स्थानीयकरण को ध्यान में रखकर डिज़ाइन करें। कोड से टेक्स्ट स्ट्रिंग को अलग करें और एकाधिक भाषाओं का समर्थन करने के लिए भाषा फ़ाइलों या स्थानीयकरण लाइब्रेरी का उपयोग करें। यह संवाद सामग्री के आसान अनुवाद और स्थानीयकरण की अनुमति देता है।
इन सर्वोत्तम प्रथाओं का पालन करके, आप यह सुनिश्चित कर सकते हैं कि आपकी संवाद प्रणाली अच्छी तरह से डिज़ाइन की गई, कुशल और लचीली है, जिससे आपके गेम के विकसित होने पर आसान रखरखाव और अपडेट की अनुमति मिलती है।
संवाद प्रणाली से खेलों को और अधिक रोचक बनाएं
अपने गेम में एक संवाद प्रणाली जोड़ने से खिलाड़ियों को गैर-खिलाड़ी पात्रों (एनपीसी) के साथ बातचीत करने, कहानी को उजागर करने, विकल्प चुनने और बहुमूल्य जानकारी प्राप्त करने की अनुमति देकर इसे और अधिक आकर्षक बनाया जा सकता है।
संवाद संरचना को सोच-समझकर डिज़ाइन करना याद रखें, एक मॉड्यूलर दृष्टिकोण का उपयोग करें और खिलाड़ी के अनुभव को और समृद्ध करने के लिए संग्रहणीय वस्तुओं और स्तरों को एकीकृत करने पर विचार करें।