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

الصفحات

دليل تفصيلي عن برمجة لعبة إطلاق نار بسيطة باستخدام Python و Pygame

best-guide-to-programming-shooting-game-using-Python-Pygame، best guide to programming shooting game using Python and Pygame، best guide to programming shooting game using Python and Pygame، دليل تفصيلي عن برمجة لعبة إطلاق نار بسيطة باستخدام Python و Pygame، دليل تفصيلي عن برمجة لعبة إطلاق نار باستخدام Python و Pygame، لعبة إطلاق نار، برمجة ألعاب، تطوير ألعاب، ألعاب ثنائية الأبعاد، بايثون، Pygame، لعبة، برمجة، إطلاق نار، كود، حركة، العدو، اللاعب، رصاصة، تصادم، نقاط، نهاية اللعبة، برمجة لعبة إطلاق نار باستخدام بايثون، انشاء لعبة ثنائية الأبعاد بـ Pygame، خطوات تطوير لعبة بايثون للمبتدئين، تحريك اللاعب باستخدام مفاتيح الأسهم، إضافة تصادم بين الرصاصة والعدو، حساب نقاط اللاعب في الألعاب، عرض شاشة نهاية اللعبة في Pygame، التحكم في حركة العدو في الألعاب، تحميل الصور في ألعاب Pygame، برمجة ألعاب بسيطة بلغة بايثون، Python، برمجة لعبة إطلاق نار بسيطة باستخدام بايثون ومكتبة Pygame، دليل تفصيلي عن برمجة،لعبة إطلاق نار،استخدام Python و Pygame، دليل تفصيلي عن برمجة لعبة إطلاق نار بسيطة باستخدام Python و Pygame، دليل تفصيلي عن برمجة لعبة إطلاق نار باستخدام Python و Pygame، برمجة لعبة إطلاق نار بسيطة باستخدام Python و Pygame، بايثون، Pygame، لعبة إطلاق نار، برمجة ألعاب، تطوير ألعاب، ألعاب ثنائية الأبعاد،



دليل تفصيلي عن برمجة لعبة إطلاق نار بسيطة باستخدام Python و Pygame


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


خطوات برمجة لعبة إطلاق نار بسيطة باستخدام بايثون و Pygame


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

الخطوة 1: إعداد البيئة وتثبيت المكتبات
قبل البدء، تأكد من تثبيت بايثون على جهازك، ثم قم بتثبيت مكتبة Pygame 
باستخدام الأمر التالي في موجه الأوامر:
pip install pygame

الخطوة 2: إنشاء نافذة اللعبة
أولاً، سنقوم بإنشاء نافذة اللعبة باستخدام Pygame. إليك الكود:
     
 import pygame

# تهيئة Pygame
pygame.init()

# تحديد أبعاد النافذة
width = 800
height = 600
screen = pygame.display.set_mode((width, height))

# عنوان النافذة
pygame.display.set_caption("لعبة إطلاق النار")

# حلقة اللعبة الرئيسية
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # تحديث الشاشة
    pygame.display.flip()

# إنهاء Pygame
pygame.quit()
pygame.init(): تهيئة Pygame.

        
      
شرح الكود : 
- screen = pygame.display.set_mode((width, height)): إنشاء نافذة اللعبة وتحديد أبعادها.
- pygame.display.set_caption("لعبة إطلاق النار"): تحديد عنوان النافذة.
- running = True: متغير للتحكم في حلقة اللعبة.
- while running: حلقة اللعبة الرئيسية.
- pygame.event.get(): الحصول على الأحداث التي وقعت.
- pygame.display.flip(): تحديث الشاشة.
- pygame.quit(): إنهاء Pygame.

الخطوة 3: إضافة اللاعب
سنقوم الآن بإضافة اللاعب إلى اللعبة. إليك الكود:
        
import pygame

# ... (الكود السابق)

# تحميل صورة اللاعب
player_img = pygame.image.load("player.png")
player_x = 370
player_y = 480

# دالة لرسم اللاعب
def player(x, y):
    screen.blit(player_img, (x, y))

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

    # رسم اللاعب
    player(player_x, player_y)

    # ... (تحديث الشاشة وإنهاء Pygame) 
      
              
شرح الكود : 
player_img = pygame.image.load("player.png"): تحميل صورة اللاعب.
player_x = 370: تحديد موضع اللاعب على المحور الأفقي.
player_y = 480: تحديد موضع اللاعب على المحور الرأسي.
player(x, y): دالة لرسم اللاعب.
screen.blit(player_img, (x, y)): رسم الصورة على الشاشة.

