I start to program the keyboard keys on my game, the idea is that for each button that is pressed the player will make a sound, ok everything work fine, but for some reason after I program the keys the game screen stop to close, if I press the X the screen not close , sometimes it close but after I press the X several times
The inssue
import pygame
from Obj import Obj
from Spritesheet import Spritesheet
class Draw:
def __init__(self):
pygame.mixer.init()
self.up_sound = pygame.mixer.Sound('/home/julio/PycharmProjects/Test/Assets/Sounds/a.ogg')
self.down_sound = pygame.mixer.Sound('/home/julio/PycharmProjects/Test/Assets/Sounds/o.ogg')
self.right_sound = pygame.mixer.Sound('/home/julio/PycharmProjects/Test/Assets/Sounds/i -.ogg')
self.left_sound = pygame.mixer.Sound('/home/julio/PycharmProjects/Test/Assets/Sounds/u.ogg')
self.all_sprites = pygame.sprite.Group()
self.my_sprite = Spritesheet('/home/julio/PycharmProjects/Test/Assets/sprites1.png')
self.up = False
self.down = False
self.left = False
self.right = False
self.idle = False
self.go = True
self.bg = Obj('/home/julio/PycharmProjects/Test/Assets/bg.png', 0, 0, self.all_sprites)
self.sprite1_1 = self.my_sprite.get_sprite(0, 54, 405, 400)
self.sprite1 = pygame.transform.scale(self.sprite1_1, (355, 358))
self.sprite2_2 = self.my_sprite.get_sprite(0, 2134, 405, 408) # 405, 408
self.sprite2 = pygame.transform.scale(self.sprite2_2, (355, 358))
self.sprite3_3 = self.my_sprite.get_sprite(4065, 2118, 405, 408)
self.sprite3 = pygame.transform.scale(self.sprite3_3, (355, 358))
self.sprite4_4 = self.my_sprite.get_sprite(0, 3159, 405, 408)
self.sprite4 = pygame.transform.scale(self.sprite4_4, (355, 358))
self.sprite5_5 = self.my_sprite.get_sprite(9, 2654, 405, 408)
self.sprite5 = pygame.transform.scale(self.sprite5_5, (355, 358))
self.x = 100
self.y = 100
self.tick = 0
def ticks(self):
self.tick += 1
if self.tick == 60:
self.tick = 0
self.go = True
def prit(self, janela):
self.all_sprites.draw(janela)
def move(self):
for evento in pygame.event.get():
if evento.type == pygame.KEYDOWN:
if evento.key == pygame.K_UP:
self.up = True
self.down = False
self.left = False
self.right = False
self.up_sound.play()
if evento.key == pygame.K_DOWN:
self.down = True
self.left = False
self.right = False
self.up = False
self.down_sound.play()
if evento.key == pygame.K_LEFT:
self.up = False
self.down = False
self.left = True
self.right = False
self.left_sound.play()
if evento.key == pygame.K_RIGHT:
self.up = False
self.down = False
self.left = False
self.right = True
self.right_sound.play()
if evento.type == pygame.KEYUP:
if evento.key == pygame.K_DOWN:
self.down = False
if evento.key == pygame.K_UP:
self.up = False
if evento.key == pygame.K_LEFT:
self.left = False
if evento.key == pygame.K_RIGHT:
self.right = False
def chek(self):
if not self.up and not self.down and not self.left and not self.right:
self.idle = True
else:
self.idle = False
def draw(self):
self.all_sprites.update()
self.move()
self.chek()
Main Code
import pygame
from Draw import Draw
class Main:
def __init__(self):
pygame.init()
self.janela = pygame.display.set_mode([600, 600])
pygame.display.set_caption('Test')
self.loop = True
self.Draw = Draw()
self.fps = pygame.time.Clock()
def event(self):
for event in self.Draw.event_list:
if event.type == pygame.QUIT:
print('Quit')
self.loop = False
def draw(self):
self.Draw.prit(self.janela)
self.Draw.draw()
if self.Draw.down:
self.janela.blit(self.Draw.sprite3, (self.Draw.x, self.Draw.y))
if self.Draw.right:
self.janela.blit(self.Draw.sprite4, (self.Draw.x, self.Draw.y))
if self.Draw.left:
self.janela.blit(self.Draw.sprite5, (self.Draw.x, self.Draw.y))
if self.Draw.up:
self.janela.blit(self.Draw.sprite2, (self.Draw.x, self.Draw.y))
if self.Draw.idle:
self.janela.blit(self.Draw.sprite1, (self.Draw.x, self.Draw.y))
def update(self):
while self.loop:
self.event()
self.draw()
self.fps.tick(60)
# print(self.fps)
pygame.display.update()
pass
Main().update()