"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إطلاق رصاصة في اتجاه الماوس في Pygame؟

كيفية إطلاق رصاصة في اتجاه الماوس في Pygame؟

تم النشر بتاريخ 2024-11-07
تصفح:647

How to shoot a bullet in the direction of the mouse in Pygame?

كيفية إطلاق رصاصة في اتجاه الماوس في Pygame

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

import pygame رصاصة الطبقة: تعريف __init__(الذات، x، y): self.x = x self.y = y الارتفاع الذاتي = 7 العرض الذاتي = 2 self.bullet = pygame.Surface((self.width, self.height)) self.bullet.fill((255, 255, 255))

وظائف فئة اللعبة

import pygame

class Bullet:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.height = 7
        self.width = 2
        self.bullet = pygame.Surface((self.width, self.height))
        self.bullet.fill((255, 255, 255))

لعبة الفئة: تعريف __init__(الذات): الرصاص الذاتي = [] إطلاق النار_الرصاصة (الذاتية): mouse_x, mouse_y = pygame.mouse.get_pos() # احصل على موضع الماوس للرصاصة في self.bullets: rise = mouse_y - Bullet.y # احسب الفرق بين موضع الماوس والرصاصة y run = mouse_x - Bullet.x # احسب الفرق بين موضع الماوس والرصاصة x angle = math.atan2(rise, run) # احسب الزاوية بين الماوس والرصاصة Bullet.x = math.cos(angle) * 10 # تحديث موضع الرمز النقطي x Bullet.y = math.sin(angle) * 10 # تحديث موضع الرمز النقطي y # تدوير ورسم الرصاصة Rotated_bullet = pygame.transform.rotate(bullet.bullet, -math.degrees(angle)) screen.blit(Rotated_bullet, (bullet.x, Bullet.y)) مواطن توليد_الرصاصة (النفس): mouse_buttons = pygame.mouse.get_pressed() # تحقق مما إذا تم النقر بالماوس if mouse_buttons[0]: # إذا تم النقر على زر الماوس الأيسر self.bullets.append(Bullet(player.x, player.y)) # إنشاء رصاصة جديدة

استخدام فئة التعداد النقطي

class Game:
    def __init__(self):
        self.bullets = []
    
    def shoot_bullet(self):
        mouse_x, mouse_y = pygame.mouse.get_pos() # Get the mouse position
        for bullet in self.bullets:
            rise = mouse_y - bullet.y # Calculate the difference between mouse and bullet y position
            run = mouse_x - bullet.x # Calculate the difference between mouse and bullet x position
            angle = math.atan2(rise, run) # Calculate the angle between mouse and bullet

            bullet.x  = math.cos(angle) * 10 # Update bullet x position
            bullet.y  = math.sin(angle) * 10 # Update bullet y position

            # Rotate and draw the bullet
            rotated_bullet = pygame.transform.rotate(bullet.bullet, -math.degrees(angle))
            screen.blit(rotated_bullet, (bullet.x, bullet.y))

    def generate_bullet(self):
        mouse_buttons = pygame.mouse.get_pressed() # Check if mouse is clicked
        if mouse_buttons[0]: # If left mouse button is clicked
            self.bullets.append(Bullet(player.x, player.y)) # Create a new bullet

game = Game() أثناء الجري: # التعامل مع الأحداث # تحديث game.shoot_bullet() game.generate_bullet() # يرسم ملء الشاشة ((0، 0، 0)) للرصاصة في اللعبة.الرصاص: Screen.blit(bullet.bullet, (bullet.x, Bullet.y)) pygame.display.update()سيقوم هذا الكود بإنشاء رصاصة يتم إطلاقها في اتجاه الماوس. سوف تتحرك الرصاصة حتى تخرج من الشاشة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3