Hangman

Hangman

कठिन

निर्देश

फंक्शनल रिएक्टिव प्रोग्रामिंग का उपयोग करके हैंगमैन खेल का तर्क लागू कीजिए।

हैंगमैन शब्दों का अनुमान लगाने वाला एक सरल खेल है।

फंक्शनल रिएक्टिव प्रोग्रामिंग इंटरैक्टिव प्रोग्राम लिखने का एक तरीका है। यह सामान्य दृष्टिकोण से इस तरह अलग है: "जब बटन दबाया जाए तो काउंटर बढ़ाइए" कहने के बजाय आप लिखते हैं "काउंटर की वैल्यू बटन दबाए जाने की संख्या का जोड़ है।"

फंक्शनल रिएक्टिव प्रोग्रामिंग का उपयोग करके हैंगमैन के पीछे का बुनियादी तर्क लागू कीजिए। इसके लिए आपको एक FRP लाइब्रेरी इंस्टॉल करनी होगी। यह इस अभ्यास की भाषा और ट्रैक के अनुसार अलग-अलग फाइलों में बताया गया है।

अभ्यास का नया तरीका

FRP लाइब्रेरी से जुड़े हिस्से को छोड़ दीजिए। इस अभ्यास के लिए किसी थर्ड पार्टी लाइब्रेरी की ज़रूरत नहीं है। यह अभ्यास कॉलबैक और Tcl के इवेंट लूप का इस्तेमाल करके इवेंट-ड्रिवन प्रोग्रामिंग पर केंद्रित है।

आपको एक TCP सर्वर और एक डोमेन-स्पेसिफिक प्रोटोकॉल बनाना है। इस सर्वर को उस शब्द के साथ शुरू किया जाता है जिसका अनुमान लगाना है। टेस्ट स्क्रिप्ट उस क्लाइंट को लागू करती है जो सर्वर को कमांड भेजता है।

डोमेन-स्पेसिफिक प्रोटोकॉल

प्रोटोकॉल के जो कमांड आपको लागू करने हैं, वे ये हैं:

  • STATUS खेल की वर्तमान स्थिति लौटाता है। जवाब एक ऐरे होगा जिसमें तीन एलिमेंट होंगे:
    1. बचे हुए गलत अनुमानों की संख्या,
    2. जिन अक्षरों का अनुमान नहीं लगाया गया, उनके लिए अंडरस्कोर से छिपाया गया शब्द, और
    3. एक स्टेटस फील्ड ("ongoing", "win" या "lose" में से एक)
  • GUESS x जहाँ x वह अक्षर है जिसका अनुमान लगाना है। हर अनुमान के बाद सर्वर स्टेटस वाली ऐरे के साथ जवाब देगा।
  • SHUTDOWN सर्वर को दूर से बंद करने के लिए। बाकी हालात में सर्वर जीत या हार के बाद खुद बंद हो जाएगा।

सर्वर को इन कमांड को केस की परवाह किए बिना संभाल पाना चाहिए।

सर्वर कौन-सा पोर्ट इस्तेमाल करता है?

अपना सर्वर पोर्ट नंबर 0 से शुरू कीजिए: Tcl खुद कोई खाली पोर्ट ढूँढ लेगा, इसलिए हमें टेस्ट स्क्रिप्ट में पोर्ट नंबर हार्डकोड करने की ज़रूरत नहीं है। एक ही प्रोसेस में चलने वाले सारे इंटरप्रेटर (थ्रेड सहित) एक ही वातावरण साझा करते हैं, इसलिए सर्वर ग्लोबल env ऐरे का इस्तेमाल करके अपना पोर्ट टेस्ट स्क्रिप्ट को बता सकता है। शुरुआती hangman.tcl फाइल में एक उदाहरण मौजूद है।

संकेत

आपको इन Tcl कमांड की ज़रूरत पड़ेगी: socket, fileevent, vwait.

शुरुआत करने के लिए यह उदाहरण सॉकेट प्रोग्राम देख सकते हैं।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Tcl Exercism

Hangman शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Tcl को 135 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।