آموزش ساخت بازی حافظه با پایتون | Memory Game

ساخت بازی حافظه عددی با پایتون

در این مقاله چه میخوانیم؟

مقدمه: چرا ساخت بازی حافظه عددی با پایتون؟

اگر به‌تازگی برنامه‌نویسی با پایتون را شروع کرده‌اید و به دنبال یک پروژه ساده، جذاب و آموزشی هستید، ساخت بازی حافظه با پایتون یکی از بهترین گزینه‌ها برای شروع است. این بازی هم یک تمرین ذهنی جذاب برای کاربران است و هم فرصتی عالی برای شما تا مهارت‌های اولیه برنامه‌نویسی خود را در عمل به کار بگیرید.

در این پروژه، شما یاد می‌گیرید چطور با استفاده از ماژول‌هایی مثل random، time و os یک بازی کوچک و هوشمند بسازید که در آن کاربر باید لیستی از اعداد تصادفی را به خاطر بسپارد و آن‌ها را به درستی بازگو کند. این روند نه تنها درک بهتری از منطق برنامه‌نویسی به شما می‌دهد، بلکه تجربه‌ای واقعی از ساخت یک پروژه کاربردی با پایتون خواهد بود.

 

هدف این پروژه چیست و چه چیزی یاد می‌گیریم؟

هدف از این پروژه، ایجاد یک بازی ساده است که به صورت مرحله‌به‌مرحله پیچیده‌تر می‌شود و حافظه عددی کاربر را به چالش می‌کشد. اما پشت این سرگرمی ساده، چند هدف آموزشی مهم پنهان شده:

  • تقویت منطق برنامه‌نویسی و تحلیل مسئله
  • آشنایی با ساختارهای پایه مثل لیست‌ها، حلقه‌ها و شرط‌ها
  • تمرین استفاده از ورودی و خروجی کاربر
  • مدیریت ساده داده و فایل (برای ذخیره رکورد)

 

بازی حافظه عددی با پایتون

 

مهارت‌هایی که با این پروژه پایتون برای مبتدی‌ها یاد می‌گیریم:

  • استفاده از توابع در پایتون
  • تولید داده تصادفی
  • کار با زمان‌بندی در برنامه‌ها
  • پاک‌سازی صفحه ترمینال (cross-platform)
  • اعتبارسنجی ورودی کاربر
  • طراحی سیستم امتیازدهی ساده

 

آماده‌سازی محیط و کتابخانه‌های مورد نیاز پایتون

قبل از این‌که وارد کدنویسی بازی حافظه عددی با پایتون شویم، باید مطمئن باشیم که محیط برنامه‌نویسی ما آماده است و کتابخانه‌های لازم برای ساخت این پروژه ساده‌ی پایتونی در دسترس‌اند. از آن‌جا که این یک پروژه تمرینی برای مبتدی‌هاست، ما از ابزارها و کتابخانه‌هایی استفاده می‌کنیم که به‌صورت پیش‌فرض همراه پایتون نصب می‌شوند، بنابراین نیازی به نصب پکیج اضافی نخواهید داشت.

 

نصب و معرفی ماژول‌های مورد نیاز در ساخت بازی حافظه با پایتون

برای ساخت این بازی عددی ساده، فقط به سه ماژول استاندارد نیاز داریم که هرکدام کاربرد خاصی دارند:

random: تولید اعداد تصادفی

ماژول random قلب این پروژه است؛ چون قرار است بازی در هر مرحله، لیستی از اعداد تصادفی را تولید کند تا حافظه کاربر را به چالش بکشد.

time: توقف برنامه به صورت کنترل‌شده

برای این‌که کاربر بتواند لیست اعداد را به‌صورت موقتی ببیند، از تابع sleep() در ماژول time استفاده می‌کنیم. این ابزار به ما امکان می‌دهد بازی را پویا و زمان‌دار کنیم.

os: پاک‌سازی صفحه نمایش

بعد از نمایش لیست اعداد، باید آن را از صفحه پاک کنیم تا کاربر نتواند تقلب کند! برای این کار از os.system() استفاده می‌کنیم تا ترمینال را تمیز کنیم.

 

 

