Fala Galera,
Fiz um jogo onde eu criei uma função que gera um número aleatório que determina se o meu oponente irá acertar ou não.
Esse número é gerado toda vez que a bolinha toda na minha raquete ou na borda do meu lado do jogo.
E esse valor eu coloquei dentro da função do movimento da raquete do oponente.
function calculaChanceErro(){
chanceErro = Math.round(Math.random()*140);
}
function movimentaOponenteRaquete2(){
yOponenteRaquete = yBolinha + alturaRaquete/4 - chanceErro;
}
Esse é a parte do código que gera o número aleatório que irá determinar o erro do oponente.
Quem determinar o nível de precisão do oponente é a variável "alturaRaquete" + o divisor dele e o valor que multiplica o Randon.
Quando maior o divisor da variável alturaRaquete e menor é o multiplicador do Random, maior é a precisão.
Precisão fraca: random()180 / alturaRaquete/2 Precisão menor: random()140 / alturaRaquete/3 Precisão boa: random()140 / alturaRaquete/4 Precisão mais forte: random()90 / alturaRaquete/4
//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 18;
let raio = diametro / 2;
//sons do jogo
let raquetada;
let ponto;
let trilha
//variáveis da velocidade de bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
//variáveis das raquetes
let comprimentoRaquete = 10;
let alturaRaquete = 90;
//variaveis minha raquete
let xMinhaRaquete = 5;
let yMinhaRaquete = 150 ;
//variaveis raquete oponente
let xOponenteRaquete = 585;
let yOponenteRaquete = 150;
let velocidadeYOponente;
let chanceErro = 75;
let meuPlacar = 0;
let oponentePlacar = 0;
function setup() {
createCanvas(600, 400);
trilha.loop();
}
let colidiu = false;
function draw() {
background(0);
mostraBolinha ();
movimentaBolinha ();
verificaColisaoBorda ();
pontuacao();
placar();
desenhaRaquete(xMinhaRaquete, yMinhaRaquete);
movimentaMinhaRaquete();
colisaoMinhaRaqueteBiblioteca();
desenhaRaquete(xOponenteRaquete, yOponenteRaquete);
movimentaOponenteRaquete();
colisaoOponenteRaqueteBiblioteca();
//movimentaOponenteRaquete();
}
function preload(){
raquetada = loadSound("raquetada.mp3");
ponto = loadSound("ponto.mp3");
trilha = loadSound("trilha.mp3");
}
function mostraBolinha (){
circle(xBolinha, yBolinha, diametro);
}
function desenhaRaquete(x, y){
rect(x, y, comprimentoRaquete, alturaRaquete)
}
function movimentaBolinha (){
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
function movimentaMinhaRaquete (){
if (keyIsDown(UP_ARROW)) {
yMinhaRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
yMinhaRaquete += 10;
}
}
function calculaChanceErro(){
chanceErro = Math.round(Math.random()*140);
}
function movimentaOponenteRaquete(){
yOponenteRaquete = yBolinha + alturaRaquete/4 - chanceErro;
}
function verificaColisaoBorda (){
if (xBolinha+raio > width){
velocidadeXBolinha *= -1;
}
if (xBolinha-raio < 0){
velocidadeXBolinha *= -1;
calculaChanceErro();
}
if (yBolinha+raio > height ||
yBolinha-raio < 0){
velocidadeYBolinha *= -1;
}
}
function colisaoMinhaRaqueteBiblioteca() {
colidiu =
collideRectCircle(xMinhaRaquete, yMinhaRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
if (colidiu) {
velocidadeXBolinha *= -1;
raquetada.play();
calculaChanceErro(); ///////////////////
}
}
function colisaoOponenteRaqueteBiblioteca() {
colidiu =
collideRectCircle(xOponenteRaquete, yOponenteRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
if (colidiu) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function pontuacao(){
if (xBolinha-raio < 0){
oponentePlacar += 1;
ponto.play();
}
if (xBolinha+raio > width){
meuPlacar += 1;
ponto.play();
}
}
function placar (){
textSize(20);
textAlign(CENTER);
stroke(255);
fill(255,140, 0);
rect(180,28, 45, 30);
rect(330,28, 45, 30);
fill(255);
text(meuPlacar, 202, 50);
text(oponentePlacar, 352, 50);
}