дописать функцию shot(), произвести "выстрел"
я хочу создать "пулю", которая будет появляться в координатах равным координатам user_x, user_y и устремляться вверх.
import pygame
import random
pygame.init()
display_width = 594 #ширина
display_height = 600 #высота
display = pygame.display.set_mode((display_width, display_width))
user_width = 56
user_height = 60
user_x = 269
user_y = display_height - user_height - 25
speed = 3
"""set_mode = режим работы"""
display = pygame.display.set_mode((display_width, display_width))# 2 скобки
bullet = pygame.image.load("bullet.jpg")
def run_game():
game = True
land = pygame.image.load("disp.jpg")
hero = pygame.image.load("ship_img.jpg")
bullet = pygame.image.load("bullet.jpg")
"""выход из игры"""
while game:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
left_swipe()
if keys[pygame.K_d]:
right_swipe()
if keys[pygame.K_SPACE]:
shot()
"""blit вставление"""
"""fill заполнение"""
bullet_y = user_y - user_width
display.blit(land, (0, 0))
display.blit(hero, (user_x, user_y))
return_to()
pygame.display.update()
"""движениe"""
def left_swipe():
global user_x
user_x -= speed
def right_swipe():
global user_x
user_x += speed
"""выход за экран"""
def return_to():
global user_x
if user_x > display_width:
user_x = -54
if user_x < - 55:
user = display width
def shot():
"""должен производить выстрел"""
run_game()
Ответы (1 шт):
Автор решения: IgorG
→ Ссылка
Я предлагаю вам создать класс этих самых пуль и добавить метод, отвечающий за их движение:
class Bullet(pygame.sprite.Sprite):
def __init__(self, image_file, location, speed):
self.image = pygame.image.load(image_file)
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = location
self.speed = speed
def move(self):
self.rect = self.rect.move(self.speed)
Затем нужно создать группу этих самых снарядов с помощью pygame.sprite.Group(), вот так:
bullets = pygame.sprite.Group()
Затем в функции shot() создавать новый объект-пулю и добавлять его в группу:
bullet = Bullet(pygame.image.load("ваш_спрайт"), [user_x, user_y], [0, -2]) #сюда можно любую скорость
bullets.add(bullet)
И наконец, в главном цикле, отрисовывать и двигать их:
for b in bullets:
display.blit(b.image, b.rect)
b.move()