Olá, boa noite, estou com problema na Primeira movimentação, quanto a bolinha sai da posição 10 e volta pois o comando está para ser -= 1 quando o x > 640, assim que volta quando era para chocar na posição x < 0, acontece um bug e fica a listra amarela na tela, e não acontece colisão, nem passa direto depois do x < 0!
Alura Scuba TeamTime Alura | Apoio Educacional no Fórum
Olá Weber, tudo bem com você?
Com base apenas na descrição da execução do código, é 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.
Olá felippe, tudo certo, meu código de execução na hora do bug é:
import pygame
AMARELO = (255, 255, 0)
PRETO = (0, 0, 0)
VELOCIDADE = 1
pygame.init()
tela = pygame.display.set_mode((640, 480), 0)
x = 10
vel_x = VELOCIDADE
while True:
# Calcula as regras
x += vel_x
if x > 640:
vel_x = -VELOCIDADE
if x < 0:
vel_x = VELOCIDADE
# Pinta
tela.fill(PRETO)
pygame.draw.circle(tela, AMARELO, (int(x), 240), 30, 0)
pygame.display.update()
#Eventos
for e in pygame.event.get():
if e.type == pygame.QUIT:
exit()
Alura Scuba TeamTime Alura | Apoio Educacional no Fórum
Oii Weber.
Agradeço o retorno enviando o código que você esta executando. Analisando e realizando testes com o código enviado, o bug descrito não foi apresentado durante as execuções e testes do código. No código enviado, ao iniciar o jogo, a bolinha sai da esquerda, toca a borda direita e retorna para a esquerda até sair da tela.
O comportamento que descrevi está relacionado a um erro de indentação (espaço) no código. A estrutura condicional que verifica se a bola tocou a borda esquerda, if x < 0: está dentro da estrutura condicional que verifica se a bola tocou a borda direita, if x > 640:, dessa forma não ocorre a verificação se a bola tocou a borda esquerda, fazendo com que ela permaneça em movimento contínuo para a esquerda.
Peço que realize a correção da indentação do código e realize uma nova tentativa de execução, basta seguir os passos apresentados abaixo.
No laço while selecione da linha if x < 0: a linha vel_x = VELOCIDADE e pressione uma vez + . O laço while deverá ficar como apresentado abaixo:
while True:
# Calcula as regras
x += vel_x
if x > 640:
vel_x = -VELOCIDADE
if x < 0:
vel_x = VELOCIDADE
# Pinta
tela.fill(PRETO)
pygame.draw.circle(tela, AMARELO, (int(x), 240), 30, 0)
pygame.display.update()
#Eventos
for e in pygame.event.get():
if e.type == pygame.QUIT:
exit()
Salve o arquivo e realize uma nova execução do código, verifique o comportamento apresentado pela bolinha
Recomendo que continuidade na implementação do código, seguindo a aula: Primeira movimentação a partir do minuto 6:50
No GIF abaixo é apresentado a execução do código
Peço que verifique o ponto apresentado acima e realize uma nova execução do código.
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!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!