Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com a função movimentaRaqueteOponente

Estou com bastante dúvida em relação a essa função. Mesmo que eu mude o valor "30" para mais ou para menos, esse valor só indica onde a bolinha SEMPRE irá tocar na raquete, ou seja, se eu coloco um valor como 40 por ex, a bolinha sempre encosta na parte de baixo da raquete, se eu coloco 50, a bolinha sempre encosta abaixo da raquete, no mesmo ponto. Conforme eu diminuo o valor, a bolinha encosta mais perto do centro da raquete, conforme eu aumento o valor, a bolinha encosta mais abaixo da raquete. Isso gera o problema de que não importa o valor que eu coloque, o oponente sempre irá acertar ou errar. Não consigo mudar a expressão para que erre algumas vezes, acerte outras. Como resolvo esse problema?

2 respostas

Meu código:

//variables of Ball let xBall = 300; let yBall = 200; let diameterBall = 20; let radiusBall = diameterBall/2;

let speedXBall= 6; let speedYBall= 6;

//variables myRacquet let xMyRacquet = 5; let yMyRacquet = 150; let widthMyRacquet = 7; let heightMyRacquet = 80;

//variables oponnentRacquet let xOpponentRacquet = 588; let yOpponentRacquet = 150; let widthOpponentRacquet = 7; let heightOpponentRacquet = 80;

let speedYOpponentRacquet;

function setup() { createCanvas(600, 400);

}

function showBall() { circle(xBall,yBall,diameterBall);

}

function moveBall() { xBall = xBall + speedXBall; yBall = yBall + speedYBall; }

function verificationTouchEdge(){ if (xBall+radiusBall > width || xBall-radiusBall < 0) { speedXBall *= -1; }

if (yBall -radiusBall < 0 || yBall+radiusBall > height) { speedYBall *= -1; } }

function showRacquet(x,y){ rect( x, y, widthMyRacquet, heightMyRacquet); }

function moveMyRacquet() { if (keyIsDown(UP_ARROW)) { yMyRacquet -= 10; } if (keyIsDown(DOWN_ARROW)) { yMyRacquet += 10; } }

function collideMyRacquet () { if (xBall - radiusBall < xMyRacquet + widthMyRacquet && yBall + radiusBall > yMyRacquet && yBall - radiusBall < yMyRacquet + heightMyRacquet ) { speedXBall *= -1 } }

function moveOpponentRacquet () { speedYOpponentRacquet = yBall - yOpponentRacquet - heightOpponentRacquet / 2 - 30; yOpponentRacquet += speedYOpponentRacquet ;

}

function draw() { background(0); showBall(); moveBall(); verificationTouchEdge(); showRacquet(xMyRacquet, yMyRacquet); showRacquet(xOpponentRacquet, yOpponentRacquet); moveMyRacquet(); collideMyRacquet(); moveOpponentRacquet(); }

solução!

Oi Pamella tudo bem?

Isso é normal da programação. O do professor também está assim. O computador está no nível Perfect. Para deixar mais fácil você terá que humanizar colocando valores aleatórios para o computador errar de vez em quando. Aí vai muito da criatividade.

Espero ter ajudado!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software