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

الصفحات

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

How-to-code-snake-game-in-Python، لعبة الثعبان، How to code a snake game using Python: A comprehensive guide، برمجة لعبة الثعبان باستخدام Python، كيفية برمجة لعبة الثعبان الكلاسيكية باستخدام Python: دليل شامل، Python Pygame، برمجة لعبة الثعبان Python، تطوير لعبة أفعى Python، إنشاء لعبة الثعبان باستخدام Pygame، واجهة مستخدم لعبة الثعبان Python، تحريك الثعبان Python، التحكم في الثعبان Python، إضافة الطعام للعبة الثعبان Python، اكتشاف الاصطدام في لعبة الثعبان Python، حفظ نقاط لعبة الثعبان Python، عرض النتيجة في لعبة الثعبان Python، نشر لعبة Python، تحويل برنامج Python إلى ملف تنفيذي، توزيع لعبة Python. كيفية برمجة لعبة الثعبان باستخدام Python، إنشاء لعبة الثعبان باستخدام Pygame، تطوير لعبة أفعى Python، How-to-code-snake-game-in-Python،




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



تعتبر لعبة الثعبان من الألعاب الكلاسيكية والبسيطة التي أسرت قلوب الكثيرين. 
إذا كنت مهتمًا بتعلم كيفية برمجة لعبة الثعبان باستخدام Python، فهذا الدليل 
الشامل سيأخذك خطوة بخطوة خلال عملية إنشاء هذه اللعبة الممتعة. سنستخدم
 مكتبة Pygame القوية لإنشاء واجهة المستخدم الرسومية، وتحريك الثعبان بسلاسة،
 والتعامل مع مدخلات المستخدم للتحكم في الثعبان، وإضافة آليات توليد الطعام واكتشاف الاصطدامات. 
سنتعلم أيضًا كيف نحفظ النقاط ونعرضها، وأخيرًا، سنستكشف طرق نشر التطبيق
 ليتمكن الآخرون من لعب لعبتك. انطلق معنا في هذه الرحلة الشيقة لتعلم كيفية 
برمجة لعبة الثعبان باستخدام Python بطريقة ممتعة وتفاعلية.


خطوات برمجة لعبة الثعبان باستخدام Python 


الخطوة 1: إعداد بيئة التطوير وتثبيت Pygame

تأكد من تثبيت Python على جهازك. ثم قم بتثبيت مكتبة Pygame باستخدام pip:
pip install pygame
--
* أنشئ ملف Python جديدًا باسم snake_game.py.

الخطوة 2: تهيئة Pygame وإعداد النافذة

في ملف snake_game.py، ابدأ باستيراد مكتبة Pygame
 وتهيئة وحداتها، ثم قم بإعداد نافذة اللعبة:




Python

import pygame
import random
import time

pygame.init()

# أبعاد النافذة
screen_width = 600
screen_height = 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("لعبة الثعبان")

# الألوان
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)

# سرعة اللعبة
game_speed = 15

# حجم قطعة الثعبان
snake_block_size = 10


--

الخطوة 3: تعريف دالة رسم الثعبان

لتمثيل الثعبان على الشاشة، قم بإنشاء دالة ترسم قطع الثعبان :
Python

def draw_snake(snake_block_size, snake_list):
    for block in snake_list:
        pygame.draw.rect(screen, green, [block[0], block[1], snake_block_size, snake_block_size])
--

الخطوة 4: تعريف دالة عرض النتيجة

لعرض النتيجة الحالية للاعب، قم بإنشاء دالة تعرض النص على الشاشة:
Python

font_style = pygame.font.SysFont(None, 30)

def display_score(score):
    value = font_style.render("النقاط: " + str(score), True, white)
    screen.blit(value, [0, 0])
--

الخطوة 5: الحلقة الرئيسية للعبة

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




Python

def game_loop():
    game_over = False
    game_close = False

    # إحداثيات بداية الثعبان
    x1 = screen_width / 2
    y1 = screen_height / 2

    # تغيير إحداثيات الثعبان
    x1_change = 0
    y1_change = 0

    # قائمة بأجزاء الثعبان
    snake_list = []
    snake_length = 1

    # موقع الطعام
    foodx = round(random.randrange(0, screen_width - snake_block_size) / 10.0) * 10.0
    foody = round(random.randrange(0, screen_height - snake_block_size) / 10.0) * 10.0

    clock = pygame.time.Clock()

    while not game_over:

        while game_close == True:
            screen.fill(black)
            message = font_style.render("لقد خسرت! اضغط Q-خروج أو C-لعب مجددًا", True, red)
            screen.blit(message, [screen_width / 6, screen_height / 3])
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        game_loop()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -snake_block_size
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block_size
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block_size
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block_size
                    x1_change = 0

        # تحديث إحداثيات الثعبان
        x1 += x1_change
        y1 += y1_change

        # التحقق من حدود الشاشة
        if x1 >= screen_width or x1 < 0 or y1 >= screen_height or y1 < 0:
            game_close = True

        screen.fill(black)
        pygame.draw.rect(screen, red, [foodx, foody, snake_block_size, snake_block_size])
        snake_head = []
        snake_head.append(x1)
        snake_head.append(y1)
        snake_list.append(snake_head)
        if len(snake_list) > snake_length:
            del snake_list[0]

        # التحقق من اصطدام الثعبان بنفسه
        for x in snake_list[:-1]:
            if x == snake_head:
                game_close = True

        draw_snake(snake_block_size, snake_list)
        display_score(snake_length - 1)

        pygame.display.update()

        # التحقق من أكل الطعام
        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, screen_width - snake_block_size) / 10.0) * 10.0
            foody = round(random.randrange(0, screen_height - snake_block_size) / 10.0) * 10.0
            snake_length += 1

        clock.tick(game_speed)

    pygame.quit()
    quit()

