سؤال

اسمحوا لي أن أبدأ بالقول آسف لقواعدي النحوية والإملائية الرهيبة.

لدي مشروع MVC3 يقوم بإنشاء مجموعة وإضافة 52 بطاقة إليها.ثم أضفت وظيفة خلط ورق اللعب التي تعمل فقط عندما أنا خطوة من خلال الحلقة في طريقة خلط ورق اللعب.

في صفي Deck، قمت بإنشاء مصفوفة تحتوي على 52 كائنًا من PlayCard.لدى Deck طريقة تقوم بنسخ المصفوفة إلى قائمة يتم عرضها في عرضي ، ولديها أيضًا طريقة تختلط القائمة.

ليس من السهل شرحه ولكن الكود يعمل فقط مره واحده إلا إذا أخطو من خلال ذلك.

طريقة خلط ورق اللعب الخاصة بي في نموذج Deck الخاص بي.

 public void Shuffle()
 {
    for (int i = 0; i < 51; i++)
    {
        PlayingCard temp;
        temp = myDeck[i];
        Random rnd = new Random();
        int randomNr = rnd.Next(51);
        myDeck[i] = myDeck[randomNr];
        myDeck[randomNr] = temp;
    }   
}

الإخراج بعد الخلط، بدون خطوة:

* 4 ماسات1 قلوب 2 قلوب 3 قلوب 4 قلوب 5 قلوب 6 قلوب 7 قلوب 8 قلوب 9 قلوب 10 قلوب 11 قلوب 12 قلوبًا 13 قلوبًا 1 بصيرة 2 البدرة 2 البدرة 3 بوصات 4 البدرس 5 البدرس 6 البدرس 7 البدرس 8 البستوني 10 البدرة 10 البدرس 11 البدري 12 البدر. 13 أندية البستوني 1 الأندية 2 الأندية 3 أندية 4 أندية 5 أندية 6 أندية 7 الأندية 8 الأندية 9 الأندية 10 الأندية 11 نوادي 12 الأندية12 ماسة3 الماس 5 الماس 6 الماس 7 الماس 8 الماس 9 الماس 10 الماس 11 الماس 13 الماس *

الإخراج بعد الخطوة خلال 15 مرة:

اثنان من البستوني 3 أندية 5 بوابات 3 الماس 12 الماس 13 قلوب 11 قلوب 1 بستوني 6 الأندية 5 الماس 1 نوادي 12 قلوب 7 نوادي 12 بستوني 8 قلوب 7 قلوب 1 قلوب 2 قلوب 4 نوادي 5 نوادي 5 قلوب 6 قلوب 6 نوادي 9 الأندية 9 نوادي 10 نوادي 11 نوادي 12 نوادي 13 نوادي 1 الماس 2 الماس 4 قلوب 4 الماس 5 قلوب 6 الماس 7 الماس 8 الماس 9 الماس 10 الماس 10 الماس. 11 الماس 13 الماس

الإخراج بعد التنقل خلال الحلقة بأكملها:

10 قلوب 6 أندية 8 قلوب 5 قلوب 5 نوادي 7 الماس 5 من الماس 11 الماس 12 أندية 12 نوادي 8 الماس 5 الماس 1 الأندية 3 أندية 8 أندية 9 الماس 7 الأندية 2 الأندية 3 الماس 1 الماس 7 البستوني 10 بستوني 2 قلوب 6 بستبارات 9 قلوب 13 الماس

كما هو موضح، تعمل الحلقة فقط عندما أخطو عبرها.لقد جربت حلقات مختلفة، وأنشأت مشروعًا جديدًا، وقمت بنقل وظيفة التبديل العشوائي إلى وحدة التحكم، ولم يساعدني شيء.

هل لدى أي شخص أي أفكار حول كيفية حل هذا؟

هل كانت مفيدة؟

المحلول

لقد قمت بإنشاء نموذج تطبيق حول هذا الأمر والتحرك Random rnd = new Random() إلى خارج الحلقة يعطيني السلوك الذي أتوقعه.

السبب في ظهور خلط بطاقة واحدة فقط، في رأيي، هو أن القيمة التي تم إنشاؤها عشوائيًا كانت نفس القيمة للحلقة بأكملها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top