Как удалить объект в pygame
Перейти к содержимому

Как удалить объект в pygame

  • автор:

Как удалить объект при выходе за экран?

Пишу игру по примеру, есть задание удалить пулю при выходе за правую часть экрана.
Ври выходе пули за экран она не удаляется, что соответственно не дает выпустить новую, хотя в коде вроде все прописал(смотри внизу)

from bullet import Bullet

def check_keydown_events(event, ai_settings, screen, ship, bullets):
#»»»Реагирует на нажатие клавиш.»»»
if event.key == pygame.K_UP:
ship.moving_up = True
elif event.key == pygame.K_DOWN:
ship.moving_down = True
elif event.key == pygame.K_SPACE:
fire_bullet(ai_settings, screen, ship, bullets)

def fire_bullet(ai_settings, screen, ship, bullets):
#»»»Выпускает пулю, если максимум еще не достигнут.»»»
# Создание новой пули и включение ее в группу bullets.
if len(bullets) < ai_settings.bullets_allowed:
new_bullet = Bullet(ai_settings, screen, ship)
bullets.add(new_bullet)
# Создание новой пули и включение ее в группу bullets.

def check_keyup_events(event, ship):
#»»»Реагирует на отпускание клавиш.»»»
if event.key == pygame.K_UP:
ship.moving_up = False
elif event.key == pygame.K_DOWN:
ship.moving_down = False

def check_events(ai_settings, screen, ship, bullets):
«»»Обрабатывает нажатия клавиш и события мыши.»»»
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
check_keydown_events(event, ai_settings, screen, ship, bullets)
elif event.type == pygame.KEYUP:
check_keyup_events(event, ship)

def update_screen(ai_settings, screen, ship, bullets):
#»»»Обновляет изображения на экране и отображает новый экран.»»»
# При каждом проходе цикла перерисовывается экран.
screen.fill(ai_settings.bg_color)
# Все пули выводятся позади изображений корабля и пришельцев.
for bullet in bullets.sprites():
bullet.draw_bullet()
ship.blitme()
# Отображение последнего прорисованного экрана.
pygame.display.flip()

def update_bullets(bullets):
bullets.update()
# Удаление пуль, вышедших за край экрана.
for bullet in bullets.copy():
if bullet.rect.right bullets.remove(bullet)

  • Вопрос задан более года назад
  • 126 просмотров

Как удалить объект спрайта Pygame?

Мне нужно удалять спрайт из массива, когда он выходит за границу.
Вот код:

import pygame pygame.init() win = pygame.display.set_mode((700, 400)) pygame.display.set_caption("Защита") pygame.display.set_icon(pygame.image.load("images/sheald.png")) fon = pygame.image.load("images/fon.png") class Bullet(pygame.sprite.Sprite): def __init__(self, y, speed, image): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(image).convert_alpha() self.rect = self.image.get_rect(center=(70, y + 20)) self.speed = speed def update(self): self.rect.x += self.speed win.blit(self.image, self.rect) playerY = 70 playerX = 20 bull = [] bulletsNumber = 10 FPS = 60 def shoot(): global bulletsNumber if bulletsNumber > 0: bulletsNumber -= 1 bullet = Bullet(playerY, 2, 'images/bullet.png') bull.append(bullet) def window(): win.blit(fon, (0, 0)) pygame.draw.rect(win, (236, 218, 103), (playerX, playerY, 40, 40)) for bul in bull: bul.update() if bul.rect.x >= 700: **тут нужно удалить объект** 

window — это обновление экрана shoot — создание объекта Как это сделать?

Отслеживать

12.5k 7 7 золотых знаков 19 19 серебряных знаков 48 48 бронзовых знаков

задан 26 мар 2021 в 16:25

Tikhon_ Yaremchuk Tikhon_ Yaremchuk

Как удалить объект с экрана в pygame на Python?

Допустим, я нарисовал объект. Будь это круг или персонаж, как мне его удалить что-бы его небыло на экране?

Голосование за лучший ответ

какое приложение используешь скажешь помогу

Анар ДадашовУченик (137) 4 года назад

Я уже понял, переместить обект за экран.
Приложение использую Pydroid 3

EvaWaxwingЗнаток (406) 12 месяцев назад

это тут причем какая команда-то

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Как удалить объект с экрана в Pygame?

Пишу игру на PyGame, столкнулся с такой проблемой, как удаление спрайта — нигде в документации, на форумах нет информации о том, как удалить спрайт
Есть метод .kill(), но лично у меня он не работает — перестает работать перемещение объекта и т.д, но с экрана сам объект не удаляется. Как это можно сделать?
Код:

import random se_tostring = str import time import pygame, sys from pygame.locals import * pygame.init() pygame.font.init() pygame_screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN) pygame_all_sprites = pygame.sprite.Group() #SE FUNCS def readFile(path): return open(path, 'r').read() def split(str,sep): return str.split(sep) import datetime now = datetime.datetime.now pygameObject_bg = pygame.sprite.Sprite(pygame_all_sprites) try: pygameObject_bg.image = pygame.image.load("bg.png") pygameObject_bg.rect = pygameObject_bg.image.get_rect() except Exception: print("Файл не найден") pygameObject_bg_pos = (-1, 0) pygameObject_bg.rect.x = pygameObject_bg_pos[0] pygameObject_bg.rect.y = pygameObject_bg_pos[1] pygameObject_zombie = pygame.sprite.Sprite(pygame_all_sprites) try: pygameObject_zombie.image = pygame.image.load("zomb.png") pygameObject_zombie.rect = pygameObject_zombie.image.get_rect() except Exception: print("Файл не найден") pygameObject_zombie_pos = (50, -10) pygameObject_zombie.rect.x = pygameObject_zombie_pos[0] pygameObject_zombie.rect.y = pygameObject_zombie_pos[1] pygameObjectText_text1 = pygame.font.SysFont( 'serif', 48).render("text", True, (0,0,0) ) pygame_screen.blit( pygameObjectText_text1 , (0,0) ) while True: pygame.display.flip() pygame.display.update() pygame_all_sprites.draw(pygame_screen) for pygame_event in pygame.event.get(): if pygame_event.type == pygame.KEYDOWN and pygame_event.key == pygame.K_o: pygameObject_zombie_pos = (pygameObject_zombie_pos[0]+5, 0) pygameObject_zombie.rect.x = pygameObject_zombie_pos[0] pygameObject_zombie.rect.y = pygameObject_zombie_pos[1] if pygame_event.type == pygame.KEYDOWN and pygame_event.key == pygame.K_o: pygameObject_zombie.kill()
  • Вопрос задан более двух лет назад
  • 3973 просмотра

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *