2014-07-16 7 views
5

में अंतिम कार्ड के रूप में "हुकुम का राजा" प्राप्त करना जारी रखें मैं सी # सीखने के प्रयास में एक ब्लैकजैक कार्यक्रम पर काम कर रहा हूं। मेरे पास एक कार्ड क्लास है, और एक डेक सरणी वस्तु है जिसमें कार्ड शामिल हैं। मैंने एक डेकइन प्ले सूची (कार्डों) को पॉप्युलेट करने के लिए डेक सरणी का उपयोग किया, जिसका वास्तव में गेम में उपयोग किया जाएगा। मैंने सरणी इन-गेम की बजाय सूची का उपयोग करना चुना क्योंकि एक सूची गतिशील रूप से आकार बदल सकती है। अब तक, मैं अपनी खुद की समस्याओं को हल करने में सक्षम हूं, लेकिन अब जब मैंने एक शफल डेक विधि बनाई है, तो मुझे एक समस्या है जो वास्तव में मुझे परेशान करता है।सी #: अपना खुद का शफलर लिखा; डेक

के shuffleDeck विधि के लिए मेरे कोड के साथ शुरू करते हैं (मैं रैंडम instantiated के रूप में व्यापारी वर्ग निर्माता में राउंड):

public void shuffleDeck(int timesToShuffle) 
    { 
     for (int i = 0; i <= timesToShuffle; i++) 
     { 
      for (int j = 0; j < 52; j++) 
      { 
       int randomNumber = rnd.Next(0, deckInPlay.Count - 1); 
       Card randomCard = deckInPlay[randomNumber]; 
       shuffler.Add(randomCard); 
       deckInPlay.RemoveAt(randomNumber); 
      } 

      for (int j = 0; j < 52; j++) 
      { 
       int randomNumber = rnd.Next(0, shuffler.Count - 1); 
       Card randomCard = shuffler[randomNumber]; 
       deckInPlay.Add(randomCard); 
       shuffler.RemoveAt(randomNumber); 
      } 
     } 
    } 

आप देख सकते हैं, मैं दो सूचियों का उपयोग कर रहा: deckInPlay सूची है जो वास्तविक डेक मैं इन-गेम का उपयोग करना चाहता हूं, और शफलर सूची, जिसका मुख्य रूप से कार्ड को घुमाने में सहायता करने के लिए उपयोग किया जाता है। मेरा उद्देश्य डेकइनप्ले सूची से यादृच्छिक कार्ड लेने के लिए कोड है और डेकइनप्ले सूची से कार्ड को हटाते समय उन्हें एक-एक करके शफलर सूची में जोड़ें। मैं फिर प्रक्रिया को रिवर्स करना चाहता था: शफलर सूची से यादृच्छिक कार्ड लें और उन्हें डेकइनप्ले सूची में जोड़ें, प्रक्रिया में शफलर सूची से प्रत्येक कार्ड को हटा दें।

पहली नज़र में, ऐसा लगता है कि शफलर ठीक काम करता है। ShuffleDeck को 1 से अधिक पैरामीटर के साथ कॉल करते समय यह और भी बेहतर काम करता है, लेकिन एक चीज वही रहता है, इससे कोई फर्क नहीं पड़ता कि पैरामीटर क्या है: श्वास प्रक्रिया के बाद हुकुम का राजा हमेशा सूची में अंतिम कार्ड होता है। हुकुम का राजा बस मेरे शुरुआती डेक सरणी और डेकइनप्ले सूची में डिफ़ॉल्ट अंतिम कार्ड होता है।

मुझे नहीं पता कि मैं यहां गलत कहां गया था। अगर आप मुझे एक सुराग दे सकते हैं तो मैं वास्तव में इसकी सराहना करता हूं। पढ़ने के लिए धन्यवाद!

उत्तर

7

अगला का अधिकतम मान अनन्य है, तो इसका मतलब है कि आप उस नंबर तक नहीं पहुंचेंगे और मुझे संदेह है कि आपके डेक में "हुकुम का राजा" नंबर 52 है।

+0

धन्यवाद! मैं बहुत खुश हूं कि यह इतना आसान था, फिर भी मुझे यह देखने के लिए एक झटका लगता है। पूरी तरह से मेरी समस्या तय की। मैं सूची की सीमा से बाहर जाने से बहुत डरता था कि मैं अगले के अधिकतम मूल्य के अनन्य नियम के बारे में भूल गया था। एक बार फिर धन्यवाद! –

+0

कोई समस्या नहीं, मदद करने में खुशी हुई। –

5

उपयोग

int randomNumber = rnd.Next(0, shuffler.Count); 

rnd.Next 0 से एक नंबर हो जाता है गणना करने के लिए - 1 अपने उदाहरण में, लेकिन सहित नहीं ऊपरी सीमा है।

+0

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

+0

@ user3675284: आपका स्वागत है –

संबंधित मुद्दे