# بدء حلقة اللعبة
game_loop()


--

الخطوة 6: حفظ النقاط (تخزين النتيجة)

لحفظ النقاط، يمكنك استخدام ملف بسيط لتخزين أعلى نتيجة. 




قم بتعديل دالة game_loop ودالة جديدة لحفظ وقراءة النتيجة :




Python

# ... (بقية الأكواد)

def save_high_score(score):
    try:
        with open("high_score.txt", "w") as f:
            f.write(str(score))
    except IOError:
        print("خطأ في حفظ النتيجة!")

def load_high_score():
    try:
        with open("high_score.txt", "r") as f:
            return int(f.readline())
    except FileNotFoundError:
        return 0
    except ValueError:
        return 0
    except IOError:
        print("خطأ في قراءة النتيجة!")
        return 0

def game_loop():
    game_over = False
    game_close = False

    # ... (بقية تهيئة اللعبة)

    high_score = load_high_score()

    while not game_over:

        while game_close == True:
            screen.fill(black)
            message = font_style.render("لقد خسرت! نقاطك: " + str(snake_length - 1), True, red)
            screen.blit(message, [screen_width / 6, screen_height / 3 - 30])
            high_score_display = font_style.render("أعلى نتيجة: " + str(high_score), True, white)
            screen.blit(high_score_display, [screen_width / 6, screen_height / 3 + 10])
            play_again = font_style.render("اضغط C-لعب مجددًا أو Q-خروج", True, white)
            screen.blit(play_again, [screen_width / 6, screen_height / 3 + 50])
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        game_loop()

        # ... (بقية حلقة اللعبة)

        display_score(snake_length - 1) # عرض النتيجة الحالية

        pygame.display.update()

        if x1 == foodx and y1 == foody:
            # ... (منطق أكل الطعام)
            if snake_length - 1 > high_score:
                save_high_score(snake_length - 1)
                high_score = snake_length - 1

        clock.tick(game_speed)

    pygame.quit()
    quit()

# ... (بقية الأكواد)


--

الخطوة 7: نشر التطبيق

لنشر لعبة Python تعتمد على Pygame، يمكنك اتباع عدة طرق:
1- توزيع الكود المصدري: يمكن للمستخدمين الذين لديهم Python و Pygame
 مثبتين تشغيل ملف snake_game.py مباشرة. قم بتضمين تعليمات التشغيل ومتطلبات التثبيت.
2- إنشاء ملف تنفيذي باستخدام PyInstaller: يمكن لـ PyInstaller تجميع
 برنامج Python وجميع تبعياته في ملف تنفيذي واحد قابل للتوزيع لأنظمة
 تشغيل مختلفة (Windows، macOS، Linux).
* التثبيت :
pip install pyinstaller
--
* إنشاء الملف التنفيذي: انتقل إلى المجلد الذي يحتوي على ملف
 snake_game.py وقم بتشغيل:
pyinstaller --onefile snake_game.py
--
سيتم إنشاء الملف التنفيذي في مجلد dist.
3- استخدام cx_Freeze : بديل آخر لـ PyInstaller لإنشاء ملفات تنفيذية.
* التثبيت :
pip install cx_Freeze
--
* إنشاء ملف الإعداد (setup.py): أنشئ ملفًا باسم setup.py في نفس
 مجلد snake_game.py بالتعليمات التالية :
Python

import cx_Freeze
import sys

base = None
if sys.platform == "win32":
    base = "Console" # أو "Win32GUI" إذا كنت لا تريد نافذة طرفية

cx_Freeze.setup(
    name="SnakeGame",
    version="0.1",
    description="لعبة الثعبان الكلاسيكية",
    executables=[cx_Freeze.Executable("snake_game.py", base=base)]
)
--

* بناء الملف التنفيذي :
python setup.py build
--
سيتم إنشاء الملفات القابلة للتوزيع في مجلد build.

4- التوزيع كتطبيق ويب (أكثر تعقيدًا): إذا كنت ترغب في تشغيل اللعبة 
في متصفح الويب، فستحتاج إلى استخدام مكتبات مثل PyScript أو
 Brython لتحويل Python و Pygame إلى JavaScript، لكن هذا يتطلب جهدًا إضافيًا وتعقيدًا أكبر.

* الخلاصة :
لقد تعلمت الآن كيفية برمجة لعبة الثعبان الكلاسيكية باستخدام Python 
ومكتبة Pygame، بدءًا من إنشاء واجهة المستخدم وتحريك الثعبان والتحكم فيه،
 وصولًا إلى إضافة الطعام واكتشاف الاصطدامات وحفظ النقاط وعرضها. 
وأخيرًا، استكشفت طرق نشر التطبيق ليتمكن الآخرون من الاستمتاع بلعبتك. 
يمكنك الآن تطوير هذه اللعبة بإضافة المزيد من الميزات مثل مستويات صعوبة مختلفة، 
وأنواع طعام خاصة، وخلفيات متنوعة، والمزيد من التحسينات على واجهة المستخدم.
 استمر في التجربة والإبداع!


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