Delphi / VCL / Game Programming

Tetris؛ پیاده‌سازی بازی کلاسیک تتریس با دلفی

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

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

بسته دانلودی شامل سورس Delphi، فایل اجرایی آماده تست، resourceهای صوتی و فایل‌های لازم برای build است.

What it does

برنامه چه کاری انجام می‌دهد؟

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

Game board10 × 20

صفحه بازی و مهره‌ها

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

MovementCollision

حرکت و چرخش

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

ScoreLevel

امتیاز، مرحله و رکورد

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

Technical notes

نکات فنی پیاده‌سازی

این پروژه برای کسی که با Delphi و برنامه‌نویسی رویدادمحور ویندوز آشنا می‌شود، چند نکته عملی دارد:

  • ساخت رابط کاربری با VCL و فرم‌های Delphi
  • استفاده از TTimer برای پایین آمدن تدریجی قطعات
  • نگهداری وضعیت بازی در آرایه ۱۰ در ۲۰
  • تعریف شکل قطعات و حالت‌های چرخش در آرایه‌های کوچک ۴ در ۴
  • رسم قطعات و صفحه با کنترل‌های تصویری و TImageList
  • تشخیص خط کامل، حذف ردیف و جابه‌جایی ردیف‌های بالایی
  • افزایش Level و تغییر سرعت بازی با پیشرفت بازیکن
  • ذخیره High Scoreها در Registry ویندوز
  • استفاده از resource برای افکت‌های صوتی ساده هنگام بازی
For learners

چرا این پروژه آموزشی است؟

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

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

Download

دانلود

بسته نهایی پروژه آماده است و شامل سورس Delphi، فرم‌ها، فایل اجرایی تست‌شده، تصویرها، resourceهای صوتی و فایل‌های پروژه برای Delphi 7 و نسخه‌های جدیدتر است.