7.7 KiB
title, localeTitle
title | localeTitle |
---|---|
Counting Cards | عد بطاقات |
تذكر استخدام
Read-Search-Ask
إذا واجهتك مشكلة. حاول إقران البرنامج واكتب الكود الخاص بك
شرح المشكلة:
في لعبة الكازينو Blackjack ، يمكن للاعب الحصول على ميزة على المنزل من خلال تتبع العدد النسبي للبطاقات العالية والمنخفضة المتبقية في سطح السفينة. وهذا ما يسمى حساب البطاقات.
وجود المزيد من البطاقات العالية المتبقية في سطح السفينة تفضل اللاعب. يتم تعيين قيمة لكل بطاقة وفقًا للجدول أدناه. عندما يكون العد موجبًا ، يجب أن يراهن اللاعب عالياً. عندما يكون العدد صفرًا أو سلبيًا ، يجب على اللاعب الرهان منخفضًا.
القيمة | بطاقات
----- | : -------------------:
+1 | 2 و 3 و 4 و 5 و 6
0 | 7 و 8 و 9
-1 | 10 ، 'J' ، 'Q' ، 'K' ، 'A'
ستكتب وظيفة حساب البطاقة. سوف تتلقى معلمة بطاقة وزيادة أو إنقاص متغير العد العالمي وفقا لقيمة البطاقة (انظر الجدول). ستقوم الدالة بعد ذلك بإرجاع سلسلة مع العدد الحالي وسلسلة Bet
إذا كان العدد موجبًا ، أو Hold
إذا كان العدد صفراً أو سالباً. يجب فصل العدد الحالي وقرار اللاعب ( Bet
أو Hold
) بمسافة واحدة.
- تغيير الرمز أدناه
// Only change code below this line
وحتى// Only change code above this line
- تأكد من أنك تقوم بتحرير داخل وظيفة
cc
. - استخدم ما تعلمته للتحقق من قيمة كل معلمة بطاقة تم تمريرها إلى الدالة.
- احتفظ بحساب التشغيل لهذا الرقم.
- إذا كان العدد النهائي 1 أو أكبر ، فأرجع # Hold .
- إذا كان العدد النهائي 0 أو أقل ، فأرجع # Bet .
مثال على الناتج:
- -3 عقد
- 5 الرهان
تلميح: 1
استخدم عبارة switch
(أو else if
) لحساب قيمة كل بطاقة.
حاول أن تحل المشكلة الآن
تلميح: 2
إضافة / طرح قيمة كل بطاقة إلى عدد المتغيرات. إذا كانت قيمة البطاقة تساوي 0 ، فلا تفعل أي شيء.
حاول أن تحل المشكلة الآن
تلميح: 3
بعد قيامك بحساب البطاقات ، استخدم العبارة if
للتحقق من قيمة العد . أيضا، وتأكد من return
لديها مساحة بين عدد والسلسلة.
حاول أن تحل المشكلة الآن
تنبيه المفسد!
الحل في المستقبل!
الحل الأساسي للكود:
function cc(card) { // Only change code below this line switch(card){ case 2: case 3: case 4: case 5: case 6: count++; break; case 10: case "J": case "Q": case "K": case "A": count--; break; } if (count > 0){ return count + " Bet"; } else { return count + " Hold"; } // Only change code above this line }
شرح الشفرة:
- تحقق من قيمة كل بطاقة من خلال بيان
switch
. - عدد المتغيرات:
- يزيد بمقدار 1 إذا كانت البطاقة 2 أو 3 أو 4 أو 5 أو 6.
- نظرًا لأن 7 و 8 و 9 لا تستحق أي شيء ، فإننا نتجاهل تلك البطاقات في بيان
switch
بنا. - تنخفض بمقدار 1 إذا كانت البطاقة 10 أو "J" أو "Q" أو "K" أو "A".
- تحقق من قيمة العد وأعد الاستجابة المناسبة.
مثال تشغيل
cc(2);
أشواط.- تصل العبارة
switch
إلىcase 2
، وتقفز للأسفل وتضيف 1 إلىcount
المتغيرات. - ثم يقوم بيان
switch
بضربbreak
وcc(3);
أشواط. - تستمر هذه الدورة حتى يتم إجراء المكالمة النهائية ،
cc('A');
. - بعد عبارة
switch
، يتمcount
الشيكif
كشف ، وهو الآن 0. - هذا يسقط بعد ذلك إلى العبارة
else
، والتي سوف تعود 0 عقد .
ملاحظة : كما ذكرنا سابقاً ، يمكن أن يكون بيان switch
عبارةً أخرى else if
عبارة.
حل رمز إضافي:
`function cc(card) { // Only change code below this line var regex = /[JQKA]/; if (card > 1 && card < 7){count++;} else if (card === 10 || String(card).match(regex)){count--;}
if (count > 0) return count + " Bet"; return count + " Hold";
// Only change code above this line } `
تشغيل الكود في repl.it.
تفسير الشفرة
· وظيفة بتقييم أولا if
شرط card
هي قيمة أكبر من 1
وأقل من 7
، وفي هذه الحالة فإنه بزيادة count
تلو الآخر. · ثم إذا كانت البطاقة 10
أو أعلى هو التناقصات count
من جانب واحد. · regex
عبارة عن تعبير عادي يمثل القيم (الحروف) للبطاقات الأعلى. · يقوم البيان else
بالتحقق من تلك القيم باستخدام || (logical OR)
مشغل || (logical OR)
؛ أولاً لـ 10
ومن ثم لأي سلسلة تطابق التعبير العادي باستخدام String.match () .