Привет, ребята, я новичок в python и программировании в целом. Я начал делать свою игру с помощью pygame, но столкнулся с проблемой. Я создаю клише, в котором корабль стреляет в флот инопланетян.
Я заставил свой корабль двигаться, но, например:
Когда я нажимаю правую клавишу, а затем левую, они нажимаются одновременно, затем отпускают вправо, корабль останавливается из-за того, что pygame.keyup
вызывает increment = 0
при отпускании правой клавиши.
Но я не знаю, как это исправить, чтобы я мог управлять кораблем без время от времени останавливается из-за быстрого переключения между клавишами.
Я ищу способ, когда я нажимаю клавишу, он игнорирует нажатие предыдущей клавиши, но когда я не нажимаю ни одной кнопки, корабль останавливается
Мой код:
import sys
import pygame
pygame.init()
# Setting up a window
screen = pygame.display.set_mode((1200,800))
screen_rect = screen.get_rect()
# Caption
pygame.display.set_caption("space shooter".title())
# Setting up the icon
icon = pygame.image.load("undertake.png").convert_alpha()
pygame.display.set_icon(icon)
# Identifying a Background
bg = pygame.image.load("bg.png").convert_alpha()
# Adding the jet
jet = pygame.image.load("jet.png").convert_alpha()
jet_rect = jet.get_rect()
jet_rect.centerx = screen_rect.centerx
jet_rect.bottom = screen_rect.bottom
jet_xincrement=0
# Moving the jet
def move_jet(x):
jet_rect.centerx += x
# Adding Boundaries
def boundaries():
if jet_rect.left >= 1200:
jet_rect.right = 0
elif jet_rect.right <= 0:
jet_rect.left = 1200
# Game Loop
while True:
screen.blit(bg,(0,0))
screen.blit(jet,jet_rect)
# EVENTS
for event in pygame.event.get():
# Quitting
if event.type == pygame.QUIT:
sys.exit()
# Key Strokes
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
jet_xincrement = 3
elif event.key == pygame.K_LEFT:
jet_xincrement = -3
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT:
jet_xincrement = 0
boundaries()
move_jet(jet_xincrement)
pygame.display.flip()