نکته آموزشی: چرا استفاده از ماژول‌ها در پایتون اهمیت دارد؟

یکی از دلایلی که پایتون برای یادگیری برنامه‌نویسی بسیار مناسب است، داشتن ماژول‌های آماده‌ای‌ست که پیچیدگی‌ها را از شما دور می‌کنند. اگر شما بخواهید بدون ماژول‌ها، همین بازی را از صفر بسازید، نیاز به نوشتن ده‌ها خط کد اضافه داشتید. استفاده از ماژول‌های استاندارد، یعنی کدنویسی تمیزتر، سریع‌تر و قابل فهم‌تر.

طراحی منطق بازی حافظه در پایتون برای مبتدی‌ها

حالا که همه چیز برای شروع آماده است، وقت آن رسیده وارد دنیای جذاب طراحی منطق بازی شویم. یکی از اهداف اصلی این پروژه آموزشی، آشنایی شما با شیوه‌ی تحلیل و پیاده‌سازی بازی حافظه عددی با پایتون به ساده‌ترین شکل ممکن است. ما قدم‌به‌قدم به شما نشان می‌دهیم که در پشت صحنه‌ی این بازی چه اتفاقی می‌افتد و چرا هر بخش از کد اهمیت دارد.

 

طراحی منطق بازی حافظه در پایتون برای مبتدی‌ها

 

ساختار کلی بازی حافظه با پایتون به زبان ساده

قبل از نوشتن حتی یک خط کد، باید بدانیم که قرار است در این بازی عددی پایتونی چه اتفاقی بیفتد. فرآیند بازی به شکل زیر است:

  1. بازی یک لیست تصادفی از اعداد را تولید می‌کند.
  2. این لیست برای چند ثانیه به کاربر نمایش داده می‌شود.
  3. سپس صفحه پاک می‌شود.
  4. از کاربر خواسته می‌شود تا همان لیست را به خاطر بیاورد و وارد کند.
  5. پاسخ کاربر با لیست اصلی مقایسه می‌شود.
  6. در صورت درست بودن پاسخ، سطح بازی سخت‌تر می‌شود.

 

این مراحل ساده به شما کمک می‌کنند تا بفهمید بازی حافظه فقط چند دستور پشت سر هم نیست، بلکه یک فرآیند منطقی است که به خوبی می‌تواند پایه‌های برنامه‌نویسی شما را قوی‌تر کند.

 

 

نکته آموزشی: آشنایی با فلوچارت در طراحی پروژه‌های پایتونی

قبل از اینکه وارد کدنویسی شویم، پیشنهاد می‌کنم یک فلوچارت ساده برای بازی بکشید. این فلوچارت به شما کمک می‌کند که درک بهتری از جریان اجرای برنامه داشته باشید و مراحل مختلف را با دید روشن‌تری طراحی کنید.

برای مثال، فلوچارت این بازی شامل موارد زیر است:

  • شروع بازی
  • تولید لیست تصادفی
  • نمایش لیست
  • پاک‌سازی صفحه
  • دریافت پاسخ
  • بررسی پاسخ
  • تعیین ادامه یا پایان بازی

 

فلوچارت‌ها برای هر پروژه‌ی پایتون به‌خصوص پروژه‌های مبتنی بر ورودی کاربر و تصمیم‌گیری، بسیار مفید هستند و شما را در نوشتن کد تمیز و بدون سردرگمی کمک می‌کنند.

تولید لیست تصادفی از اعداد در بازی حافظه با پایتون

یکی از بخش‌های اصلی ساخت بازی حافظه با پایتون، تولید لیستی از اعداد تصادفی برای به چالش کشیدن حافظه کاربر است. در این مرحله، ما با استفاده از تابعی از ماژول random، یک لیست عددی با طول مشخص می‌سازیم. این لیست در هر مرحله از بازی تغییر می‌کند تا سطح سختی به‌مرور افزایش یابد.

 

 

کد ساخت لیست تصادفی با استفاده از random.randint()

به جای import کردن کل ماژول random، فقط تابع مورد نیاز یعنی randint را فراخوانی می‌کنیم تا فضای کمتری اشغال شود:

from random import randint

 

حالا می‌خواهیم یک تابع ساده برای تولید لیست از اعداد تصادفی بنویسیم. فرض کنید در مرحله اول می‌خواهیم ۳ عدد تصادفی تولید کنیم:

def generate_number_list(length):
    return [randint(10, 99) for _ in range(length)]

 

🔍 این تابع یک آرایه شامل length عدد تصادفی بین ۱۰ تا ۹۹ تولید می‌کند. انتخاب بازه دو رقمی باعث می‌شود حفظ کردن اعداد کمی چالش‌برانگیزتر باشد (و حافظه بیشتر درگیر شود).

 

آماده‌سازی لیست اعداد برای نمایش به کاربر

 

لیستی که تولید کردیم باید به‌شکل قابل فهم برای کاربر نمایش داده شود. برای همین، در مرحله‌ی بعدی (نمایش لیست)، فقط کافی‌ست این لیست را با print() چاپ کنیم:

 

number_list = generate_number_list(3)
print("لیست اعداد را به خاطر بسپارید:")
print(number_list)

 

این بخش ساده به نظر می‌رسد، اما ستون فقرات بازی ماست. بدون تولید لیست‌های متغیر و تصادفی، بازی حافظه تبدیل به یک تجربه‌ی تکراری و پیش‌بینی‌پذیر می‌شود.

 

نمایش لیست اعداد و توقف زمانی در بازی حافظه پایتون

حالا که لیست تصادفی از اعداد را در مرحله قبل تولید کردیم، وقت آن است که این لیست را برای مدت کوتاهی به کاربر نمایش دهیم تا آن را به خاطر بسپارد. در ساخت بازی حافظه با پایتون، نمایش موقتی اطلاعات یکی از راه‌های رایج برای ایجاد چالش و تست حافظه کاربران است.

 

برای پیاده‌سازی این قابلیت، از تابع sleep() از ماژول time استفاده می‌کنیم — اما طبق اصول بهینه‌نویسی فقط همین تابع را ایمپورت می‌کنیم.

 

نمایش لیست اعداد و توقف زمانی در بازی حافظه پایتون

 

استفاده از print و time.sleep برای نمایش موقت لیست اعداد

ابتدا تابع sleep را به‌صورت اختصاصی ایمپورت می‌کنیم:

 

from time import sleep

 

سپس کد نمایش لیست و توقف موقت را به شکل زیر می‌نویسیم:

 

def show_list_temporarily(numbers, delay=3):
    print("لیست اعداد را به خاطر بسپارید:")
    print(numbers)
    sleep(delay)

 

🕒 این تابع لیست اعداد را چاپ کرده و سپس به‌مدت delay ثانیه توقف می‌کند. مقدار پیش‌فرض ۳ ثانیه است که برای مراحل ابتدایی بازی مناسب است.

 

تنظیم مدت زمان نمایش بر اساس سطح سختی بازی حافظه عددی

یکی از امکانات جذاب که می‌توان به بازی اضافه کرد، تنظیم داینامیک مدت زمان نمایش براساس تعداد اعداد یا سطح بازی است. مثلاً هرچه تعداد اعداد بیشتر باشد، مدت نمایش هم کمی افزایش پیدا کند:

 

def get_display_time(length):
    return 1.5 + (length * 0.5)


سپس هنگام نمایش:

 

sleep(get_display_time(len(numbers)))

 

⏱️ این کار باعث می‌شود بازی حافظه پایتون در هر مرحله منطقی‌تر و کاربرپسندتر رفتار کند و فشار غیرعادی به کاربر وارد نشود.

 

پاک‌سازی صفحه نمایش در بازی حافظه عددی با پایتون

تا این‌جا، لیستی از اعداد تصادفی را به کاربر نشان دادیم و چند ثانیه به او فرصت دادیم تا آن را به خاطر بسپارد. حالا وقت آن رسیده که لیست را از صفحه پاک کنیم تا حافظه کاربر سنجیده شود. در ساخت بازی حافظه عددی با پایتون، این مرحله نقش جدی در ایجاد چالش دارد؛ زیرا کاربر دیگر نمی‌تواند به لیست نگاه کند و باید تنها به حافظه خود تکیه کند.

 

پاک‌سازی صفحه نمایش در بازی حافظه عددی با پایتون

 

پاک کردن صفحه ترمینال با os.system در پایتون

برای انجام این کار، از دستور system() در ماژول os استفاده می‌کنیم. باز هم به‌جای ایمپورت کل ماژول، فقط system را فراخوانی می‌کنیم:

 

from os import system

 

سپس تابعی تعریف می‌کنیم که متناسب با سیستم‌عامل کاربر، صفحه را پاک کند:

 

def clear_screen():
    system('cls' if os.name == 'nt' else 'clear')


 

📌 دستور 'cls' برای ویندوز (Windows) و 'clear' برای لینوکس/مک (Unix-based) استفاده می‌شود. با این روش، بازی ما به‌صورت cross-platform عمل خواهد کرد.

 

تفاوت دستورات پاک‌سازی صفحه در ویندوز و لینوکس

در پایتون، تابع os.name تعیین می‌کند که برنامه روی چه سیستم‌عاملی اجرا می‌شود. اگر مقدار آن 'nt' باشد، یعنی ویندوز است و باید از cls استفاده کنیم. در غیر این صورت، clear دستور مناسب است.

با این روش، اجرای بازی حافظه روی ترمینال یا محیط‌های ساده مانند IDLE یا VS Code بدون مشکل خواهد بود.

 

دریافت پاسخ کاربر در بازی حافظه پایتون

بعد از آن‌که لیست اعداد به‌صورت موقتی نمایش داده شد و صفحه پاک شد، نوبت به مهم‌ترین تعامل با کاربر می‌رسد: وارد کردن لیستی که به خاطر سپرده است. در پروژه بازی حافظه عددی با پایتون، این بخش هم از نظر منطقی و هم از لحاظ مدیریت ورودی‌ها بسیار مهم است.

 

دریافت پاسخ کاربر در بازی حافظه پایتون

 

گرفتن ورودی از کاربر و تبدیل آن به لیست عددی

برای اینکه کاربر بتواند اعداد را وارد کند، از تابع input() استفاده می‌کنیم. فرض ما بر این است که کاربر، اعداد را با فاصله وارد می‌کند:

 

def get_user_input():
    user_input = input("اعدادی را که به خاطر سپردید، با فاصله وارد کنید: ")
    return [int(num) for num in user_input.strip().split()]



در این تابع

  • .strip() فاصله‌های اضافه ابتدا و انتهای ورودی را حذف می‌کند.
  • .split() ورودی را بر اساس فاصله‌ها جدا می‌کند.
  • int() هر مقدار متنی را به عدد تبدیل می‌کند.

با این کار، لیست ورودی کاربر به شکل عددی آماده‌ی مقایسه با لیست اصلی خواهد بود.

 

مدیریت خطاهای احتمالی هنگام وارد کردن اعداد

در بازی‌های آموزشی مثل این، مهم است که برنامه در برابر ورودی‌های اشتباه مقاوم باشد. کاربر ممکن است به‌جای عدد، حروف وارد کند یا بین اعداد کاما بگذارد. برای جلوگیری از بروز خطا، باید ورودی را بررسی و کنترل کنیم.

 

def get_safe_user_input():


    while True:
        try:
            user_input = input("اعدادی را که به خاطر سپردید، با فاصله وارد کنید: ")
            numbers = [int(num) for num in user_input.strip().split()]
            return numbers
        except ValueError:
            print(" لطفاً فقط عدد وارد کنید و آن‌ها را با فاصله از هم جدا نمایید.")

 

🔐 با این کار، برنامه شما در برابر خطای تایپی یا اشتباهات رایج کاربران مبتدی ایمن می‌شود.

 

مقایسه پاسخ کاربر با لیست اصلی در بازی حافظه با پایتون

در این مرحله از بازی، باید بررسی کنیم که آیا لیست وارد شده توسط کاربر، دقیقاً با لیست تصادفی اولیه که توسط برنامه تولید شده بود برابر است یا نه. در پروژه‌های تمرینی با پایتون برای مبتدی‌ها، مقایسه‌ی دقیق بین داده‌ها یکی از مهارت‌های پایه اما مهم محسوب می‌شود.

 

استفاده از شرط if برای مقایسه دو لیست عددی

در پایتون، برای مقایسه دو لیست از عملگر == استفاده می‌کنیم. این عملگر بررسی می‌کند که آیا دو لیست از نظر طول، ترتیب و مقدار یکسان هستند یا نه.

 

def check_answer(original, user_input):
    return original == user_input
و در جریان اجرای بازی:
if check_answer(number_list, user_list):
    print(" آفرین! درست حدس زدی.")
else:
    print(" متأسفم، پاسخ درست نبود.")
    print("پاسخ صحیح:", number_list)



📌 مقایسه‌ی ساده ولی دقیق بین دو لیست، به ما امکان می‌ده که نتیجه بازی را بدون نیاز به حلقه‌های پیچیده یا شرط‌های اضافه مشخص کنیم.

 

تفاوت مقایسه لیست‌ها با مقایسه مقدار در پایتون

نکته‌ای که باید در آموزش به مبتدی‌ها یادآوری کنیم اینه که:

  • == در لیست‌ها بررسی می‌کنه که آیا هر عنصر در جای خودش برابر هست یا نه.
  • این با مقایسه‌ی عددی ساده فرق داره؛ چون در لیست‌ها، ترتیب هم اهمیت داره.

 

مثلاً:

[12, 34, 56] == [12, 34, 56]  # True
[12, 34, 56] == [56, 34, 12]  # False


✅ این نکته کمک می‌کنه تا دانشجو درک کنه که چرا ترتیب وارد کردن اعداد هم اهمیت داره و صرفاً حفظ کردن اعداد کافی نیست.

 

افزودن امتیاز و ذخیره رکورد در بازی حافظه عددی پایتون

حالا که کاربر پاسخ خودش را وارد کرده و ما بررسی کردیم که آیا درست بوده یا نه، نوبت آن است که سیستم امتیازدهی و افزایش سطح سختی را به بازی اضافه کنیم. این بخش بازی را پویاتر می‌کند و به کاربر انگیزه می‌دهد که مرحله به مرحله جلو برود و حافظه خود را به چالش بکشد.

 

افزودن امتیاز و ذخیره رکورد در بازی حافظه عددی پایتون

 

افزایش تدریجی سختی بازی با تعداد اعداد بیشتر

یک روش ساده و مؤثر برای سخت‌تر کردن بازی، افزایش تدریجی تعداد اعدادی‌ست که باید به خاطر سپرده شوند. این کار را می‌توان با یک متغیر به‌نام level کنترل کرد:


level = 1
while True:
number_list = generate_number_list(level + 2) # سختی وابسته به سطح
show_list_temporarily(number_list, get_display_time(len(number_list)))
clear_screen()
user_list = get_safe_user_input()

if check_answer(number_list, user_list):
print(" عالی! مرحله بعد...")
level += 1
else:
print(" بازی تمام شد!")
break

طراحی سیستم امتیازدهی ساده برای بازی پایتونی

امتیازدهی می‌تواند با توجه به سطح بازی انجام شود. مثلاً به ازای هر مرحله موفق، ۱۰ امتیاز:

 

score = 0
...
if check_answer(...):
    score += 10
در پایان بازی:
print(f" امتیاز نهایی شما: {score}")



امتیازدهی حتی در ساده‌ترین حالت هم باعث افزایش تعامل کاربر می‌شود و تجربه بازی را لذت‌بخش‌تر می‌کند.

 

ذخیره‌سازی بهترین رکورد کاربر در فایل متنی

اگر بخوایم بازی حافظه پایتون رو کمی حرفه‌ای‌تر کنیم، می‌تونیم بهترین امتیاز (high score) رو در یک فایل متنی ذخیره کنیم:

 

def save_high_score(score):
    try:
        with open("highscore.txt", "r") as file:
            high_score = int(file.read())
    except FileNotFoundError:
        high_score = 0

    if score > high_score:
        with open("highscore.txt", "w") as file:
            file.write(str(score))
        print(" رکورد جدید ثبت شد!")
    else:
        print(f" رکورد فعلی: {high_score}")


این کار نه‌تنها حس رقابت ایجاد می‌کنه، بلکه به دانشجوها یاد می‌ده چطور با فایل‌ها در پایتون کار کنن.

 

تشویق کاربر برای ادامه‌ی بازی و حفظ انگیزه

در نهایت، با پیام‌های ساده و مثبت می‌تونیم تجربه کاربری رو بهتر کنیم. این تشویق‌ها در بازی‌های تمرینی مثل این، مخصوصاً برای دانشجویان تازه‌کار خیلی مفید هستن:

 

print(" خیلی خوب بود! آماده‌ای برای مرحله بعد؟")

 

نکات تکمیلی برای یادگیری بیشتر از پروژه بازی حافظه با پایتون

اگر تا اینجا با ما همراه بودید، شما یک نسخه کامل از بازی حافظه پایتونی را ساخته‌اید که هم قابل اجراست و هم پایه خوبی برای پروژه‌های آینده‌تان ایجاد می‌کند. حالا وقت آن است که با چند نکته کلیدی و ایده‌محور، یادگیری‌تان را عمیق‌تر کنید و بازی‌تان را ارتقا دهید.

 

ترفندهایی برای تقویت حافظه و تمرکز در بازی عددی

یکی از راه‌های بهبود بازی برای کاربران، درگیر کردن ذهن در شرایط واقعی‌تر است. برای مثال:

  • استفاده از اعداد بزرگ‌تر یا دارای الگو (مثل اعداد اول یا اعداد فیبوناچی)
  • نمایش اعداد با سرعت کمتر یا بیشتر
  • اضافه کردن حواس‌پرت‌کن‌های بصری یا متنی در مراحل پیشرفته

 

این کارها باعث می‌شن بازی حافظه پایتون به یک ابزار تمرین ذهن هم تبدیل بشه.

 

ایده‌هایی برای ارتقاء بازی به نسخه گرافیکی با Tkinter

اگر با کتابخانه Tkinter در پایتون آشنا هستید، می‌تونید نسخه گرافیکی این بازی رو بسازید تا از محیط متنی خارج بشه. مثلاً:

  • ساخت پنجره اصلی بازی
  • استفاده از label برای نمایش اعداد به‌صورت متحرک
  • اضافه کردن دکمه شروع، پایان، و ثبت رکورد
  • نمایش امتیاز و سطح بازی به‌صورت گرافیکی

 

با این کار، پروژه شما وارد سطح جدیدی می‌شه و مهارت‌های گرافیکی‌تون هم تقویت می‌شن.

 

سوالات متداول درباره بازی حافظه عددی با پایتون

 

سوالات متداول بازی حافظه عددی(FAQ)

  1. آیا این پروژه برای افراد تازه‌کار مناسب است؟

    بله. این پروژه به‌صورت مرحله‌به‌مرحله طراحی شده و برای کسانی که تازه برنامه‌نویسی با پایتون را شروع کرده‌اند، بسیار مناسب است.


  2. آیا برای اجرای بازی نیاز به نصب کتابخانه خاصی دارم؟

    خیر. تمام ماژول‌هایی که استفاده شده‌اند (random, time, os) جزء کتابخانه‌های داخلی پایتون هستند.


  3. آیا می‌توانم این بازی را در محیط‌های مختلف مثل VS Code یا IDLE اجرا کنم؟

    بله. این پروژه در تمام محیط‌های توسعه استاندارد پایتون قابل اجراست.


  4. چطور می‌توانم نسخه گرافیکی این بازی را بسازم؟

    با استفاده از کتابخانه Tkinter می‌توانید نسخه گرافیکی بسازید. ایده‌های کلی آن در بخش نکات تکمیلی توضیح داده شده است.


  5. آیا امکان ذخیره‌سازی رکورد کاربران وجود دارد؟

    بله. در بخش امتیازدهی، نحوه ذخیره رکورد کاربر در فایل متنی توضیح داده شده است.

 

جمع‌بندی نهایی مقاله آموزشی ساخت بازی حافظه با پایتون

در این آموزش گام‌به‌گام، شما موفق شدید با استفاده از مفاهیم پایه پایتون، یک بازی حافظه عددی ساده و قابل گسترش بسازید. این پروژه آموزشی:

  • یک تمرین کامل برای درک منطق برنامه‌نویسی است
  • شامل کار با لیست‌ها، ورودی/خروجی، زمان، شرط و فایل می‌باشد
  • برای دانشجویانی که به‌تازگی پایتون را یاد گرفته‌اند، بهترین تمرین پروژه‌محور است

 

