"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 파이게임에서 마우스 방향으로 총알을 쏘는 방법은 무엇입니까?

파이게임에서 마우스 방향으로 총알을 쏘는 방법은 무엇입니까?

2024-11-07에 게시됨
검색:302

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

파이게임에서 마우스 방향으로 총알을 쏘는 방법

파이게임에서는 마우스 방향으로 발사되는 총알을 생성할 수 있습니다. 이렇게 하려면 글머리 기호를 나타내는 클래스를 만들고 마우스 위치에 따라 초기 위치와 방향을 설정해야 합니다.

글머리 기호에 대한 클래스

먼저 글머리 기호에 대한 클래스를 만듭니다. 이 클래스에는 총알의 위치, 크기 및 표면에 대한 속성이 포함되어야 합니다. 표면은 화면에 렌더링되는 것입니다.

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))

게임 클래스 함수

다음으로 게임에 대한 클래스를 만듭니다. 이 클래스에는 총알을 발사하고 생성하는 기능이 포함됩니다.

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 클래스의 인스턴스를 생성하고shoot_bullet 및 generate_bullet 함수를 호출합니다.

game = Game()

while running:
    # Event handling

    # Update
    game.shoot_bullet()
    game.generate_bullet()
    
    # Draw
    screen.fill((0, 0, 0))
    for bullet in game.bullets:
        screen.blit(bullet.bullet, (bullet.x, bullet.y))
    pygame.display.update()

이 코드는 마우스 방향으로 발사되는 총알을 생성합니다. 총알은 화면 밖으로 나갈 때까지 움직입니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3