بازی تتریس - پروژه پایتون با Tkinter
🎮 بازی تتریس - پروژه کلاسیک پایتون
📊 ویژگیهای کلیدی پروژه:
• 🟦 ۷ قطعه مختلف (I, O, T, S, Z, J, L) با رنگهای متنوع
• 🎨 رنگهای جذاب برای هر قطعه
• 📊 تخته بازی ۱۰x۲۰
• 🏆 سیستم امتیازدهی پیشرفته
• 📈 ۱۰ سطح سرعت (افزایش با هر ۵ خط)
• 🔮 نمایش قطعه بعدی
• 💾 ذخیره خودکار رکورد
• ⏱️ سرعت سقوط متغیر بر اساس سطح
• ⏸️ قابلیت توقف/ادامه با P یا Space
• 🔄 چرخش قطعات با کلید بالا
• ⚡ رها کردن سریع با Space
• 🎮 صفحه شروع با راهنما
• 💀 صفحه پایان بازی با امتیاز
• ⌨️ کنترل کامل با صفحه کلید
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, random
• حجم فایل: ۵۲ کیلوبایت
• تعداد خطوط کد: ۷۰۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس Tetris
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎮 قطعات تتریس:
🟦 I (فیروزهای #00ffff):
• شکل: [1, 1, 1, 1]
• ۴ خانه در یک خط
🟨 O (زرد #ffff00):
• شکل: [[1, 1], [1, 1]]
• مربع ۲x۲
🟪 T (بنفش #aa00ff):
• شکل: [[0, 1, 0], [1, 1, 1]]
• شکل T معروف
🟩 S (سبز #00ff00):
• شکل: [[0, 1, 1], [1, 1, 0]]
• شکل S
🟥 Z (قرمز #ff0000):
• شکل: [[1, 1, 0], [0, 1, 1]]
• شکل Z
🟦 J (آبی #0000ff):
• شکل: [[1, 0, 0], [1, 1, 1]]
• شبیه L برعکس
🟧 L (نارنجی #ffaa00):
• شکل: [[0, 0, 1], [1, 1, 1]]
• شکل L
📊 سیستم امتیازدهی:
خطوط پاک شده:
• ۱ خط: ۱۰۰ × سطح
• ۲ خط: ۳۰۰ × سطح
• ۳ خط: ۵۰۰ × سطح
• ۴ خط (تتریس): ۸۰۰ × سطح
سطوح سرعت:
• سطح ۱: ۵۰۰ms
• سطح ۲: ۴۵۰ms
• سطح ۳: ۴۰۰ms
• سطح ۴: ۳۵۰ms
• سطح ۵: ۳۰۰ms
• سطح ۶: ۲۵۰ms
• سطح ۷: ۲۰۰ms
• سطح ۸: ۱۵۰ms
• سطح ۹: ۱۰۰ms
• سطح ۱۰: ۸۰ms
افزایش سطح: هر ۵ خط یک سطح
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python tetris.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python tetris.py
📁 ساختار پروژه:
tetris-game/
├── tetris.py # فایل اصلی پروژه
├── tetris_record.txt # فایل ذخیره رکورد (ایجاد خودکار)
├── README.md
🎨 طراحی بصری:
🖼️ صفحه اصلی:
• تخته بازی ۱۰x۲۰ با خطوط خاکستری
• قطعات با رنگهای متنوع
• نمایش قطعه بعدی در کادر جداگانه
📊 پنل اطلاعات (راست):
• عنوان TETRIS فیروزهای
• امتیاز (زرد)
• خطوط (سبز)
• سطح (بنفش)
• رکورد (نارنجی)
• نمایش قطعه بعدی
• دکمههای کنترل
🎨 رنگبندی قطعات:
• I: #00ffff (فیروزهای)
• O: #ffff00 (زرد)
• T: #aa00ff (بنفش)
• S: #00ff00 (سبز)
• Z: #ff0000 (قرمز)
• J: #0000ff (آبی)
• L: #ffaa00 (نارنجی)
⌨️ کنترلهای بازی:
← → : حرکت افقی
↓ : حرکت سریعتر به پایین
↑ : چرخش قطعه
Space : رها کردن قطعه
P : توقف/ادامه بازی
🚀 نحوه بازی:
۱. اجرای برنامه
۲. صفحه شروع با راهنما نمایش داده میشود
۳. دکمه "شروع بازی" را بزنید
۴. قطعات از بالا سقوط میکنند
۵. با کلیدهای جهتدار قطعات را جابجا کنید
۶. خطوط کامل را پر کنید تا پاک شوند
۷. با هر خط پاک شده امتیاز بگیرید
۸. با پاک کردن ۴ خط یکباره، تتریس بزنید
۹. سطح با پاک کردن خطوط افزایش مییابد
۱۰. سرعت با افزایش سطح بیشتر میشود
۱۱. بازی تا برخورد قطعه با سقف ادامه دارد
۱۲. رکورد شما ذخیره میشود
🔄 منطق بازی:
📦 مدیریت قطعات:
• انتخاب تصادفی از ۷ قطعه
• ذخیره قطعه بعدی
• چرخش با تبدیل ماتریس
• تشخیص برخورد با دیوارها و قطعات قبلی
🧱 پاک کردن خطوط:
• بررسی کامل بودن هر سطر
• حذف سطرهای کامل
• جابجایی سطرهای بالا به پایین
• محاسبه امتیاز بر اساس تعداد خطوط
📈 افزایش سطح:
• هر ۵ خط یک سطح
• افزایش سرعت سقوط
• حداکثر ۱۰ سطح
💥 تشخیص پایان بازی:
• برخورد قطعه جدید با قطعات قبلی
• نمایش GAME OVER
• ذخیره رکورد جدید
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• ۷ قطعه کامل با رنگهای متنوع
• ۱۰ سطح سرعت
• سیستم امتیازدهی دقیق
• نمایش قطعه بعدی
• ذخیره خودکار رکورد
• کنترل روان با صفحه کلید
• قابلیت توقف/ادامه بازی
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد سریع
• طراحی کلاسیک و جذاب
🎯 موارد استفاده:
• سرگرمی و بازی کلاسیک
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش مفاهیم ماتریس و آرایه دوبعدی
• تمرین کار با گرید و مختصات
• آشنایی با الگوریتمهای بازی
📌 نکات فنی:
• استفاده از دیکشنری برای shapes و colors
• ماتریس برای ذخیره تخته بازی
• تشخیص برخورد با حلقههای تو در تو
• چرخش با zip(*reversed(piece))
• افزایش سطح با floor division
• ذخیره رکورد در فایل txt
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir