هل يجب اخذ الكروت مثل الصورة وال A في الاعتبار ام فقط الكروت من 1-10, انا في اول حلقة واحتاج لرسم الفلوشارت ولكن احترت في هذه النقطتين, لانه الاستاذ لم يرنا حالات لها في المقطع الاول
شكرا لك على اهتمامك بهذه النقطة الكروت في اللعبة هم من 1-10 بالاضافة الى J و Q و K كل واحد من هاؤلاء الثلاثة 10 نقاط و الـ A هو نفسه رقم واحد ولكن عليك ان تضع له احتمالين لانه ربما يصبح 11 اذا اراد المستخدم ان يحسب الاس 11
يعني مثلا لو طلع للمستخدم عشوائيا A اسأله هل تريدها 10 ولا 1 فقط ؟
هو لا ما بيسئل المستخدم انو بدك تسويه 11 ولا 1 هو تلقائيا بشوف اذا اذا كان الاس 11 وصار المجموع اكثر من 21 يحسبه واحد واذا كان الاس 11 وبقي المجموع اقل من 21 او يساوي 21 بيحسبه 11
تمام بارك الله فيك يعطيك الف عافيه
امين يا رب ويبارك لك بوقتك وعملك ويديمك باتم صحة وعافية
اخي بدر سؤال اخر جزاك الله خير
اذا مثلا المستخدم سحب كروت وكان مجموعها اكثر من 21 والكمبيوتر عدد كروته اقل من 17 هل يجب ان يسحب الكمبيوتر كروت اضافة ام اتجاوز له عملية السحب في هذه الحاله والاكتفاء بالقدر الذي لديه من الكروت
يعني حالة مشروعنا اخلي الديلر يسحب لين يصير فوق 17 ام ان السحب لدى الكمبيوتر يعطل في حالة كانت الكروت عند المستخدم اكثر من 21
لا لان لو المستخدم كان عدد كروت تجاوزت او عديت رقم 21 والكمبيوتر 17 كدا الفوز يبقي لي الكمبيوتر لان المستخدم خسر لان عدد كروت عديت ال 21 ده علي حسب م اتذكر العبه
قصدي الكمبيوتر لو عدد الكروت عنده اقل من 17 بس انا سحبت لين تجاوزت 21 هل الكبيوتر برضو لازم يسحب لين فوق18 ام انه لا يسحب زياده يعني هل السحب عند الكمبيوتر متعلق بعدد كروت المستخدم ام لا
بص خلينا افهمك وحده وحده من الاول الاول صلي علي النبي عليه افضل الصلاة والسلام بص ي صديقي هي انا دلوقتي وليكن معيا 10 والكمبيوتر مثلا معاه 18 انا اقدر اسحب ليه لان انا معيا 10 ف حتي لو طلعلي 11 هيكون الناتج 20 طب الكمبيوتر ده بقي هيبقي مخاطره بالنسبه للكمبيوتر ليه لان لو طلع رقم اكتر من 21 هيكون هو خسران والمستخدم كسب خلاص هي فكرة العبه انك لو عديت 21 تخسر فاهم اما بالنسبه لي سؤال ان هل الكمبيوتر لي علاقه بي كروت المستخدم ف طبعا لا الكمبيوتر انت كانك بتلاعب plyer بس الفرق ان كمبيوتر والتاني شخص حقيقي الكمبيوتر هو لي دعوه بي كروتو هو مش بي المستخدم لانو متبرمج مش شخص حقيقي بتلاعبو
فهمت جزاك الله خير لان النقطه هذه عقدتني كثير لان فالنص سوتلي مشكله وانا مخي هنج
انا تقريبا انهيت نصف المشروع باقي موضوع عرض النتائج ويمكن ارجع اقسم الكود لدوال اصغر ان شاء الله غدا اكمل الحل كامل واشوف اول حلقه للحل مع الاستاذ
ربنا معاك ويوفقك ولو عوزت حاجه انا معاك بعد ربنا سباحنه وتعالي
يا هلا فيك اخي عبد الله
بالنسبة لسؤالك اذا المستخدم سحب وصار الكروت عنده اكثر من 21 والكمبيوتر وليكن عند مثل ما في الصورة 15 خلص الكمبيوتر ما بيسحب انك خسرت يعني ما بيضل يسحب اذا انت خسران لحتى يصير فوق ال17
ولكن في حال انت كنت اقل من 21 وقررت خلاص ما تسحب الكمبيوتر بيضل بيسحب لحتى يصير الناتج عنده اكثر من 17
ونقطة مهمة اذا كان الكمبيوتر البطاقتين عنده مجموعهم اكثر من 17 ما بيسحب
نقاط قيمة ووضحت الموضوع لي جزاك الله خير
هذه النتيجة النهائيه للكود بعد كل التعديلات الان سوف اتابع مع استاذ ابراهيم الحل
import random
import os
import time
#شعار اللعبه
ascii_logo = '''
████████╗░██╗░░░░░░░██╗███████╗███╗░░██╗████████╗██╗░░░██╗░░░░░░░█████╗░███╗░░██╗███████╗
╚══██╔══╝░██║░░██╗░░██║██╔════╝████╗░██║╚══██╔══╝╚██╗░██╔╝░░░░░░██╔══██╗████╗░██║██╔════╝
░░░██║░░░░╚██╗████╗██╔╝█████╗░░██╔██╗██║░░░██║░░░░╚████╔╝░█████╗██║░░██║██╔██╗██║█████╗░░
░░░██║░░░░░████╔═████║░██╔══╝░░██║╚████║░░░██║░░░░░╚██╔╝░░╚════╝██║░░██║██║╚████║██╔══╝░░
░░░██║░░░░░╚██╔╝░╚██╔╝░███████╗██║░╚███║░░░██║░░░░░░██║░░░░░░░░░╚█████╔╝██║░╚███║███████╗
░░░╚═╝░░░░░░╚═╝░░░╚═╝░░╚══════╝╚═╝░░╚══╝░░░╚═╝░░░░░░╚═╝░░░░░░░░░╚════╝░╚═╝░░╚══╝╚══════╝
♠ ♣ ♥ ♦
----------------------------------------------------------------------------------------------------------
'''
#حذف محتوى الشاشة
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
#بطاقات اللعب
cards = {'K':10,'Q':10,'J':10,'A':11,}
for card_number in range(1,11):
cards[str(card_number)] = card_number
#اضافة كرت اضافي
def another_card(keys_list):
keys_list.append(random.choice(list(cards.keys())))
#دالة لتحويل المفاتيح الى قيم
def change_to_value(keys_list):
score = 0
for key in keys_list:
if key == 'A':
score += 1 if score > 10 else 11
else:
score += cards[key]
return score
def computer(cards_list,user_score):
computer_score = change_to_value(cards_list)
if user_score <= 21:
while computer_score < 17:
another_card(cards_list)
computer_score = change_to_value(cards_list)
return computer_score
def winner(user_score,computer_score):
if user_score > 21:
print (f"You went over 21, computer wins.")
elif computer_score > 21:
print (f"Computer went over 21, you win")
elif computer_score == user_score:
print ("Draw.")
elif user_score > computer_score:
print ('You win')
else:
print ("Computer wins.")
#اللعبه
def black_jack():
clear_screen()
print (ascii_logo)
#ننشئ قوائم بكروت المستخدم والكمبيوتر لعرضها
user_cards = random.choices(list(cards.keys()),k=2)
computer_cards = random.choices(list(cards.keys()),k=2)
#نحول المفاتيح الى قيم
#نحسب عدد كروت المستخدم
user_score = change_to_value(user_cards)
while user_score < 21:
print (f"\nYour cards are {user_cards}, current score is {user_score}")
#نعرض كرت الكمبيوتر الاول فقط
print (f"Computer's first card is {computer_cards[0]}")
#هل تود الحصول على بطاقة اخرى؟
confirm = input ("\nGet another card? y/n: ").lower()
if confirm == 'y':
another_card(user_cards)
user_score = change_to_value(user_cards)
else:
break
computer_score = computer(computer_cards,user_score)
clear_screen()
print (f"\nYour final hand: {user_cards} with score {user_score}")
print (f"Computer's final hand: {computer_cards} with score {computer_score}\n")
winner(user_score,computer_score)
time.sleep(2)
def froggy():
print ('Coming Soon ...')
def Snake():
print ("Coming Soon ...")
def program():
print ("\n\nchoose a game to start (1-3) ....\n")
choice =input( '1- Froggy\n2- Twenty one\n3- Snake\n-----------------------\n')
if choice == '1':
time.sleep(3)
froggy()
elif choice == '2':
print ("-----------\nStarting game .......\n-----------\n")
time.sleep(3)
black_jack()
elif choice =='3':
time.sleep(3)
Snake()
else:
print ("Invalid choice")
time.sleep(3)
program()
time.sleep(3)
program()
بس اديك اختصار لكود كبير كان فينك تختصر بحيث تضع في الشرط انو اذا المستخدم ضغط 1 او 3 يطبع قريبا اللعبة وليس من الضروري عمل فانكشن خاصة لطباعة كلمة قريبا في الخيار الاول وفانكشن خاصة للخيار الثالث حتى يمكنك حذف الشرط الثالث بانه اذا ضغط الخيار الثالث بحيث تضع في نفس شرط الخيار الاول او اختار الخيار الثالث انظر الى الصورة
الاكواد الخضراء التي تم اختصاراها
صحيح لم انتبه لهذه النقطه سأقوم بتعديلها الان لكن الحمدلله ان الكود نال اعجابكم بشكل عام
واعذرونا على ازعاجكم
العفو اخي الكريم عبد الله
لا مشلكة بالعكس سعدنا بتجربة الكود