Olá, estava fazendo as aulas de python onde é recriado o jogo do pacman, porém na parte de CAPTURAR EVENTOS o código da erro, e eu não tenho ideia do que se pode significar isso exatamente, o código está dentro de um laço 'WHILE'

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, estava fazendo as aulas de python onde é recriado o jogo do pacman, porém na parte de CAPTURAR EVENTOS o código da erro, e eu não tenho ideia do que se pode significar isso exatamente, o código está dentro de um laço 'WHILE'

Olá Amanda, tudo bem com você?
Com base apenas na analise da imagem postada, é incerto dizer em qual ou quais pontos do código será necessário realizar correções.
Peço que o compartilhe em formato textual nessa postagem o código completo que está sendo executado, para ser efetuado os devidos testes, assim, poderei te auxiliar assertivamente.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Compreendi, agradeço, segue o código:
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600), 0)
AMARELO = (255, 255, 0)
PRETO = (0, 0, 0)
VELOCIDADE = 1
class PACMAN:
def __init__(self):
self.linha = 1
self.coluna = 1
self.centro_x = 400
self.centro_y = 300
self.tamanho = 800 // 30
self.vel_x = 0
self.vel_y = 0
self.raio = self.tamanho // 2
def calcular_regras(self):
self.coluna = self.coluna + self.vel_x #será desenhado um pixel a direita
self.linha = self.linha + self.vel_y
self.centro_x = int(self.coluna * self.tamanho + self.raio)
self.centro_y = int(self.linha * self.tamanho + self.raio)
comentário > '''if self.centro_x + self.raio > 800:
self.vel_x = -1
if self.centro_x - self.raio < 0:
self.vel_x = 1
if self.centro_y + self.raio > 600:
self.vel_y = -1
if self.centro_y - self.raio < 0:
self.vel_y = 1'''
def processar_event(self, ev):
for e in ev:
if e.type == pygame.KEYDOWN:
if e.key == pygame.K_RIGHT:
self.vel_x = VELOCIDADE
elif e.key == pygame.K_LEFT:
self.vel_x = -VELOCIDADE
elif e.key == pygame.K_UP:
self.vel_y = -VELOCIDADE
elif e.key == pygame.K_DOWN:
self.vel_y = VELOCIDADE
elif e.type == pygame.KEYUP:
if e.key == pygame.K_RIGHT:
self.vel_x = 0
elif e.key == pygame.K_LEFT:
self.vel_x = 0
elif e.key == pygame.K_UP:
self.vel_y = 0
elif e.key == pygame.K_DOWN:
self.vel_y = 0
def processar_eventos_mouse(self, ev):
delay = 1000
for e in ev:
if e.type == pygame.MOUSEMOTION:
mouse_x, mouse_y = e.pos
self.coluna = (mouse_x - self.centro_x) / delay
self.linha = (mouse_y - self.centro_y) / delay
def pintar(self, tela):
#Desenhar o corpo do PACMAN
pygame.draw.circle(tela, AMARELO, (self.centro_x, self.centro_y), self.raio, 0)
#Desenho da boca do PACMAN
canto_boca = (self.centro_x, self.centro_y)
labio_superior = (self.centro_x + self.raio, self.centro_y - self.raio)
labio_infeior = (self.centro_x + self.raio, self.centro_y)
pontos = [canto_boca, labio_superior, labio_infeior]
pygame.draw.polygon(tela, PRETO, pontos, 0)
#Olho do PACMAN
olho_x = int(self.centro_x + self.raio / 3)
olho_y = int(self.centro_y - self.raio * 0.70)
olho_raio = int(self.raio / 10)
pygame.draw.circle(tela, PRETO, (olho_x, olho_y), olho_raio, 0)
if __name__ == '__main__':
pacman= PACMAN()
while True:
#1º Calculas as regras
pacman.calcular_regras()
#2º Pintar a tela
screen.fill((PRETO))
pacman.pintar(screen)
pygame.display.update()
pygame.time.delay(100)
#3º Captura os eventos.
ev = pygame.event.get()
for e in ev:
if e.type == pygame.QUIT:
exit()
PACMAN.processar_event(ev)
Olá Amanda, tudo bem com você?
Agradeço o retorno. O erro apresentado TypeError: PACMAN.processar_event() missing 1 required positional argument: 'eventos', está sendo levantado devido à chamada do método processar_event está sendo chamado com a palavra PACMAN (maiúsculo) se referindo a classe e não em pacman (minúsculo) que se refere ao objeto.
Peço que na última linha do código troque a chamada do método processar_event, deixando como apresentada abaixo:
pacman.processar_event(ev)Lembre-se que, antes de realizar uma nova execução do código, será necessário remover os comentários efetuados no método calcular_regras.
Código completo com as mudanças aplicadas
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600), 0)
AMARELO = (255, 255, 0)
PRETO = (0, 0, 0)
VELOCIDADE = 1
class PACMAN:
def __init__(self):
self.linha = 1
self.coluna = 1
self.centro_x = 400
self.centro_y = 300
self.tamanho = 800 // 30
self.vel_x = 0
self.vel_y = 0
self.raio = self.tamanho // 2
def calcular_regras(self):
self.coluna = self.coluna + self.vel_x #será desenhado um pixel a direita
self.linha = self.linha + self.vel_y
self.centro_x = int(self.coluna * self.tamanho + self.raio)
self.centro_y = int(self.linha * self.tamanho + self.raio)
if self.centro_x + self.raio > 800:
self.vel_x = -1
if self.centro_x - self.raio < 0:
self.vel_x = 1
if self.centro_y + self.raio > 600:
self.vel_y = -1
if self.centro_y - self.raio < 0:
self.vel_y = 1
def processar_event(self, eventos):
for e in ev:
if e.type == pygame.KEYDOWN:
if e.key == pygame.K_RIGHT:
self.vel_x = VELOCIDADE
elif e.key == pygame.K_LEFT:
self.vel_x = -VELOCIDADE
elif e.key == pygame.K_UP:
self.vel_y = -VELOCIDADE
elif e.key == pygame.K_DOWN:
self.vel_y = VELOCIDADE
elif e.type == pygame.KEYUP:
if e.key == pygame.K_RIGHT:
self.vel_x = 0
elif e.key == pygame.K_LEFT:
self.vel_x = 0
elif e.key == pygame.K_UP:
self.vel_y = 0
elif e.key == pygame.K_DOWN:
self.vel_y = 0
def processar_eventos_mouse(self, ev):
delay = 1000
for e in ev:
if e.type == pygame.MOUSEMOTION:
mouse_x, mouse_y = e.pos
self.coluna = (mouse_x - self.centro_x) / delay
self.linha = (mouse_y - self.centro_y) / delay
def pintar(self, tela):
#Desenhar o corpo do PACMAN
pygame.draw.circle(tela, AMARELO, (self.centro_x, self.centro_y), self.raio, 0)
#Desenho da boca do PACMAN
canto_boca = (self.centro_x, self.centro_y)
labio_superior = (self.centro_x + self.raio, self.centro_y - self.raio)
labio_infeior = (self.centro_x + self.raio, self.centro_y)
pontos = [canto_boca, labio_superior, labio_infeior]
pygame.draw.polygon(tela, PRETO, pontos, 0)
#Olho do PACMAN
olho_x = int(self.centro_x + self.raio / 3)
olho_y = int(self.centro_y - self.raio * 0.70)
olho_raio = int(self.raio / 10)
pygame.draw.circle(tela, PRETO, (olho_x, olho_y), olho_raio, 0)
if __name__ == '__main__':
pacman = PACMAN()
while True:
#1º Calculas as regras
pacman.calcular_regras()
#2º Pintar a tela
screen.fill((PRETO))
pacman.pintar(screen)
pygame.display.update()
pygame.time.delay(100)
#3º Captura os eventos.
ev = pygame.event.get()
for e in ev:
if e.type == pygame.QUIT:
exit()
pacman.processar_event(ev)Peço que verifique os pontos listados acima, salve o arquivo após a mudança e execute-o.
Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Abraços e bons estudos!