
كيفية برمجة لعبة رسم باستخدام Python Pygame : دليل شامل
تعتبر ألعاب وبرامج الرسم من التطبيقات التفاعلية الممتعة التي تتيح للمستخدمين
التعبير عن إبداعهم. إذا كنت مهتمًا بتعلم كيفية برمجة لعبة رسم بسيطة
باستخدام Python Pygame، فهذا الدليل الشامل سيأخذك خطوة بخطوة خلال
عملية إنشاء تطبيق رسم أساسي. سنتناول كل شيء بدءًا من إنشاء واجهة مستخدم
رسومية بسيطة، مرورًا بتمكين المستخدم من الرسم بالماوس وتغيير الألوان و
حجم الفرشاة، وصولًا إلى إضافة وظائف حفظ الرسم و مسح الشاشة، وأخيرًا
نشر التطبيق ليتمكن الآخرون من استخدامه. انطلق معنا في هذه الرحلة الإبداعية
لتعلم كيفية برمجة لعبة رسم باستخدام Python Pygame بطريقة سهلة وممتعة.
خطوات برمجة لعبة رسم باستخدام Python Pygame
الخطوة 1: إعداد بيئة التطوير وتثبيت Pygame
تأكد من تثبيت Python على جهازك. ثم قم بتثبيت مكتبة Pygame باستخدام pip:
pip install pygame
--
أنشئ ملف Python جديدًا باسم drawing_app.py.
الخطوة 2: تهيئة Pygame وإعداد النافذة والألوان
في ملف drawing_app.py، ابدأ باستيراد مكتبة Pygame وتهيئة
وحداتها، ثم قم بإعداد نافذة الرسم والألوان الأساسية :
Python
import pygame
pygame.init()
# أبعاد النافذةscreen_width = 800screen_height = 600screen = pygame.display.set_mode((screen_width, screen_height))pygame.display.set_caption("لعبة الرسم البسيطة")
# الألوانblack = (0, 0, 0)white = (255, 255, 255)red = (255, 0, 0)green = (0, 255, 0)blue = (0, 0, 255)
# لون الخلفية الافتراضيbackground_color = whitescreen.fill(background_color)
# لون الرسم الافتراضي وحجم الفرشاةdrawing_color = blackbrush_size = 5
# متغير حالة الرسمdrawing = Falselast_pos = None
--
الخطوة 3: الحلقة الرئيسية للعبة (الرسم)
هذه هي الدالة التي ستحتوي على منطق الرسم والتفاعل مع المستخدم:
Python
running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_c: screen.fill(background_color) # مسح الشاشة عند الضغط على 'c' if event.type == pygame.MOUSEBUTTONDOWN: drawing = True last_pos = event.pos if event.type == pygame.MOUSEBUTTONUP: drawing = False last_pos = None if event.type == pygame.MOUSEMOTION: if drawing and last_pos: current_pos = event.pos pygame.draw.line(screen, drawing_color, last_pos, current_pos, brush_size) last_pos = current_pos
pygame.display.flip()
pygame.quit()
--
الخطوة 4: إضافة تغيير الألوان
لتغيير لون الرسم، يمكننا إضافة مربعات ألوان في واجهة المستخدم والاستجابة للنقر عليها:
Python
# ... (التهيئة)
# أبعاد ومواقع مربعات الألوانcolor_palette_y = 50color_size = 30color_positions = { red: (10, color_palette_y), green: (10 + color_size + 5, color_palette_y), blue: (10 + 2 * (color_size + 5), color_palette_y), black: (10 + 3 * (color_size + 5), color_palette_y)}
# رسم مربعات الألوانfor color, pos in color_positions.items(): pygame.draw.rect(screen, color, [pos[0], pos[1], color_size, color_size])
# ... (الحلقة الرئيسية)
for event in pygame.event.get(): # ... (أحداث الخروج والمسح والرسم) if event.type == pygame.MOUSEBUTTONDOWN: # التحقق من النقر على مربعات الألوان for color, pos in color_positions.items(): if pos[0] < event.pos[0] < pos[0] + color_size and \ pos[1] < event.pos[1] < pos[1] + color_size: drawing_color = color drawing = True last_pos = event.pos # ... (بقية أحداث الماوس والحركة)
# ... (تحديث الشاشة)
--
الخطوة 5: إضافة تغيير حجم الفرشاة
لتغيير حجم الفرشاة، يمكننا استخدام مفاتيح لوحة المفاتيح أو إضافة عناصر تحكم أخرى:
Python
# ... (التهيئة ومربعات الألوان)
# حجم الفرشاة الافتراضيbrush_size = 5brush_size_text_pos = (10, 10)font = pygame.font.Font(None, 30)
def display_brush_size(): text_surface = font.render(f"الحجم: {brush_size}", True, black) screen.blit(text_surface, brush_size_text_pos)
# ... (الحلقة الرئيسية)
for event in pygame.event.get(): # ... (أحداث الخروج والمسح والرسم وتغيير اللون) if event.type == pygame.KEYDOWN: if event.key == pygame.K_c: screen.fill(background_color) if event.key == pygame.K_UP: brush_size += 1 if event.key == pygame.K_DOWN and brush_size > 1: brush_size -= 1 # ... (أحداث الماوس)
screen.fill(background_color) # إعادة رسم الخلفية for color, pos in color_positions.items(): pygame.draw.rect(screen, color, [pos[0], pos[1], color_size, color_size]) display_brush_size() # عرض حجم الفرشاة الحالي
# ... (منطق الرسم)
pygame.display.flip()
# ... (الخروج)
--
الخطوة 6: حفظ الرسم
لحفظ الرسم الحالي كصورة، يمكننا إضافة وظيفة تستجيب لضغط مفتاح معين:
Python
# ... (التهيئة والمتغيرات والدوال)
def save_drawing(): filename = "drawing_" + time.strftime("%Y%m%d-%H%M%S") + ".png" pygame.image.save(screen, filename) print(f"تم حفظ الرسم باسم: {filename}")
# ... (الحلقة الرئيسية)
for event in pygame.event.get(): # ... (بقية الأحداث) if event.type == pygame.KEYDOWN: if event.key == pygame.K_c: screen.fill(background_color) if event.key == pygame.K_s: save_drawing() # حفظ الرسم عند الضغط على 's' if event.key == pygame.K_UP: brush_size += 1 if event.key == pygame.K_DOWN and brush_size > 1: brush_size -= 1 # ... (أحداث الماوس والرسم والعرض)
# ... (تحديث الشاشة)
--
الخطوة 7: نشر التطبيق
* لنشر تطبيق Pygame، يمكنك اتباع عدة طرق :
* توزيع الكود المصدري: يمكن للمستخدمين الذين لديهم Python و Pygame
مثبتين تشغيل ملف drawing_app.py مباشرة. قم بتضمين تعليمات التشغيل ومتطلبات التثبيت.
* إنشاء ملف تنفيذي باستخدام PyInstaller :
يمكن لـ PyInstaller تجميع برنامج Python وجميع تبعياته في ملف
تنفيذي واحد قابل للتوزيع لأنظمة تشغيل مختلفة (Windows، macOS، Linux).
* التثبيت :
pip install pyinstaller
--
* إنشاء الملف التنفيذي : انتقل إلى المجلد الذي يحتوي على ملف
drawing_app.py وقم بتشغيل :
pyinstaller --onefile drawing_app.py
--
سيتم إنشاء الملف التنفيذي في مجلد dist.
* استخدام cx_Freeze : بديل آخر لـ PyInstaller لإنشاء ملفات تنفيذية.
* التثبيت :
pip install cx_Freeze
--
* إنشاء ملف الإعداد (setup.py): أنشئ ملفًا باسم setup.py في
نفس مجلد drawing_app.py بالتعليمات التالية:
Python
import cx_Freeze
import sys
base = None
if sys.platform == "win32":
base = "Console" # أو "Win32GUI" إذا كنت لا تريد نافذة طرفية
cx_Freeze.setup(
name="SimpleDrawingApp",
version="0.1",
description="تطبيق رسم بسيط باستخدام Pygame",
executables=[cx_Freeze.Executable("drawing_app.py", base=base)]
)
--
* بناء الملف التنفيذي :
python setup.py build
--
سيتم إنشاء الملفات القابلة للتوزيع في مجلد build.
* الخلاصة :
لقد تعلمت الآن كيفية برمجة لعبة رسم بسيطة باستخدام Python ومكتبة Pygame،
بدءًا من إنشاء واجهة المستخدم الأساسية، مرورًا بتمكين الرسم بالماوس وتغيير الألوان
و حجم الفرشاة، وصولًا إلى إضافة وظائف حفظ الرسم و مسح الشاشة، وتقديم
نظرة عامة على عملية نشر التطبيق. يمكنك الآن تطوير هذا التطبيق بإضافة المزيد
من الميزات مثل أدوات رسم متنوعة (خطوط، مربعات، دوائر)، وممحاة، ووظيفة
التراجع والإعادة، وتحسين واجهة المستخدم، والمزيد من الخيارات لحفظ وتحميل الرسومات.