بازی سنگ-کاغذ-قیچی - پروژه پایتون با Tkinter
🪨📄✂️ بازی سنگ-کاغذ-قیچی - پروژه سرگرمکننده پایتون
📊 ویژگیهای کلیدی پروژه:
• 🎮 بازی کلاسیک سنگ-کاغذ-قیچی با کامپیوتر
• 🎨 رابط کاربری مدرن و جذاب با تم تیره
• 🤖 هوش مصنوعی ساده برای انتخاب تصادفی کامپیوتر
• 📊 سیستم امتیازدهی برای بازیکن و کامپیوتر
• 🏆 نمایش برنده هر دور و برنده نهایی
• ⚙️ قابلیت تنظیم تعداد دورها (۱ تا ۱۰ دور)
• 🔄 انیمیشن نمایش انتخابها
• 📝 راهنمای کامل بازی
• 🔁 دکمه بازی جدید برای شروع مجدد
• 📱 طراحی واکنشگرا و مناسب برای همه دستگاهها
• 🎯 تشخیص برنده با منطق دقیق بازی
• 🎭 نمایش ایموجیهای جذاب برای هر انتخاب
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, random
• حجم فایل: ۱۲ کیلوبایت
• تعداد خطوط کد: ۲۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس RockPaperScissors
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎯 قوانین بازی:
🪨 سنگ:
• سنگ ✂️ قیچی را میشکند → برنده
• سنگ از 📄 کاغذ میبازد → بازنده
📄 کاغذ:
• کاغذ 🪨 سنگ را میپوشاند → برنده
• کاغذ از ✂️ قیچی میبازد → بازنده
✂️ قیچی:
• قیچی 📄 کاغذ را میبرد → برنده
• قیچی از 🪨 سنگ میبازد → بازنده
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python rock_paper_scissors.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python rock_paper_scissors.py
📁 ساختار پروژه:
rock-paper-scissors/
├── rock_paper_scissors.py # فایل اصلی پروژه
├── README.md
🎨 طراحی بصری:
🔷 هدر بازی:
• ایموجیهای متحرک 🪨📄✂️
• عنوان بازی با رنگ سبز نئون (#00ff88)
• طراحی متقارن و چشمنواز
📊 پنل امتیازات:
• نمایش امتیاز بازیکن (👤 شما)
• نمایش امتیاز کامپیوتر (🤖 کامپیوتر)
• آیکون VS با رنگ قرمز
• اعداد بزرگ و خوانا
🎭 پنل انتخابها:
• نمایش انتخاب بازیکن با ایموجی بزرگ
• نمایش انتخاب کامپیوتر با ایموجی بزرگ
• برچسبهای راهنما در بالا
🎮 پنل بازی:
• نمایش نتیجه هر دور
• نمایش پیامهای تشویقی
• رنگبندی بر اساس نتیجه (برد/باخت/مساوی)
🔘 دکمههای انتخاب:
• سنگ (🪨) با رنگ فیروزهای
• کاغذ (📄) با رنگ نارنجی
• قیچی (✂️) با رنگ قرمز
• افکت hover با تغییر رنگ
⚙️ پنل تنظیمات:
• انتخاب تعداد دورها (۱ تا ۱۰)
• دکمه بازی جدید (🔄)
• دکمه راهنما (❓)
🎨 پالت رنگی:
• پسزمینه اصلی: #0a0a0f (مشکی)
• کارتها: #1a1a24 (مشکی روشن)
• ورودیها: #2a2a35 (خاکستری تیره)
• سنگ: #4ecdc4 (فیروزهای)
• کاغذ: #ff9f43 (نارنجی)
• قیچی: #ff6b6b (قرمز)
• متن اصلی: #ffffff (سفید)
• متن ثانویه: #a0a0b0 (خاکستری روشن)
🔧 ویژگیهای فنی:
🔄 منطق بازی:
• انتخاب تصادفی کامپیوتر با random.choice
• تشخیص برنده با دیکشنری winning_combinations
• مدیریت حالت مساوی
• محاسبه امتیازات
📊 مدیریت بازی:
• محدودیت تعداد دورها
• پایان خودکار بازی
• نمایش برنده نهایی
• قابلیت ریست کامل
🎯 انیمیشنها:
• تغییر رنگ دکمهها با hover
• نمایش سریع انتخابها
• تغییر رنگ پیامها
🚀 نحوه بازی:
۱. تعداد دورها را از پنل تنظیمات انتخاب کنید (پیشفرض ۳ دور)
۲. روی یکی از دکمههای انتخاب کلیک کنید:
• 🪨 سنگ
• 📄 کاغذ
• ✂️ قیچی
۳. کامپیوتر به صورت تصادفی یک انتخاب میکند
۴. نتیجه دور فوراً نمایش داده میشود:
• برد شما 🎉
• برد کامپیوتر 💻
• مساوی 🤝
۵. امتیازها بهروزرسانی میشوند
۶. پس از اتمام تعداد دورها، برنده نهایی اعلام میشود
۷. برای بازی جدید، دکمه "🔄 بازی جدید" را بزنید
📋 پیامهای بازی:
🎉 برد شما:
• "🎉 شما برنده این دور شدید!"
• رنگ فیروزهای (#4ecdc4)
💻 برد کامپیوتر:
• "💻 کامپیوتر برنده این دور شد!"
• رنگ قرمز (#ff6b6b)
🤝 مساوی:
• "🤝 مساوی شد!"
• رنگ نارنجی (#ff9f43)
🏆 پایان بازی:
• برد شما: "🏆 تبریک! شما با نتیجه X - Y برنده شدید!"
• برد کامپیوتر: "😢 کامپیوتر با نتیجه X - Y برنده شد!"
• مساوی: "🤝 بازی مساوی شد! X - Y"
❓ راهنمای بازی:
🪨 سنگ:
• سنگ قیچی را میشکند → برنده
• سنگ از کاغذ میبازد → بازنده
📄 کاغذ:
• کاغذ سنگ را میپوشاند → برنده
• کاغذ از قیچی میبازد → بازنده
✂️ قیچی:
• قیچی کاغذ را میبرد → برنده
• قیچی از سنگ میبازد → بازنده
⚡ قوانین:
• هر دور یک انتخاب کنید
• امتیازها جمع میشود
• برنده دور بعد از مقایسه مشخص میشود
• در پایان تعداد دورها، برنده نهایی اعلام میشود
🎯 نکته: میتوانید تعداد دورها را از ۱ تا ۱۰ تنظیم کنید
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• رابط کاربری جذاب و رنگارنگ
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم بسیار کم و عملکرد سریع
• طراحی مدرن و کاربرپسند
• مناسب برای یادگیری مفاهیم بازیسازی
• قابلیت توسعه و اضافه کردن امکانات جدید
🎯 موارد استفاده:
• سرگرمی و بازی با کامپیوتر
• یادگیری برنامهنویسی بازی
• تمرین مفاهیم شرطی و random
• پروژه دانشجویی
• آموزش کودکان و نوجوانان
📌 نکات فنی:
• از random.choice برای انتخاب تصادفی استفاده شده
• منطق بازی با دیکشنری پیادهسازی شده
• امتیازها در متغیرهای جداگانه ذخیره میشوند
• تعداد دورها با Spinbox تنظیم میشود
• افکتهای hover با bind رویدادها
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir