Database
 sql >> डेटाबेस >  >> RDS >> Database

डोमिनोज़ का रहस्य, या एक डोमिनोज़ गेम डेटा मॉडल

डोमिनोज़ जैसे बोर्ड गेम अभी भी बहुत लोकप्रिय हैं। आइए डेटा मॉडलिंग के दृष्टिकोण से डोमिनोज़ पर एक नज़र डालें।

डोमिनोज़ का खेल सैकड़ों वर्षों से चला आ रहा है, और यह पूरी दुनिया में खेला जाता है। जैसा कि आप उम्मीद कर सकते हैं, इसका मतलब है कि खेल में बहुत सारी विविधताएँ! इस लेख में, हम एक ऐसे डेटा मॉडल की जांच करने जा रहे हैं जो सबसे सामान्य वेरिएंट - ड्रा और ब्लॉक का समर्थन कर सकता है। इन दो प्रकारों की मूल बातें लगभग समान हैं; नियमों में बस थोड़ा सा अंतर है। डोमिनोज़ दो या दो से अधिक खिलाड़ियों द्वारा खेला जा सकता है, इसलिए हमारा डेटा मॉडल कई खिलाड़ियों का समर्थन करेगा।

आइए डोमिनोज़ गेमप्ले की कुछ बुनियादी बातों से शुरुआत करें, फिर हम डेटा मॉडल पर आगे बढ़ेंगे।

डोमिनोज़ के बारे में हमें क्या जानना चाहिए?

  • एक डोमिनोज़ सेट में 28 प्लेइंग पीस होते हैं, जिन्हें 'बोन्स' या 'टाइल्स' कहा जाता है। वे आयताकार होते हैं, जिनके बीच में एक रेखा होती है जो प्रत्येक टाइल को दो वर्गाकार सिरों (या फलकों) में विभाजित करती है।
  • प्रत्येक छोर पर 0 से 6 तक के कई धब्बे होते हैं। इन धब्बों को 'पिप्स' कहा जाता है।
  • दोनों सिरों पर समान मान वाली टाइलें 'डबल्स' कहलाती हैं, उदा। डबल-सिक्स के प्रत्येक सिरे पर छह पिप्स होते हैं।
  • खेल की सतह पर डोमिनोज़ के संग्रह को लाइन ऑफ़ प्ले कहा जाता है। खेल की पंक्ति के सिरों को शाखा के कोने कहा जाता है। शाखा के कोने जहां खिलाड़ी नई टाइलें खेल सकते हैं।

गेम शुरू करना

  • सभी टाइलें एक टेबल पर आमने-सामने रखी गई हैं।
  • यदि 2-3 खिलाड़ी हैं, तो प्रत्येक खिलाड़ी 7 टाइलें खींचता है। यदि 4-5 खिलाड़ी हैं, तो प्रत्येक खिलाड़ी 5 टाइलें खींचता है। शेष टाइलों को 'बोनयार्ड' नामक ढेर में छोड़ दिया जाता है।
  • सबसे ज्यादा डबल वाले खिलाड़ी को पहली चाल मिलती है। प्ले आमतौर पर दक्षिणावर्त चलता है।
  • डोमिनोज़ खेलने के लिए, एक खिलाड़ी एक टाइल के बगल में एक टाइल रखता है जो पहले से ही टेबल पर रखी गई है। टाइलों के सिरों का मिलान होना चाहिए, यानी एक दो-पाइप वाला सिरा केवल दूसरे दो-पाइप सिरे के बगल में रखा जा सकता है। (नोट:कुछ गेम वेरिएंट के मिलान के संबंध में अलग-अलग नियम हैं।)

खेल के नियम

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

डोमिनोज़ गेम जीतना

  • एक ड्रॉ गेम में, अपनी सभी टाइलें खेलने वाला पहला खिलाड़ी जीत जाता है। खेल तब तक जारी रह सकता है (या नहीं) जब तक खेल की पंक्ति के दोनों छोर अवरुद्ध नहीं हो जाते और बोनीर्ड में कोई और डोमिनोज़ नहीं बचे।
  • ब्लॉक गेम में, सबसे कम टाइल वाला खिलाड़ी जीतता है जब छोर अवरुद्ध हो जाते हैं और किसी के पास खेलने योग्य टाइल नहीं बची होती है।

स्कोरिंग

ड्रॉ गेम में, हारने वाले के शेष डोमिनोज़ पर पिप्स का योग विजेता का स्कोर होता है। एक ब्लॉक गेम में, बचे हुए पिप्स की सबसे कम राशि वाला व्यक्ति जीतता है; यह खिलाड़ी अपने प्रतिद्वंद्वी के योग से अपना योग घटाता है; अंतर विजेता का स्कोर है। नोट:कुछ खेलों में, खिलाड़ियों को जीतने के लिए न्यूनतम स्कोर तक पहुंचना चाहिए।

डोमिनोज़ डेटा मॉडल

डोमिनोज़ डेटा मॉडल में दो विषय क्षेत्र होते हैं:

  • “Entities: players, dominoes and games” और
  • “Game progress and tracking”

हम सूचीबद्ध किए गए क्रम में प्रत्येक विषय क्षेत्र पर चर्चा करेंगे।




विषय क्षेत्र 1:खिलाड़ी, डोमिनोज़ और खेल

इस विषय क्षेत्र में वह शामिल है जिसे हम डोमिनोज़ गेम की मुख्य इकाई कह सकते हैं:खिलाड़ी, डोमिनोज़ टाइल और गेम।

"खिलाड़ी" तालिका सभी व्यक्तिगत खिलाड़ियों के लिए प्रोफ़ाइल विवरण रखती है। इस तालिका में कॉलम हैं:

  • id -प्रत्येक खिलाड़ी के लिए एक अद्वितीय आईडी।
  • player_name - खिलाड़ी का पहला और अंतिम नाम।

इस तालिका के निम्नलिखित कॉलम प्रत्येक खिलाड़ी के खेल के आंकड़े संग्रहीत करते हैं:

  • num_block_game_played - खिलाड़ी द्वारा खेले गए ब्लॉक गेम की संख्या।
  • num_draw_game_played - ड्रॉ गेम की संख्या जो खिलाड़ी ने खेला है।
  • num_block_game_win - खिलाड़ी द्वारा जीते गए ब्लॉक गेम की संख्या।
  • num_draw_game_win - खिलाड़ी द्वारा जीते गए ड्रॉ गेम की संख्या।
  • highest_block_score - ब्लॉक गेम में खिलाड़ी का अब तक का सर्वोच्च स्कोर।
  • highest_draw_score - ड्रॉ गेम में खिलाड़ी का अब तक का सर्वोच्च स्कोर।

bone " तालिका में स्वयं डोमिनोज़ टाइलों के बारे में जानकारी है। इस तालिका में कॉलम हैं:

  • id - प्रत्येक टाइल के लिए एक अनूठी कुंजी। इस कुंजी को अन्य तालिकाओं द्वारा संदर्भित किया जाएगा।
  • first_face_value - पहले चेहरे (अंत) पर बिंदुओं की संख्या।
  • second_face_value - दूसरे चेहरे (अंत) पर बिंदुओं की संख्या।

game "तालिका खेलों के बारे में जानकारी संग्रहीत करती है। इस तालिका में कॉलम हैं:

  • id - इस तालिका की प्राथमिक कुंजी; यह प्रत्येक खेल की विशिष्ट रूप से पहचान करता है।
  • game_variant - खेला गया संस्करण, यानी "ब्लॉक" या "ड्रा"।
  • score_to_win - गेम जीतने के लिए आवश्यक न्यूनतम स्कोर।
  • num_round_complete - उस खेल में खेले गए राउंड की संख्या। प्रत्येक गेम में आमतौर पर कई राउंड होते हैं और यह तब तक चलता है जब तक कि कोई विजेता स्कोर हासिल नहीं कर लेता।

"player_in_game "तालिका हमें बताती है कि कौन से खिलाड़ी खेल में भाग लेते हैं। player_id के अलावा , यह तालिका उनके वर्तमान स्कोर को player_curr_score . में रखती है कॉलम। जब कोई खिलाड़ी जीतता है, तो is_winner . में एक "Y" रखा जाता है कॉलम। चूंकि एक से अधिक खिलाड़ी एक गेम जीत सकते हैं, इसलिए हम इस विवरण को "game " टेबल।

विषय क्षेत्र 2:खेल प्रगति और ट्रैकिंग

जैसा कि कोई भी डोमिनोज़ खिलाड़ी जानता है, खेल की वास्तविक क्रिया उसके हाथों, गोलों और चालों से बनी होती है - छोटे विवरण जो किसी खेल को बनाते या बिगाड़ते हैं। यह विषय क्षेत्र उन विवरणों को संभालेगा।

एक खेल में आमतौर पर कई राउंड की आवश्यकता होती है। प्रत्येक दौर के लिए, प्रत्येक खिलाड़ी को कई टाइलें वितरित की जाती हैं। आइए टाइल्स के इस वितरण को "हाथ" कहें। हर बार जब कोई दौर शुरू होता है, तो प्रत्येक खिलाड़ी के पास टाइलों का हाथ होता है जिसे वे खेल सकते हैं। (नोट:कुछ ड्रा खेलों में, प्रत्येक हाथ में टाइलों की संख्या सात से अधिक हो सकती है।)

