>백엔드 개발 >파이썬 튜토리얼 >파이게임에서 플레이어가 사라지는 문제를 해결하고 스페이스바로 총알 사격을 구현하는 방법은 무엇입니까?

파이게임에서 플레이어가 사라지는 문제를 해결하고 스페이스바로 총알 사격을 구현하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 07:22:30442검색

How to Fix Player Disappearance and Implement Bullet Shooting with Space Bar in Pygame?

스페이스바로 총알을 쏘려면 어떻게 해야 하나요?

귀하의 코드에서 스페이스바를 누르면 플레이어가 사라지는 것은 다음과 같습니다. 이는 슈팅과 플레이어 이동을 위한 별도의 루프 때문일 수 있습니다. 이 문제를 해결하려면 두 작업을 기본 애플리케이션 루프에 통합하세요.

총알 발사의 경우 목록(예: bullet_list)을 활용하여 총알 위치를 저장하세요. 발사할 때 총알을 발사하는 개체의 시작 위치를 목록에 추가합니다. 글머리 기호 목록을 반복하여 각 글머리 기호 위치를 업데이트하고 화면을 벗어나는 항목을 제거합니다.

y

또한 기본 애플리케이션 루프에서 이벤트 처리를 구현하여 키 누름을 캡처합니다. 키 상태를 지속적으로 얻으려면 pygame.key.get_pressed()를 사용하십시오. 키 누름에 따라 플레이어의 위치를 ​​업데이트하고 총알 발사를 트리거합니다.

다음은 이러한 수정 사항을 포함하는 수정된 코드 조각입니다.

<code class="python">bullets = []

while True:

    # Event handling
    for event in pygame.event.get():
        pass

    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            bullets.append(Bullet(p.x+p.width//2, p.y))
        if event.key == pygame.K_LEFT:
            p.move_left()
        if event.key == pygame.K_RIGHT:
            p.move_right()

    # Update objects
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        p.move_left()
    if keys[pygame.K_RIGHT]:
        p.move_right()
    for b in bullets:
        b.update()
        if b.y <= 0:
            bullets.remove(b)

    # Clear display
    d.fill((98, 98, 98))

    # Draw scene
    for b in bullets:
        b.draw()
    p.draw()

    # Update display
    win.update()</code>

위 내용은 파이게임에서 플레이어가 사라지는 문제를 해결하고 스페이스바로 총알 사격을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.