پایتون, طراحی سایت و برنامه نویسی, مقالات

آموزش ساخت بازی حدس عدد با پایتون و Tkinter

سورس بازی حدس عدد با پایتون

آموزش ساخت بازی حدس عدد با پایتون و Tkinter | پروژه کامل بازی‌سازی با Python

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

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

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

from tkinter import *
from tkinter import messagebox
import random

# ---------- پنجره اصلی ----------
window = Tk()
window.title("بازی حدس عدد")
window.geometry("520x520")
window.option_add("*Font", "Vazir 12")

# ---------- متغیرهای بازی ----------
secret_number = None
timer_running = False
seconds = 0

# ---------- توابع ----------
def start_game():
    global secret_number, timer_running, seconds

    try:
        start = int(start_entry.get())
        end = int(end_entry.get())

        if start >= end:
            messagebox.showerror("خطا", "عدد شروع باید کوچکتر از عدد پایان باشد")
            return
    except ValueError:
        messagebox.showerror("خطا", "لطفاً فقط عدد وارد کنید")
        return

    secret_number = random.randint(start, end)
    seconds = 0
    timer_label.config(text="00:00")
    timer_running = True
    update_timer()

    guess_entry.config(state="normal")
    guess_btn.config(state="normal")
    end_btn.config(state="normal")

    guess_list.delete(0, END)
    result_label.config(text="بازی شروع شد!")

def update_timer():
    global seconds
    if timer_running:
        seconds += 1
        m = seconds // 60
        s = seconds % 60
        timer_label.config(text=f"{m:02}:{s:02}")
        window.after(1000, update_timer)

def check_guess():
    try:
        guess = int(guess_entry.get())
    except ValueError:
        messagebox.showwarning("هشدار", "عدد صحیح وارد کنید")
        return

    guess_list.insert(END, guess)

    if guess < secret_number:
        result_label.config(text="عدد بزرگ‌تر است")
    elif guess > secret_number:
        result_label.config(text="عدد کوچکتر است")
    else:
        result_label.config(text="🎉 درست حدس زدی!")
        messagebox.showinfo(
            "تبریک",
            f"برنده شدی!\nزمان بازی: {timer_label.cget('text')}"
        )
        stop_game()

    guess_entry.delete(0, END)

def stop_game():
    global timer_running
    timer_running = False
    guess_entry.config(state="disabled")
    guess_btn.config(state="disabled")

def reset_game():
    global timer_running, seconds, secret_number

    timer_running = False
    seconds = 0
    secret_number = None

    timer_label.config(text="00:00")
    result_label.config(text="")
    guess_list.delete(0, END)

    start_entry.delete(0, END)
    end_entry.delete(0, END)
    guess_entry.delete(0, END)

    guess_entry.config(state="disabled")
    guess_btn.config(state="disabled")
    end_btn.config(state="disabled")

# ---------- ویجت‌ها ----------

# عنوان
Label(text="🎯 بازی حدس عدد").place(x=190, y=10)

# بازه عدد
Label(text="عدد شروع").place(x=80, y=50)
start_entry = Entry(width=10)
start_entry.place(x=150, y=50)

Label(text="عدد پایان").place(x=270, y=50)
end_entry = Entry(width=10)
end_entry.place(x=350, y=50)

# دکمه شروع
Button(text="شروع بازی", command=start_game).place(x=200, y=90, width=120)

# تایمر
Label(text="زمان:").place(x=180, y=140)
timer_label = Label(text="00:00", fg="blue")
timer_label.place(x=240, y=140)

# نتیجه
result_label = Label(text="", fg="green")
result_label.place(x=170, y=180)

# حدس کاربر
Label(text="عدد حدس شما").place(x=80, y=220)
guess_entry = Entry(width=15, state="disabled")
guess_entry.place(x=200, y=220)

guess_btn = Button(text="بررسی حدس", state="disabled", command=check_guess)
guess_btn.place(x=360, y=210, width=120)

# لیست حدس‌ها
Label(text="حدس‌های شما").place(x=80, y=270)
guess_list = Listbox(height=6, width=20)
guess_list.place(x=180, y=270)

# دکمه پایان
end_btn = Button(text="اتمام بازی", state="disabled", command=reset_game)
end_btn.place(x=200, y=470, width=120)

# ---------- اجرا ----------
window.mainloop()

منطق کلی بازی حدس عدد

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

چرا از Tkinter استفاده شده؟

Tkinter یکی از ساده‌ترین و در عین حال قدرتمندترین کتابخانه‌های گرافیکی پایتون است که:

  • برای مبتدی‌ها بسیار مناسب است

  • بدون نصب ماژول اضافی اجرا می‌شود

  • پایه بسیاری از پروژه‌های دسکتاپ است

تایمر چگونه کار می‌کند؟

با فشرده شدن دکمه «شروع بازی»، تایمر با استفاده از متد after() فعال می‌شود و زمان بازی را به‌صورت دقیقه و ثانیه نمایش می‌دهد. این بخش، دانش‌آموز را با مفهوم برنامه‌نویسی زمان‌محور آشنا می‌کند.

چرا از Listbox استفاده شده؟

Listbox برای نمایش تمام حدس‌های کاربر به کار رفته است تا:

  • روند تفکر کاربر قابل مشاهده باشد

  • تجربه کاربری بهتری ایجاد شود

  • پروژه از حالت ساده به نیمه‌حرفه‌ای ارتقا پیدا کند


🚀 ایده‌های توسعه (برای نگه‌داشتن کاربر در صفحه)

  • محدود کردن تعداد حدس‌ها

  • ثبت بهترین زمان

  • سطح‌بندی بازی

  • ذخیره نتایج در فایل

  • طراحی نسخه دو نفره

این بخش باعث افزایش Time on Page می‌شود (امتیاز مثبت برای گوگل).


🎓 چرا آموزشگاه کامپیوتر راهکار تبریز بهترین انتخاب است؟

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

در آموزشگاه راهکار:

  • آموزش پایتون از صفر تا پیشرفته به‌صورت پروژه‌محور انجام می‌شود

  • هنرجو فقط «کد نمی‌بیند»، بلکه پروژه واقعی می‌سازد

  • مناسب تمام سنین (نوجوان، دانش‌آموز، بزرگسال)

  • مدرک معتبر فنی و حرفه‌ای

  • پشتیبانی و همراهی تا رسیدن به مهارت واقعی


📍 اطلاعات تماس

📌 آموزشگاه کامپیوتر راهکار تبریز
📍 تبریز، خیابان شریعتی (شهناز)
📞 04135574231 – 09146585123
🌐 www.rahkar01.ir
📷 اینستاگرام: @rahkar01

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

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

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

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