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á, 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!
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()
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!