«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как заставить игрока снимать пули в игре, оставляя игрока видимым?

Как заставить игрока снимать пули в игре, оставляя игрока видимым?

Опубликовано в 2025-02-22
Просматривать:359

How to Make a Player Shoot Bullets in a Game While Keeping the Player Visible?

съемки пуль с помощью космической панели

Этот вопрос включает в себя реализацию способности стрелять пули, когда нажата космическая планка, сохраняя при этом символ игрока на экране. [

Проблема и решение

у кода Asker изначально была проблема, когда персонаж игрока исчез при съемке. Это связано с тем, что движение стрельбы и игрока были разделены на разные петли. Чтобы решить эту проблему, нам нужно объединить их в единый основной цикл, где оба поведения обновляются одновременно.

Другая проблема была неспособностью сломать цикл съемки, когда пуля достигла вершины экрана. Оригинальный код использовал цикл «Время», которая продолжалась бесконечно. Чтобы исправить это, нам нужно использовать цикл Whink с условием, которое проверяет, достигла ли пуля. &&&]

импорт pygame, os # Настройка Cowerplate опущена для краткости Игрок класса: def __init __ (self, x, y, height, width): ... def Draw (Self): ... def move_left (self): ... def move_right (self): ... классная пуля: def __init __ (self, x, y): ... def Update (Self): ... def Draw (Self): ... # Списки пуль пуль = [] # Инициализировать игрока P = игрок (600, 500, 50, 30) # Основной игров run = true во время пробега: clock.tick (100) # Обрабатывать события для события в pygame.event.get (): if event.type == pygame.quit: run = false if event.type == pygame.keydown: if event.key == pygame.k_space: Bullets.append (Bullet (P.X P.Width // 2, P.Y)) # Обновить объекты keys = pygame.key.get_pressed () Если ключи [pygame.k_left]: p.move_left () Если ключи [pygame.k_right]: p.move_right () Для B в пулях: B.Update () # Обновите положение и удалите пулю, если она выходит за рамки экрана Если B.y & lt; 0: пули. РЕМОВА (б) # Обновить кадр D.Fill ((98, 98, 98)) Для B в пулях: B.Draw () p.draw () win.update ()

weal informs:

import pygame, os

# Boilerplate setup omitted for brevity

class Player:
    def __init__(self, x, y, height, width):
        ...

    def draw(self):
        ...

    def move_left(self):
        ...

    def move_right(self):
        ...


class Bullet:
    def __init__(self, x, y):
        ...

    def update(self):
        ...

    def draw(self):
        ...


# Lists of bullets
bullets = []

# Initialize player
p = Player(600, 500, 50, 30)

# Main game loop
run = True
while run:
    clock.tick(100)
    
    # Handle events
    for event in pygame.event.get():
        if event.type ==  pygame.QUIT:
            run = False
        if event.type ==  pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bullets.append(Bullet(p.x p.width//2, p.y))

    # 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()
        # Update position and remove bullet if it goes off-screen
        if b.y < 0:
            bullets.remove(b)

    # Update frame
    d.fill((98, 98, 98))
    for b in bullets:
        b.draw()
    p.draw()
    win.update()
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3