चूंकि मुझे निकट भविष्य में एक सिस्टम थिंकिंग कार्यशाला आयोजित करने की आवश्यकता है, मुझे इसे शुरू करने के लिए एक बियर गेम की आवश्यकता है।
बीयर गेम में चार अक्षर होते हैं: खुदरा विक्रेता, थोक विक्रेता, वितरक और फैक्टरी। सिस्टम परिप्रेक्ष्य को समझने के लिए लॉजिस्टिक्स की समय-विलंब प्रकृति के माध्यम से, और सिस्टम सीमाओं की बेहतर समझ हो सकती है।
चूंकि यह कुछ घंटों की कार्यशाला है, मैं चाहता हूं कि यह बियर गेम निम्नलिखित विशेषताओं को पूरा करे।
यह एक मल्टीप्लेयर गेम है।
बीयर गेम में कई प्रतिभागी होंगे जो आपूर्ति श्रृंखला में विभिन्न भूमिकाएं निभाएंगे, लेकिन मैं एक ही समय में कई आपूर्ति श्रृंखलाओं में प्रतिस्पर्धा करने में सक्षम होना चाहूंगा, यह देखने के लिए कि कौन अधिक स्कोर करता है। इस प्रकार, हम एक ही समय में उनकी सिस्टम रणनीतियों के बारे में जान सकते हैं।
गेम होस्ट को हर किसी की स्थिति देखने में सक्षम होना चाहिए।
चूंकि एक ही समय में कई टीमें प्रतिस्पर्धा कर रही हैं, एक मेजबान के रूप में मुझे यह देखने में सक्षम होना होगा कि प्रत्येक टीम इस समय कैसे प्रगति कर रही है और स्कोरिंग कर रही है।
खेल का प्रवाह सरल होना चाहिए और गति को नियंत्रित करना आसान होना चाहिए।
जैसा कि मैंने शुरुआत में कहा था, यह एक छोटी कार्यशाला है, इसलिए मुझे सभी को जल्दी से गति प्रदान करने की आवश्यकता है और मुझे प्रत्येक दौर के विवरण को नियंत्रित करने में सक्षम होने की आवश्यकता है।
इसके अलावा, प्रत्येक राउंड की शुरुआत में खिलाड़ी के यूआई में एक टाइमर दिखाई देता है, जो उल्टी गिनती करके खेल की गति को आगे बढ़ाता है।
पात्रों को अनुकूलित करने में सक्षम हो।
एक क्लासिक बियर गेम में चार अक्षर होते हैं, लेकिन जितने अधिक अक्षर होंगे, खेल उतना ही लंबा होगा। इसलिए मैं खेल की गति को समायोजित करना चाहूंगा ताकि तीन अक्षर रखना बेहतर हो।
चारों ओर खोजने के बाद, मैंने पाया कि न तो ओपन सोर्स प्रोजेक्ट और न ही पहले से ऑनलाइन मौजूद प्रोजेक्ट इन आवश्यकताओं को पूरी तरह से पूरा कर सकते हैं। इसलिए, बेहतर होगा कि मैं स्वयं एक बनाऊं।
https://github.com/wirelessr/beer_game
होस्ट यूआई
प्लेयर यूआई
संपूर्ण परियोजना 90% से अधिक कवरेज के साथ व्यवसाय संचालित विकसित और परीक्षणित है, इसलिए कृपया बेझिझक इसका उपयोग करें।
प्रोजेक्ट फ़ोल्डर में रहस्यों के लिए एक फ़ाइल बनाएं। आपको मुझे इसे Dockerfile में कॉपी करते हुए देखना चाहिए।
.streamlit/secrets.toml
[mongo] uri = "" [admin] key = " " [player] key = " "
चूंकि यह प्रोजेक्ट MongoDB का उपयोग कर रहा है, इसलिए आपको अपने खाते के पासवर्ड के साथ लिंक भरना होगा। इसके अलावा, admin.key और प्लेयर.key UI पर प्रमुख फ़ील्ड से मेल खाते हैं।
आखिरकार, मैं ऐप को सार्वजनिक क्लाउड पर अपलोड कर रहा हूं, इसलिए मुझे अभी भी एक बुनियादी प्रमाणीकरण तंत्र की आवश्यकता है। यदि आप केवल स्थानीय रूप से चला रहे हैं और प्रमाणीकरण में परेशानी आ रही है, तो आप संबंधित स्रोत कोड को हटा सकते हैं।
इस प्रोजेक्ट में एक डॉकरफ़ाइल संलग्न है, इसलिए इसे सीधे डॉकर के साथ चलाया जा सकता है।
docker build -t beer_game . docker run --rm --name beer -p 8501:8501 beer_game
विकास के लिए, requiremnts.txt के अलावा, require-test.txt, जो यूनिट परीक्षण चलाता है, भी स्थापित किया जाना चाहिए। फिर आप मेकफ़ाइल के माध्यम से सभी यूनिट परीक्षण चला सकते हैं।
pip install -r requiremnts.txt pip install -r requirements-test.txt make test
पूरे गेम को होस्ट मोड और पार्टिसिपेंट मोड में विभाजित किया गया है, जो यूआई के शीर्ष कोने में विकल्पों के अनुरूप है।
होस्ट पहले गेम बनाने के लिए एक गेम_आईडी निर्दिष्ट करता है, और सभी प्रतिभागियों को इस आईडी के साथ प्लेयर_गेम भरना होता है।
समान आपूर्ति श्रृंखला के सभी खिलाड़ियों को समान खिलाड़ी_आईडी का उपयोग करने की आवश्यकता होती है, इसलिए इस आईडी को आपूर्ति श्रृंखला आईडी के रूप में भी जाना जाता है, और समान खिलाड़ी_आईडी वाले प्रतिभागियों को खिलाड़ी_भूमिका के अनुसार भूमिकाओं में विभाजित किया जाता है।
किसी प्रतिभागी के शामिल होने पर आप होस्ट की स्क्रीन पर स्थिति देख सकते हैं।
आइए देखें कि मेजबान के दृष्टिकोण से पूर्ण पुनरावृत्ति कैसी दिखेगी।
वे सभी घटक जिन्हें हेरफेर करने की आवश्यकता है वे इस चित्र में हैं, और प्रत्येक मोड़ रीफ्रेश बटन दबाकर शुरू होता है और अगला सप्ताह दबाकर समाप्त होता है।
इस दौर में सभी आपूर्ति श्रृंखलाओं को कितने ऑर्डर भेजने हैं, उन्हें प्लेस ऑर्डर द्वारा ट्रिगर किया जाएगा।
यह उल्लेखनीय है कि प्लेस ऑर्डर स्वयं निष्क्रिय है, इसलिए संख्या को बदलना और इसे फिर से दबाना ठीक है, अंतिम संख्या का उपयोग किया जाएगा। प्रत्येक प्रतिभागी के इंटरफ़ेस का प्लेस ऑर्डर भी निष्क्रिय होगा।
मेज़बान द्वारा ऑर्डर देने के बाद, दुकान चलाने वाला ऑर्डर ले सकता है।
इसी तरह, आपूर्ति श्रृंखला में प्रत्येक भूमिका रिफ्रेश से शुरू होती है और प्लेस ऑर्डर के साथ समाप्त होती है, जिसमें दुकान का खिलाड़ी कार्रवाई करता है और उसके बाद खुदरा विक्रेता का खिलाड़ी, इत्यादि।
अंत में, मेज़बान के पास वापस, जो राउंड की सभी स्थितियाँ देखने के लिए फिर से रिफ्रेश दबा सकता है, और राउंड समाप्त करने के लिए नेक्स्ट वीक दबा सकता है।
रिफ्रेश के दौरान वास्तव में कुछ चीजें की जाती हैं।
चूंकि प्लेस ऑर्डर निष्क्रिय है, रिफ्रेश भी निष्क्रिय है।
यह मूल रूप से अब मेरी सभी जरूरतों को पूरा करता है, लेकिन इसमें कुछ सुधार किए जा सकते हैं।
उदाहरण के लिए, हालांकि मेजबान सभी प्रतिभागियों की स्थिति देख सकता है, लेकिन समय के साथ इन्वेंट्री और लागत की जानकारी में बदलाव दिखाने के लिए एक ग्राफ होना सहायक होगा, जो खेल खत्म होने के बाद इसकी समीक्षा करने के लिए उपयोगी होगा। .
एक और भी बुनियादी समस्या है: वर्तमान यूआई में कोई परीक्षण कवरेज नहीं है, मुख्यतः क्योंकि वर्तमान गेम प्रवाह काफी सरल है। यूआई पर बस कुछ ही क्लिक से पूरा यूआई प्रवाह कवर हो जाएगा, इसलिए मैं ऑटो-टेस्टिंग पर इतना भरोसा नहीं करता। हालाँकि, यदि कोई यूआई संशोधन है, तो यह अभी भी थोड़ा कठिन होगा, इसलिए यूआई यूनिट परीक्षण करना बेहतर होगा।
कुल मिलाकर, ये आवश्यकताएं अनुकूलन हैं, लेकिन उनकी कमी कार्यक्षमता को प्रभावित नहीं करती है।
यदि आपके पास अतिरिक्त विचार हैं, तो आप एक पुल अनुरोध भी सबमिट कर सकते हैं, योगदान का स्वागत है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3