round “तालिका प्रत्येक दौर का विवरण संग्रहीत करती है। इसमें खेल की वर्तमान स्थिति का एक स्नैपशॉट शामिल है, उदा। शाखा कोनों में वर्तमान टाइल मान। इस तालिका में कॉलम हैं:

  • id - हर राउंड के लिए एक यूनिक नंबर दिया गया है।
  • game_id - संदर्भ "game ” तालिका और उस खेल को इंगित करता है जो राउंड से संबंधित है।
  • left_branch_value - बाएं . का मान रखता है शाखा का कोना। अगली चाल में मेल खाने वाले मान (पिप्स की संख्या) वाली कोई भी टाइल चलाई जा सकती है।
  • right_branch_value - दाएं . का मान रखता है शाखा का कोना। अगली चाल में मेल खाने वाले मान (पिप्स की संख्या) वाली कोई भी टाइल चलाई जा सकती है।
  • curr_num_tiles_boneyard - किसी भी समय बोनी में टाइलों की संख्या। हर बार जब कोई खिलाड़ी टाइल खींचता है तो यह कॉलम मान एक से कम हो जाएगा। ड्रॉ गेम के दौरान यह कॉलम उपयोगी है।

hand "तालिका एक दौर के दौरान खिलाड़ियों के हाथों में सभी टाइलों को रिकॉर्ड करती है। इस तालिका में कॉलम हैं:

  • id - इस तालिका की प्राथमिक कुंजी।
  • round_id - संदर्भ "round ” तालिका और प्रासंगिक दौर को इंगित करता है।
  • player_id - संदर्भ "player ” तालिका और प्रासंगिक खिलाड़ी को इंगित करता है।
  • bone_id – संदर्भ “bone ” तालिका और इंगित करती है कि खिलाड़ी के हाथ में कौन सी टाइलें हैं/हैं।
  • is_played - क्या कोई टाइल बजायी गई है। प्रारंभ में, यह कॉलम शून्य होगा। यह केवल 'Y' से आबाद होगा जब एक टाइल बजाया जाएगा। एक ही टाइल को एक राउंड में दो बार नहीं चलाया जा सकता।
  • is_fetched -इस कॉलम में 'Y' यह दर्शाता है कि टाइलें एक चाल में खींची गई हैं। ड्रॉ गेम के लिए उपयोगी।

move "तालिका एक दौर में खेली गई प्रत्येक टाइल के लिए चाल अनुक्रम रिकॉर्ड करती है। इस तालिका में कॉलम हैं:

  • id - एक दौर में प्रत्येक चाल की विशिष्ट रूप से पहचान करता है।
  • round_id - संदर्भ "round ” तालिका और प्रासंगिक दौर को इंगित करता है।
  • move_type - चाल का प्रकार, यानी पास (पी), ड्रा (डी) या लेट (एल)।
  • hand_id - संदर्भ "hand ” तालिका और इंगित करती है कि कौन सा खिलाड़ी चाल चल रहा है।
  • branch_played_at - उस शाखा (बाएं या दाएं) को दर्शाता है जहां चाल चल रही है। यह कॉलम केवल 'लेट डाउन' मूव के मामले में ही भरा जाएगा।
  • move_sequence - यह संख्या कॉलम 1 से शुरू होता है और प्रत्येक चाल के बाद एक से बढ़ जाता है।

"player_round_score तालिका प्रत्येक दौर के लिए अलग-अलग खिलाड़ियों के स्कोर को संग्रहीत करती है। इस तालिका में एक मिश्रित प्राथमिक कुंजी है जो game_id . से बनी है , player_id , और round_id स्तंभ। game_id और player_id कॉलम "player_in_game " टेबल।

आप डोमिनोज़ डेटा मॉडल में क्या जोड़ेंगे?

बेसिक ट्रेन, मैक्सिकन ट्रेन, चिकन फुट, बेंडोमिनो, साइप्रस, माल्टीज़ क्रॉस, मैटाडोर, स्पिनर - ये डोमिनोज़ के कई प्रकारों में से कुछ हैं! आपको क्या लगता है कि उन खेलों को समायोजित करने के लिए इस मॉडल का विस्तार करने में क्या लगेगा? आप मूल मॉडल में क्या बदलेंगे या जोड़ेंगे? हमें नीचे टिप्पणी अनुभाग में बताएं!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डीबीएमएस ट्यूटोरियल:डीबीएमएस पर एक पूर्ण क्रैश कोर्स

  2. मेटाडेटा डिस्कवरी विज़ार्ड का उपयोग करना

  3. एसक्यूएल चयन औसत

  4. नामित उदाहरणों का उपयोग करना? अपने डीएसी कनेक्शन का परीक्षण करें!

  5. ऑप्टिमाइज़ेशन थ्रेशोल्ड - डेटा को समूहीकृत और एकत्र करना, भाग 4