Я сделал игру, используя Python и Pygame. Мой корабль движется, но у меня возникают проблемы с его расстрелом. Я определил функцию, которая называется shootBullets()
, но она не работает. И теперь, если я нажимаю клавишу пробела, мой корабль движется. Он должен двигаться только при нажатии клавиш со стрелками влево или вправо. Я хочу, чтобы мой корабль стрелял пулями в нижнюю часть экрана, когда я нажимаю клавишу пробела. вот мой код:Почему мой корабль не стреляет в пули?
import pygame,sys
from pygame.locals import *
pygame.init()
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
bright_blue = (0, 135, 255)
yellow = (255,242,0)
ship_body = (33, 117, 243)
screen = pygame.display.set_mode((500,500))
pygame.display.set_caption("Battleship")
gameExit = False
background = pygame.image.load("Sky Background.png")
bulletImg = pygame.image.load("Bullet.png")
bulletY = 80
def shootBullets():
for event in pygame.event.get():
if event.type == KEYDOWN and event.key == K_SPACE:
bulletY += 5
screen.blit(bulletImg,(247,bulletY))
pygame.key.set_repeat(50,50)
ship_points = [ [100, 50], [180, 95], [320, 95], [400, 50], [250, 35] ]
x = 0
y = 0
while not gameExit:
for event in pygame.event.get():
if event.type == QUIT:
gameExit = True
if event.type == KEYDOWN:
if event.key == pygame.K_LEFT: x = -5
if event.key == pygame.K_RIGHT: x = 5
for point in ship_points:
point[0] += x
for point in ship_points:
if point[0] <= 0 or point[0] >= 500:
gameExit = True
shootBullets()
screen.fill(black)
screen.blit(background, (0,0))
ship = [
pygame.draw.polygon(screen, ship_body, ship_points),
pygame.draw.polygon(screen, black, ship_points, 1)]
pygame.display.update()
pygame.quit()
quit()
Вы не проверять, нажата ли пространство или нет. Зачем тогда снимать пули? – syntonym
Ваша строка 'point [0] + = x' запускается при нажатии кнопки _any_. 'x' может переноситься из предыдущих циклов цикла. – khelwood