إنشاء لعبة تتريس بلغة Python: دليل خطوة بخطوة
تطوير لعبتك الخاصة هو وسيلة فعالة لتحسين مهاراتك في البرمجة. تعلم Python من خلال المشاريع العملية يسمح لك بفهم أعمق لإمكانيات اللغة. لعبة تتريس الكلاسيكية تجمع بين آلية لعب ممتعة وتنفيذ رسومي بسيط نسبيًا.
يحتوي هذا الدليل على شرح تفصيلي لإنشاء لعبة تتريس كاملة بلغة Python. سنستخدم مكتبة Pygame للتعامل مع الرسومات والأحداث. ستحصل على كود جاهز للعمل وفهم كامل لجميع مراحل التطوير.
التحضير للتطوير
المتطلبات الأساسية
لإنشاء لعبة تتريس ستحتاج إلى:
- Python الإصدار 3.x أو أحدث
- مكتبة Pygame لرسم الرسومات
- معرفة أساسية بالبرمجة كائنية التوجه
تثبيت المكونات المطلوبة
يتم تثبيت مكتبة Pygame عبر مدير الحزم pip:
pip install pygame
بعد التثبيت، تصبح المكتبة متاحة للاستيراد في المشروع. توفر Pygame أدوات لإنشاء النوافذ، معالجة الأحداث، رسم الأشكال الأساسية، وتشغيل الصوت.
هندسة لعبة تتريس
المراحل الرئيسية للتطوير
تتضمن عملية إنشاء اللعبة عدة مراحل رئيسية:
- تهيئة نافذة اللعبة وضبط الإعدادات
- تحديد أشكال القطع (Tetrominoes)
- تنفيذ آلية سقوط وتحريك القطع
- التحقق من التصادم مع حدود اللوحة والقطع الأخرى
- نظام إزالة الصفوف الممتلئة
- معالجة إدخال المستخدم للتحكم
- إضافة نظام تسجيل النقاط وشاشة نهاية اللعبة
هيكل بيانات لوحة اللعبة
يتم تمثيل لوحة اللعبة كمصفوفة ثنائية الأبعاد. تحتوي كل خلية على معلومات حول لون القطعة أو تبقى فارغة. يتم تحديد أبعاد اللوحة بواسطة ثوابت، مما يسهل تغيير مقياس اللعبة.
تهيئة نافذة اللعبة
ضبط الإعدادات الأساسية
import pygame
import random
# تهيئة Pygame
pygame.init()
# أبعاد النافذة والشبكة
SCREEN_WIDTH = 300
SCREEN_HEIGHT = 600
BLOCK_SIZE = 30
# لوحة الألوان
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
COLORS = [
(0, 255, 255), # I
(255, 165, 0), # L
(0, 0, 255), # J
(255, 255, 0), # O
(0, 255, 0), # S
(128, 0, 128), # T
(255, 0, 0) # Z
]
# إعداد النافذة
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("تتريس بلغة Python")
تحدد الثوابت أبعاد نافذة اللعبة وحجم المربعات. يحتوي مصفوفة COLORS على ألوان كل نوع من القطع. تقوم الدالة pygame.init() بتهيئة جميع وحدات المكتبة.
إنشاء شاشة اللعبة
تقوم الدالة pygame.display.set_mode() بإنشاء نافذة بالأبعاد المحددة. يحدد الأسلوب set_caption() عنوان النافذة. تشكل هذه الإعدادات الأساس البصري للعبة.
تحديد أشكال القطع (Tetrominoes)
هندسة القطع الكلاسيكية
FIGURES = [
[[1, 1, 1, 1]], # I
[[1, 0, 0],
[1, 1, 1]], # J
[[0, 0, 1],
[1, 1, 1]], # L
[[1, 1],
[1, 1]], # O
[[0, 1, 1],
[1, 1, 0]], # S
[[0, 1, 0],
[1, 1, 1]], # T
[[1, 1, 0],
[0, 1, 1]] # Z
]
يتم تمثيل كل قطعة كمصفوفة ثنائية الأبعاد. تشير الأرقام 1 إلى المربعات المملوءة، بينما تشير الأصفار إلى الخلايا الفارغة. يبسط هيكل البيانات هذا عملية التحقق من التصادم ورسم القطع.
نظام تدوير القطع
بعض القطع لها عدة حالات دوران. لتنفيذ التدوير، يمكن توسيع مصفوفة FIGURES بإضافة جميع الاتجاهات الممكنة لكل قطعة.