"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > برمجة الجلاد في بايثون

برمجة الجلاد في بايثون

تم النشر بتاريخ 2024-11-09
تصفح:547

Programming Hangman in Python

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

حسنًا، الآن نعلم جميعًا ما تستلزمه اللعبة، فلنرى كيف قد يبدو هذا عند اللعب في بايثون.

Word: ---
Wrong guesses: 
Guess a letter > a

Word: -a-
Wrong guesses: 
Guess a letter > g

Word: -a-
Wrong guesses: g
Guess a letter > t

Word: -at
Wrong guesses: g
Guess a letter > c

Word: cat
Well done! You guessed the word with 1 wrong guesses.

ابدء

لنبدأ برنامج بايثون جديد لصنع هذه اللعبة. سنحتاج إلى كلمة للتخمين وطريقة لتتبع التخمينات الصحيحة وغير الصحيحة.

word = "something"
guessed_letters = []
incorrect_letters = []

ما المشكلة بين الأقواس المربعة؟ هذا بايثون يتحدث عن قائمة جديدة. القائمة هي متغير يمكنه تخزين أكثر من قيمة واحدة. في هذه الحالة سنقوم بتخزين الحروف في القوائم، لكن بايثون ستسمح لك بوضع أي شيء هناك.

ستكون لعبتنا في الأساس عبارة عن حلقة تظهر للاعب أجزاء الكلمة التي تم تخمينها حتى الآن، ثم تطلب منه تخمينًا آخر. يمكننا استخدام حلقة while لتنفيذ ذلك. ولكن ماذا يجب أن يكون شرطنا لإنهاء الحلقة؟ حسنًا، هناك سببان وراء رغبتنا في إنهاء اللعبة:

  • لقد خمن اللاعب جميع الحروف الصحيحة.
  • لقد قام اللاعب بالكثير من التخمينات الخاطئة.

يتحقق الشرط الأول عندما يكون عدد الحروف في قائمة الحروف_المخمنة هو نفس عدد الحروف في الكلمة. لذلك تحتاج حلقتنا إلى التشغيل بينما ليس هذا هو الحال. في بايثون يمكن كتابة هذا بالشكل len(guessed_letters) != len(word). تخبرك الدالة len() بطول القائمة أو السلسلة.

يتم استيفاء الشرط الثاني عندما يكون عدد الأحرف في قائمة الحروف غير الصحيحة أكبر من الحد الأقصى لعدد التخمينات المسموح بها. لذلك تحتاج حلقتنا أيضًا إلى التشغيل بينما ليس هذا هو الحال. في Python، يمكن كتابة هذا بالشكل len(incorrect_letters)

بجمع كل ذلك معًا، تبدأ حلقة while الخاصة بنا على هذا النحو.

# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 



داخل حلقتنا، سنحتاج إلى القيام بأربعة أشياء:

  1. إظهار الكلمة للاعب.
  2. عرض قائمة التخمينات الخاطئة.
  3. احصل على تخمين من اللاعب.
  4. سجل ما إذا كان التخمين صحيحًا أم غير صحيح.

دعونا نتعامل معها بالترتيب.

إظهار الكلمة

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

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()

نقوم بتكرار كل حرف في الكلمة باستخدام حلقة for. نقوم بعد ذلك بالتحقق مما إذا كان الحرف موجودًا في قائمة الحروف باستخدام عامل التشغيل in. إذا كان كذلك، فإننا نطبعه. إذا لم يكن الأمر كذلك، فإننا نطبع شرطة بدلاً من ذلك. نستخدم الوسيطة end = "" في استدعاءات الطباعة لإيقاف طباعة سطر جديد.

عرض التخمينات الخاطئة

لنكتب دالة أخرى لإظهار التخمينات الخاطئة. هذا هو أبسط بكثير من الأخير. يستغرق الأمر وسيطة واحدة، وقائمة من التخمينات الخاطئة، ويستخدم حلقة for مرة أخرى لطباعة كل واحدة.

def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()

الحصول على تخمين اللاعب

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

def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]

تسجيل التخمين

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

if letter in word and letter not in guessed_letters:
    guessed_letters.append(letter)
elif letter not in incorrect_letters:
    incorrect_letters.append(letter)

الانتهاء من اللعبة

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

# End of game message.
if len(guessed_letters) == len(word):
    show_word(word, guessed_letters)
    print(f"Well done! You guessed the word with {len(incorrect_letters)} wrong guesses.")
else:
    print(f"Too many wrong guesses! The word was '{word}'")

هذا كل شيء! لدينا لعبة الجلاد كاملة. لجعل اللعبة أصعب أو أسهل، قم بتغيير عدد التخمينات الخاطئة المسموح بها.

قائمة البرنامج كاملة

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()


def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()


def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]


word = "something"
guessed_letters = []
incorrect_letters = []


# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 




          

            
        

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/robc79/programming-hangman-in-python-2c73?1 إذا كان هناك أي انتهاك، فيرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3