Olá João, tudo bem com você ?
Gostaria de pedir desculpas pela demora em obter um retorno!
Para solucionar os tópicos mencionados acima serão necessárias algumas mudanças em seu programa.
Ao fazer a alteração do diâmetro para 20, problemas relacionados à limites serão solucionados, problemas como o adversário marcar 2 pontos, ou não somar ponto para ninguém quando a bolinha toca na raquete.
Outra alteração que pode ajudar é aumentar o valor 23 que está dentro da function consertaBug
, esse valor pode ser mudado para um maior (exemplo: 26, 30, 34, 38, você decide, só não deve ser alto demais, pois irá gerar outros bug´s), para que evite problemas como a bolinha bater na parede, bater na raquete e fazer pontos infinitamente, dessa forma:
if (xBolinha - raio < 0) {
xBolinha = 30;
}
Outra alteração que pode ser feita para otimizar seu código é a adição de uma condição dentro de um if
que se aplica para a outra raquete, segue função completa abaixo:
function consertaBug() {
if (xBolinha - raio < 0) {
xBolinha = 23;
}
if (xBolinha + raio > width) {
xBolinha = 585
}
}
Nessa função o segundo if está analisando se a posição x da bolinha somada ao raio dela é maior que a largura do canvas (xBolinha + raio > width
), e caso isso for verdade, ele mudará a posição da bolinha para 585 (xBolinha = 585
).
Agora sobre a dúvida que você levantou acima, na verdade é possível sim colocar várias funcionalidades dentro de uma única função, contudo para que seu código fique mais organizado e legível, é recomendado a criação de novas funções que irão comportar novos papéis dentro de seu projeto, isso é feito justamente para que a função não perca seu objetivo inicial e possa ser reutilizada outras vezes pelo programador.
Com essas alterações seu programa deverá ser otimizado de forma que nenhum dos três problemas que você mencionou em seu tópico se repita.
Vou inclusive deixar abaixo um artigo que fala sobre código limpo e que pode lhe ajudar a entender melhor sobre esses pontos.
Era isso, caso tenha dúvidas recorra ao fórum!
Um abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solução! ✓.