مشكلة في مشروع حجر ورقة مقص

يعطيكم العافيه جميعا
في عندي مشكلة في أول الكود لما أكتب مساعدة المفروض يطلع القوانين بس المشكلة
ما بطلع القوانين بينزل على السريع بحكيلي أختر حجرة ورقة مقص شو حل المشكلة ؟
ياريت حد يرد عليا وشكرا

إعجابَين (2)

لو تلقط لقطة شاشة من الكود وترفقها بسؤالك حتى نفهم أكثر

إعجاب واحد (1)

قد تكون المشكلة في طريقة تنفيذ الشرط المتعلق بالمساعدة
راجع الكود نفسه

ممكن صورة للكود الذي كتبته

الله يعافيك! :star2:

ممكن أنك تواجه مشكلة في عرض القوانين عندما يطلبها المستخدم. يبدو أن المشكلة قد تكون في طريقة عرض النص أو كيفية التحكم في تدفق البرنامج (flow control).

ممكن أن تكون المشكلة في:

  1. إدخال المستخدم (Input): ربما الكود يتخطى عرض القوانين وينتقل مباشرة إلى الجزء الذي يطلب من المستخدم اختيار “حجرة، ورقة، مقص”.
  2. عدم وجود توقف بعد عرض القوانين: إذا لم يكن هناك توقف بعد عرض القوانين، فقد ينتقل البرنامج إلى الخطوة التالية بسرعة دون أن تلاحظ عرض القوانين.

الحل المقترح:

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

إليك مثال بسيط يمكن أن يساعدك على تصحيح المشكلة:

def عرض_القوانين():
    print("قوانين اللعبة:")
    print("1. حجرة تهزم مقص")
    print("2. ورقة تهزم حجرة")
    print("3. مقص يهزم ورقة")
    input("اضغط Enter للمتابعة...")  # إضافة توقف مؤقت حتى يستطيع المستخدم قراءة القوانين

# هنا الجزء الذي يطلب من المستخدم اختيار "حجرة، ورقة، مقص"
def البداية():
    مساعدة = input("هل تحتاج إلى مساعدة؟ (نعم/لا): ").strip().lower()
    if مساعدة == "نعم":
        عرض_القوانين()
    
    اختيار = input("اختر حجرة، ورقة، أو مقص: ").strip().lower()
    # باقي الكود الخاص باللعبة

البداية()

شرح الحل:

  • عرض_القوانين(): هذه الدالة تعرض القوانين وتنتظر من المستخدم أن يضغط على Enter للمتابعة. هذا يساعد على التأكد من أن القوانين تظهر للمستخدم قبل الانتقال إلى الخطوة التالية.
  • input(“اضغط Enter للمتابعة…”): هذا السطر يضمن أن المستخدم يمكنه قراءة القوانين قبل الانتقال إلى الجزء التالي من الكود.

إذا كنت ما زلت تواجه مشكلة:

  • تأكد من أن الجزء الذي يتحقق من إجابة المستخدم (“نعم” أو “لا”) يعمل بشكل صحيح.
  • تأكد من أنه لا يوجد أي كود يتجاوز عرض القوانين بشكل غير متوقع.

وإذا أرسلت صورة للكود ممكن نساعد بشكل أدق

جرب هذه التعديلات وأخبرني إذا كانت قد حلت المشكلة! وإذا احتجت لأي مساعدة إضافية، لا تتردد في السؤال. بالتوفيق! :muscle:

إعجاب واحد (1)

هي الكود

ممكن اساعد حضرتك باللي اعرفه، أو على حد علمي المتواضع يعني، دلوقت حضرتك كاتب في ال (input) (.lower) يعني كل اللي هيتحفظ في المتغير (confirm) هيتخزن على هيئة أحرف صغيرة
وبعدين حضرتك كتبت لو المتغير (confirm) == Help أولها حرف كبير
فبالتالي لما يجي الكمبيوتر يقارن بين شكل الأحرف الصغيرة المتخزنة في المتغير (confirm)، وشكل كلمة (Help) اللي بتدأ بحرف كبير مش هيقدر يتعرف عليها، فبينقلك على السؤال التالي على طول…

فالحل هنا:
يا أما حضرتك تبدل (.lower) ب (.capiralize) وتسيب كلمة (Help) زي ما هي، بالشكل ده

confirm = input (“press ‘Enter’ to continue or type (Help) for
() the rules”) .capitalize

"if confirm == "Help

أو تستخدم الحل التاني وهو إنك تسيب (.lower) زي ما هي بس تكتب كلمة (help) كلها بأحرف صغيرة، بالشكل ده

confirm = input (“press ‘Enter’ to continue or type (Help) for
() the rules”) .lower

"if confirm == "help

وبكده الكود هيظبط معك بإذن الله، بتمني إني أكون وفقت في التوضيح، وقدرت افيد حضرتك

5 إعجابات

الحل المحتمل:

يمكن أن يكون السبب في هذه المشكلة هو أنك ربما لم تقم بإعطاء الوقت الكافي لعرض القوانين قبل أن ينتقل البرنامج إلى الخطوة التالية (طلب الاختيار).

إليك تعديل بسيط للكود الذي قد يحل المشكلة:

  1. استخدم دالة input() بعد طباعة القوانين لانتظار المستخدم حتى يضغط على “Enter” بعد عرض القوانين، مما يضمن أن البرنامج ينتظر قبل الانتقال إلى المرحلة التالية.

  2. تأكد من أن الشروط في if statement تتطابق تمامًا مع المدخلات. على سبيل المثال، يمكن استخدام .strip() لإزالة الفراغات من المدخل.

مثال على التعديل:

confirm = input("Press Enter to continue or type (Help) for the rules help: ").lower().strip()

if confirm == "help":
    print("""
    ***********RULES***********
    1) You choose and computer chooses
    2) Rock smashes Scissors -> Rock wins
    3) Scissors cut Paper -> Scissors wins
    4) Paper covers Rock -> Paper wins
    """)
    input("Press Enter to continue...")

بهذا الشكل، البرنامج سيعرض القوانين وينتظر أن يضغط المستخدم على “Enter” قبل المتابعة إلى الخطوة التالية.

جرب التعديل وأخبرني إذا استمرت المشكلة.

3 إعجابات

المشكلة في الشرط نفسه!!
أنت استعملت المتغير وقمت بتحويله وتخزينه الى (help) عن طريق ()method lower
لكن أثناء التحقق استعملت شرط مختلف عن المتغير وهو (Help) لاحظ الفرق في الحرف الأول!!
هكذا لن يتم تحقيق هذا الشرط حتى يدخل المستخدم :Help بهذا الشكل.

الحل اما تستعمل method capitalize
أو تعدل في الشرط (الحرف الأول من الكلمة).

إعجاب واحد (1)

والله زبط
شكرا كتير
لا عندك خبره ماشاء الله :+1:

3 إعجابات