الخطوة 4: إضافة حركة اللاعب
سنقوم الآن بإضافة حركة اللاعب باستخدام مفاتيح الأسهم. إليك الكود:
        
      
import pygame

# ... (الكود السابق)

# متغيرات حركة اللاعب
player_x_change = 0

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

    # التحكم في حركة اللاعب
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x_change = -5
    elif keys[pygame.K_RIGHT]:
        player_x_change = 5
    else:
        player_x_change = 0

    # تحديث موضع اللاعب
    player_x += player_x_change

    # ... (رسم اللاعب وتحديث الشاشة وإنهاء Pygame) 
      
        
      
شرح الكود :
- player_x_change = 0: متغير لتخزين مقدار تغيير موضع اللاعب على المحور الأفقي.
- pygame.key.get_pressed(): الحصول على حالة مفاتيح لوحة المفاتيح.




- keys[pygame.K_LEFT]: التحقق من الضغط على مفتاح السهم الأيسر.
- keys[pygame.K_RIGHT]: التحقق من الضغط على مفتاح السهم الأيمن.

الخطوة 5: إضافة العدو
سنقوم الآن بإضافة العدو إلى اللعبة. إليك الكود:
        
      
import pygame
import random

# ... (الكود السابق)

# تحميل صورة العدو
enemy_img = pygame.image.load("enemy.png")
enemy_x = random.randint(0, 736)
enemy_y = random.randint(50, 150)

# دالة لرسم العدو
def enemy(x, y):
    screen.blit(enemy_img, (x, y))

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

    # رسم العدو
    enemy(enemy_x, enemy_y)

    # ... (رسم اللاعب وتحديث الشاشة وإنهاء Pygame) 
      
        
      
 
شرح الكود :
- enemy_img = pygame.image.load("enemy.png"): تحميل صورة العدو.
- enemy_x = random.randint(0, 736): تحديد موضع العدو عشوائيًا على المحور الأفقي.
- enemy_y = random.randint(50, 150): تحديد موضع العدو عشوائيًا على المحور الرأسي.
- enemy(x, y): دالة لرسم العدو.

الخطوة 6: إضافة حركة العدو
سنقوم الآن بإضافة حركة العدو. إليك الكود:
        
      
import pygame
import random

# ... (الكود السابق)

# متغيرات حركة العدو
enemy_x_change = 4
enemy_y_change = 40

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

    # تحديث موضع العدو
    enemy_x += enemy_x_change
    if enemy_x <= 0 or enemy_x >= 736:
        enemy_x_change *= -1
        enemy_y += enemy_y_change

    # ... (رسم اللاعب والعدو وتحديث الشاشة وإنهاء Pygame) 
      
        
      
شرح الكود : 
- enemy_x_change = 4: متغير لتخزين مقدار تغيير موضع العدو على المحور الأفقي.
- enemy_y_change = 40: متغير لتخزين مقدار تغيير موضع العدو على المحور الرأسي.

الخطوة 7: إضافة الرصاصة

سنقوم الآن بإضافة الرصاصة إلى اللعبة. إليك الكود:
        
      
import pygame

# ... (الكود السابق)

# تحميل صورة الرصاصة
bullet_img = pygame.image.load("bullet.png")
bullet_x = 0
bullet_y = 480
bullet_x_change = 0
bullet_y_change = 10
bullet_state = "ready"

# دالة لرسم الرصاصة
def fire_bullet(x, y):
    global bullet_state
    bullet_state = "fire"
    screen.blit(bullet_img, (x + 16, y + 10))

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

    # إطلاق الرصاصة
    if keys[pygame.K_SPACE] and bullet_state == "ready":
        bullet_x = player_x
        fire_bullet(bullet_x, bullet_y)

    # تحديث موضع الرصاصة
    if bullet_state == "fire":
        bullet_y -= bullet_y_change
        fire_bullet(bullet_x, bullet_y)

    # ... (رسم اللاعب والعدو والرصاصة وتحديث الشاشة وإنهاء Pygame)
      
        
      
شرح الكود :
- bullet_img = pygame.image.load("bullet.png"): تحميل صورة الرصاصة.
- bullet_x = 0: تحديد موضع الرصاصة على المحور الأفقي.
- bullet_y = 480: تحديد موضع الرصاصة على المحور الرأسي.
- bullet_y_change = 10: 
متغير لتخزين مقدار تغيير موضع الرصاصة على المحور الرأسي.
- bullet_state = "ready": 
متغير لتخزين حالة الرصاصة، حيث "ready" تعني أن الرصاصة جاهزة للإطلاق.
- fire_bullet(x, y):
 دالة لإطلاق الرصاصة، حيث تقوم بتغيير حالة الرصاصة إلى "fire" ورسمها على الشاشة.
- if keys[pygame.K_SPACE] and bullet_state == "ready":
 التحقق من الضغط على مفتاح المسافة وأن الرصاصة جاهزة للإطلاق.
- bullet_x = player_x:
 تحديد موضع الرصاصة على المحور الأفقي ليكون نفس موضع اللاعب.
- fire_bullet(bullet_x, bullet_y): إطلاق الرصاصة.
- if bullet_state == "fire": التحقق من أن الرصاصة قد تم إطلاقها.
- bullet_y -= bullet_y_change: تحديث موضع الرصاصة على المحور الرأسي.
- fire_bullet(bullet_x, bullet_y): رسم الرصاصة على الشاشة.

الخطوة 8: إضافة التصادم

سنقوم الآن بإضافة وظيفة التصادم بين الرصاصة والعدو. إليك الكود:
        
      

import pygame
import math

# ... (الكود السابق)

# دالة للتحقق من التصادم
def is_collision(enemy_x, enemy_y, bullet_x, bullet_y):
    distance = math.sqrt(math.pow(enemy_x - bullet_x, 2) + math.pow(enemy_y - bullet_y, 2))
    if distance < 27:
        return True
    else:
        return False

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

    # التحقق من التصادم
    collision = is_collision(enemy_x, enemy_y, bullet_x, bullet_y)
    if collision:
        bullet_y = 480
        bullet_state = "ready"
        enemy_x = random.randint(0, 736)
        enemy_y = random.randint(50, 150)

    # ... (رسم اللاعب والعدو والرصاصة وتحديث الشاشة وإنهاء Pygame)      
        
      
شرح الكود :
- is_collision(enemy_x, enemy_y, bullet_x, bullet_y):
 دالة للتحقق من التصادم بين العدو والرصاصة.
- math.sqrt(): حساب الجذر التربيعي.
- math.pow(): حساب القوة.
- distance < 27: التحقق من أن المسافة بين العدو والرصاصة أقل من 27 بكسل.

الخطوة 9: إضافة نقاط اللعبة
سنقوم الآن بإضافة نقاط اللعبة لعرض نتيجة اللاعب. إليك الكود:
        

import pygame

# ... (الكود السابق)

# نقاط اللعبة
score_value = 0
font = pygame.font.Font('freesansbold.ttf', 32)
textX = 10
textY = 10

# دالة لعرض النقاط
def show_score(x, y):
    score = font.render("Score : " + str(score_value), True, (255, 255, 255))
    screen.blit(score, (x, y))

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

    # التحقق من التصادم
    if collision:
        score_value += 1

    # عرض النقاط
    show_score(textX, textY)

    # ... (رسم اللاعب والعدو والرصاصة وتحديث الشاشة وإنهاء Pygame)
      
        
      
شرح الكود :
- score_value = 0: متغير لتخزين نقاط اللاعب.
- font = pygame.font.Font('freesansbold.ttf', 32): إنشاء خط لعرض النقاط.
- show_score(x, y): دالة لعرض النقاط على الشاشة.
- font.render(): إنشاء نص لعرض النقاط.
- screen.blit(): رسم النص على الشاشة.

الخطوة 10: إضافة نهاية اللعبة
سنقوم الآن بإضافة شاشة نهاية اللعبة عند خسارة اللاعب. إليك الكود:
        

import pygame

# ... (الكود السابق)

# نهاية اللعبة
over_font = pygame.font.Font('freesansbold.ttf', 64)

# دالة لعرض نهاية اللعبة
def game_over_text():
    over_text = over_font.render("GAME OVER", True, (255, 255, 255))
    screen.blit(over_text, (200, 250))

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

    # التحقق من نهاية اللعبة
    if enemy_y > 440:
        game_over_text()
        running = False

    # ... (عرض النقاط وتحديث الشاشة وإنهاء Pygame)
      
        
      
شرح الكود :
- over_font = pygame.font.Font('freesansbold.ttf', 64):
 إنشاء خط لشاشة نهاية اللعبة.
- game_over_text(): دالة لعرض نص نهاية اللعبة.

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

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