القائمة الرئيسية

الصفحات

كيفية برمجة لعبة رسم باستخدام Python Pygame : دليل شامل

How-to-code-drawing-game-in-Python-Pygame، code for a drawing game، How to code a drawing game using Python (Pygame)، لعبة رسم، برمجة لعبة رسم باستخدام python pygame، برمجة لعبة رسم، python pygame، برمجة لعبة رسم بسيطة باستخدام Python Pygame: دليل شامل، برمجة لعبة رسم Python، تطوير تطبيق رسم Pygame، إنشاء برنامج رسم بسيط Python، واجهة مستخدم لعبة رسم Pygame، الرسم بالماوس Python، تغيير الألوان في برنامج رسم Python، تغيير حجم الفرشاة في برنامج رسم Python، حفظ الرسم في لعبة Pygame، مسح الشاشة في برنامج رسم Python، أدوات الرسم الأساسية Pygame، حلقة الأحداث في Pygame للرسم، سطح Pygame للرسم، نشر تطبيق Pygame، تحويل برنامج Python إلى ملف تنفيذي، توزيع لعبة رسم Python، برمجة لعبة رسم بسيطة باستخدام Python Pygame، python pygame، تطوير تطبيق رسم Pygame، إنشاء برنامج رسم بسيط Python، سطح Pygame للرسم،



كيفية برمجة لعبة رسم باستخدام 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 = 800
screen_height = 600
screen = 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 = white
screen.fill(background_color)

# لون الرسم الافتراضي وحجم الفرشاة
drawing_color = black
brush_size = 5

# متغير حالة الرسم
drawing = False
last_pos = None


--

الخطوة 3: الحلقة الرئيسية للعبة (الرسم)

هذه هي الدالة التي ستحتوي على منطق الرسم والتفاعل مع المستخدم:




Python

running = True
while 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 = 50
color_size = 30
color_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 = 5
brush_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، 
بدءًا من إنشاء واجهة المستخدم الأساسية، مرورًا بتمكين الرسم بالماوس وتغيير الألوان
 و حجم الفرشاة، وصولًا إلى إضافة وظائف حفظ الرسم و مسح الشاشة، وتقديم
 نظرة عامة على عملية نشر التطبيق. يمكنك الآن تطوير هذا التطبيق بإضافة المزيد 
من الميزات مثل أدوات رسم متنوعة (خطوط، مربعات، دوائر)، وممحاة، ووظيفة
 التراجع والإعادة، وتحسين واجهة المستخدم، والمزيد من الخيارات لحفظ وتحميل الرسومات. 


جدول المحتويات