Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Possibilitando o erro da raquete do oponente

Estou tentando utilizar o erro da raquete do oponente mostrado no curso, mas acontece um bug de pontos pos a bola sempre fica presa na raquete do oponente. Tentei resolver com código de outras pessoas, mas não consegui. por favor poderia olhar e ver onde esta o meu erro desde ja agradeso a ajuda.

1. //variaveis da bolinha

2. let xBolinha = 300;
3. let yBolinha = 200;
4. let diamentroB = 13;
5. let Raio = diamentroB / 2;
6. 
7. //velocidade da bolinha
8. let Velocidadexb = 6;
9. let velocidadeyb = 6;
10. 
11. //variaveis raquete obs c e comprimento e l largura
12. let xraquete = 5;
13. let yraquete = 150;
14. let craquete = 10;
15. let lraquete = 90;
16. 
17. let colidiu = false;
18. 
19. //placar
20. let meuspontos = 0;
21. let pontosoponente = 0;
22. 
23. //variaveis oponente
24. let xRoponente = 585;
25. let yRoponente = 150;
26. let velocidadeYoponente;
27. let chancedeerro = 0;
28. 
29. //sons do jogo
30. let raquetada;
31. let ponto;
32. let trilha;
33. 
34. function preload (){
35.   trilha = loadSound ("trilha.mp3");
36.   ponto = loadSound ("ponto.mp3");
37.   raquetada = loadSound ("raquetada.mp3")
38. }
39. 
40. function setup() {
41.   createCanvas(600, 400);
42.   trilha.loop();
43. }
44. 
45. function draw() {
46.   background(0);
47.   mostrabolinha ();
48.   moverbolinha ();
49.   colisaobordas ();
50.   mostraraquete (xraquete,yraquete);
51.   movimentaMinhaRaquete();
52.   colisaoMinhaRaqueteBiblioteca(xraquete,yraquete);
53.   colisaoMinhaRaqueteBiblioteca(xRoponente,yRoponente);
54.   mostraraquete ( xRoponente,yRoponente);
55.   movimentaoponente();
56.   incluirplacar ();
57.   marcarpontos ();
58.   bolinhaNaoFicaPresa();
59. }
60. 
61. function mostrabolinha (){
62.   circle(xBolinha,yBolinha,diamentroB);
63. }
64. 
65. function moverbolinha (){
66.    xBolinha += Velocidadexb;
67.  yBolinha += velocidadeyb;
68. }
69. 
70. function colisaobordas (){
71.   if (xBolinha + Raio > width|| 
72.      xBolinha - Raio < 0){
73.     Velocidadexb *= -1
74.   }
75.   if (yBolinha + Raio > height ||
76.      yBolinha -Raio < 0){
77.     velocidadeyb *= -1;
78.   }
79. }
80. 
81. function mostraraquete ( x,y){
82.   rect(x, y,craquete,lraquete)
83. }
84. 
85. function movimentaMinhaRaquete(){
86.   if (keyIsDown(87)){
87.     yraquete -= 10;
88.   }
89.   if (keyIsDown(83)){
90.      yraquete += 10;
91.   }
92. }
93. function colisaoMinhaRaqueteBiblioteca(x,y){
94.   colidiu = collideRectCircle(x,y,craquete,lraquete,xBolinha,yBolinha,Raio);
95.    if (colidiu) {
96.         Velocidadexb *= -1;
97.      raquetada.play();
98.     }
99. }
100. function movimentaoponente(){
101.   velocidadeYoponente = yBolinha - yRoponente - craquete / 2 - 30;
102.   yRoponente += velocidadeYoponente + chancedeerro
103.   calculaChanceDeErrar()
104. }
105. 
106. function calculaChanceDeErrar(){
107.   if (pontosoponente >= meuspontos){
108.     chancedeerro +=1;
109.   }
110.   if (chancedeerro >= 39){
111.      chancedeerro = 40;
112.   }else{
113.     chancedeerro -= 1;
114.     if (chancedeerro <= 35){
115.       chancedeerro = 35;
116.     }
117.   }
118. }
119. 
120. 
121. function bolinhaNaoFicaPresa(){
122.     if (xBolinha - Raio < 0){
123.     xBolinha = 23
124.     }
125. }
126. 
127. 
128. function incluirplacar (){
129.   stroke (255)
130.   textAlign(CENTER);
131.   textSize(17);
132.   fill (color(64,224,208));
133.   rect (150,10,40,20);
134.   fill (255);
135.   text (meuspontos,170,26);
136.   fill (color(64,224,208));
137.   rect (450,10,40,20);
138.   fill(255);
139.   text (pontosoponente,470,26);
140. }
141. 
142. function marcarpontos (){
143.   if (xBolinha > 590){
144.     meuspontos += 1;
145.     ponto.play();
146.   }
147.   if (xBolinha < 10){
148.     pontosoponente += 1;
149.     ponto.play();
150.   }
151. }
1 resposta
solução!

Olá, Manoel! Tudo bem?

Testei seu código e fiz a verificação para o outro lado da tela, confira:

 //variaveis da bolinha

 let xBolinha = 300;
 let yBolinha = 200;
 let diamentroB = 13;
 let Raio = diamentroB / 2;

 //velocidade da bolinha
 let Velocidadexb = 6;
 let velocidadeyb = 6;

 //variaveis raquete obs c e comprimento e l largura
 let xraquete = 5;
 let yraquete = 150;
 let craquete = 10;
 let lraquete = 90;

 let colidiu = false;

 //placar
let meuspontos = 0;
let pontosoponente = 0;
//variaveis oponente
 let xRoponente = 585;
 let yRoponente = 150;
 let velocidadeYoponente;
 let chancedeerro = 0;

//sons do jogo
 let raquetada;
 let ponto;
 let trilha;

 function preload (){
   trilha = loadSound ("trilha.mp3");
   ponto = loadSound ("ponto.mp3");
   raquetada = loadSound ("raquetada.mp3")
 }

 function setup() {
   createCanvas(600, 400);
  trilha.loop();
 }

 function draw() {
   background(0);
   mostrabolinha ();
   moverbolinha ();
   colisaobordas ();
   mostraraquete (xraquete,yraquete);
   movimentaMinhaRaquete();
   colisaoMinhaRaqueteBiblioteca(xraquete,yraquete);
   colisaoMinhaRaqueteBiblioteca(xRoponente,yRoponente);
   bolinhaNaoFicaPresa();
   mostraraquete (xRoponente,yRoponente);
   movimentaoponente();
   incluirplacar ();
   marcarpontos ();

 }

 function mostrabolinha (){
   circle(xBolinha,yBolinha,diamentroB);
 }

 function moverbolinha (){
    xBolinha += Velocidadexb;
  yBolinha += velocidadeyb;
 }

 function colisaobordas (){
   if (xBolinha + Raio > width|| 
      xBolinha - Raio < 0){
     Velocidadexb *= -1
   }
   if (yBolinha + Raio > height ||
      yBolinha -Raio < 0){
     velocidadeyb *= -1;
   }
 }

 function mostraraquete ( x,y){
   rect(x, y,craquete,lraquete)
 }

 function movimentaMinhaRaquete(){
   if (keyIsDown(87)){
     yraquete -= 10;
   }
   if (keyIsDown(83)){
      yraquete += 10;
   }
 }
 function colisaoMinhaRaqueteBiblioteca(x,y){
      colidiu = collideRectCircle(x,y,craquete,lraquete,xBolinha,yBolinha,Raio);
       if (colidiu) {
            Velocidadexb *= -1;
         raquetada.play();
        }
    }   function movimentaoponente(){     velocidadeYoponente = yBolinha - yRoponente - craquete / 2 - 30;     yRoponente += velocidadeYoponente + chancedeerro
     calculaChanceDeErrar()
   }

   function calculaChanceDeErrar(){
     if (pontosoponente >= meuspontos){
       chancedeerro +=1;
   }
   if (chancedeerro >= 39){
      chancedeerro = 40;
   }else{
     chancedeerro -= 1;
     if (chancedeerro <= 35){
       chancedeerro = 35;
     }
   }
 }


 function bolinhaNaoFicaPresa(){
     if (xBolinha - Raio < 0 ){
     xBolinha = 23
     }
     if (xBolinha + Raio > 600){
       xBolinha = 580
     }
 }


 function incluirplacar (){
   stroke (255)
   textAlign(CENTER);
   textSize(17);
   fill (color(64,224,208));
   rect (150,10,40,20);
   fill (255);
   text (meuspontos,170,26);
   fill (color(64,224,208));
   rect (450,10,40,20);
   fill(255);
   text (pontosoponente,470,26);
 }

 function marcarpontos (){
   if (xBolinha > 590){
     meuspontos += 1;
     ponto.play();
   }
   if (xBolinha < 10){
     pontosoponente += 1;
     ponto.play();
   }
 }

Bons estudos!