این بازی هم از لحاظ فنی آموزشی‌ست و هم از نظر ذهنی چالش‌برانگیز. شما می‌توانید آن را توسعه دهید، گرافیکی‌اش کنید یا حتی به دوستانتان نشان دهید.

 

کد کامل بازی حافظه عددی با پایتون

خب بچه‌ها، اینجا همون کد نهایی بازی حافظه عددی با پایتون رو براتون گذاشتم. تمام چیزهایی که مرحله‌به‌مرحله توی این آموزش یاد گرفتید—از تولید عدد تصادفی و زمان‌سنج گرفته تا گرفتن ورودی، بررسی پاسخ و امتیازدهی—همه به‌صورت منظم و بهینه توی این کد پیاده‌سازی شدن.

لطفاً سعی کنید قبل از اجرا، خودتون با دقت کد رو بررسی کنید. حتی پیشنهاد می‌کنم بخش‌هایی ازش رو تغییر بدید یا امکاناتی مثل سطح سختی یا ذخیره رکورد رو به روش خودتون بازنویسی کنید. این بهترین روشه که هم کدنویسی تمرین کنید و هم مفاهیم بهتر توی ذهنتون جا بیفته.

یادتون نره: فقط خوندن کد کافی نیست، اجرا و تجربه عملی مهم‌ترین بخش یادگیری برنامه‌نویسیه

در ضمن برای شروع یادگیری قدم به قدم زبان برنامه نویسی پایتون به صفحه آموزش زبان پایتون مراجعه کنید.

from random import randint
from time import sleep
from os import system, name

# تولید لیست تصادفی
def generate_number_list(length):
    return [randint(10, 99) for _ in range(length)]

# نمایش موقت لیست اعداد
def get_display_time(length):
    return 1.5 + (length * 0.5)

def show_list_temporarily(numbers, delay=None):
    if delay is None:
        delay = get_display_time(len(numbers))
    print("لیست اعداد را به خاطر بسپارید:")
    print(numbers)
    sleep(delay)

# پاک کردن صفحه ترمینال (cross-platform)
def clear_screen():
    command = 'cls' if name == 'nt' else 'clear'
    system(command)

# گرفتن ورودی امن از کاربر
def get_safe_user_input():
    while True:
        try:
            user_input = input("اعدادی را که به خاطر سپردید، با فاصله وارد کنید: ")
            numbers = [int(num) for num in user_input.strip().split()]
            return numbers
        except ValueError:
            print(" لطفاً فقط عدد وارد کنید و آن‌ها را با فاصله از هم جدا نمایید.")

# مقایسه پاسخ کاربر با لیست اصلی
def check_answer(original, user_input):
    return original == user_input

# ذخیره بهترین رکورد در فایل
def save_high_score(score):
    try:
        with open("highscore.txt", "r") as file:
            high_score = int(file.read())
    except FileNotFoundError:
        high_score = 0

    if score > high_score:
        with open("highscore.txt", "w") as file:
            file.write(str(score))
        print(" رکورد جدید ثبت شد!")
    else:
        print(f" رکورد فعلی: {high_score}")

# اجرای بازی
def play_memory_game():
    level = 1
    score = 0

    print(" خوش آمدید به بازی حافظه عددی با پایتون!")
    print("هر مرحله سخت‌تر می‌شود... آماده‌اید؟\n")

    while True:
        number_list = generate_number_list(level + 2)
        show_list_temporarily(number_list)
        clear_screen()
        user_list = get_safe_user_input()

        if check_answer(number_list, user_list):
            print(" آفرین! درست گفتی.")
            score += 10
            level += 1
            print(f" امتیاز شما: {score} | مرحله بعدی: {level}\n")
        else:
            print(" متأسفم، پاسخ نادرست بود!")
            print("پاسخ صحیح:", number_list)
            break

    print(f"\n امتیاز نهایی شما: {score}")
    save_high_score(score)

# اجرای اصلی بازی
if __name__ == "__main__":
    play_memory_game()



دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *