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

Feito

Feito.

É mais prudente nessa situação eu criar uma função do objeto ou ser, e dentro dela definir suas propriedades e interações físicas, ou crio as interações físicas na função do ambiente?

Quando há interação de dois objetos, coloco a função de interação no objeto1, no objeto2, nos 2 ou no ambiente?

set bolinha = ...;

function setup(){ criarAmbiente(); }

function ambiente: if(...){ bolinhaRepele }

function bolinha(){ propriedadesDaBolinha}

Ou

set bolinha = ...;

function setup(){ criarAmbiente(); }

function ambiente{ propriedadesDoAmbiente }

function bolinha(){ propriedadesDaBolinha if (...) {bolinhaReage}}

//PROPRIEDADE DA QUADRA
let xTamanho = 600
let yTamanho = 400

//PROPRIEDADES DA RAQUETE
let xRaquete = 5;
let alturaRaquete = 70;
let yRaquete = 200 - alturaRaquete/2;
let larguraRaquete = 10;
let arestasRaquete = 45;
let velocidadeRaquete = 10;
//let xRaqueteMaisLarguraRaquete = xRaquete + larguraRaquete; 
//let yRaqueteMaisAlturaRaquete = yRaquete + alturaRaquete;

//PROPRIEDADES DA RAQUETE INIMIGA
let xRaqueteInimiga = 600 - 5 - larguraRaquete;
let yRaqueteInimiga = 200 - alturaRaquete/2;

//PROPRIEDADES DA BOLINHA
let xBolinha = 300;
let yBolinha = 200;
let diametroBolinha = 15;
let raioBolinha = diametroBolinha / 2;
//let xBolinhaMenosRaioBolinha = xBolinha - raioBolinha;
//let yBolinhaMenosRaioBolinha = yBolinha - raioBolinha;
//let yBolinhaMaisRaioBolinha = yBolinha + raioBolinha;

//AÇOES DA BOLINHA
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//PROPRIEDADES DO PLACAR
let meusPontos = 0;
let pontosOponente = 0;

let colisao = false;

function setup() {
  createCanvas(xTamanho, yTamanho);
}

function draw() {
  background(50);
}

function draw(){
  background(0);
  propriedadesDaBolinha();
  moverBolinha();
  colisaoDaBolinha();
  mostrarRaquete(xRaquete, yRaquete);
  mostrarRaquete(xRaqueteInimiga, yRaqueteInimiga);
  movimentoRaquete();
  movimentoRaqueteInimiga();
  //verificaColisaoRaquete();
  verificaColisaoBolinhaBiblioteca(xRaquete, yRaquete);
  verificaColisaoBolinhaBiblioteca(xRaqueteInimiga, yRaqueteInimiga)
  incluiPlacar();
  marcaPonto();
}

function propriedadesDaBolinha(){  
  circle(xBolinha, yBolinha, diametroBolinha);
}

function moverBolinha(){
  xBolinha += velocidadeXBolinha
  yBolinha += velocidadeYBolinha
}

function colisaoDaBolinha(){
  if (xBolinha + raioBolinha > width||
     xBolinha - raioBolinha < 0){
    velocidadeXBolinha *= -1
  }

  if (yBolinha + raioBolinha > height || 
     yBolinha - raioBolinha < 0){
    velocidadeYBolinha *= -1
  }
}

function mostrarRaquete(x, y){
  rect(x , y, larguraRaquete, alturaRaquete, arestasRaquete)
}  

function movimentoRaquete(){
  if (keyIsDown(UP_ARROW)){
    yRaquete -= velocidadeRaquete;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaquete += velocidadeRaquete; 
  }
}

function movimentoRaqueteInimiga(){
  yRaqueteInimiga = yBolinha
}

function verificaColisaoRaquete(){
  if (xBolinha - raioBolinha < xRaquete + larguraRaquete
    && yBolinha - raioBolinha < yRaquete + alturaRaquete
    && yBolinha + raioBolinha > yRaquete) {
    velocidadeXBolinha *= -1;
  }
}

function verificaColisaoBolinhaBiblioteca(x, y){
  colisao = 
    collideRectCircle(x, y, larguraRaquete, alturaRaquete, xBolinha, yBolinha, raioBolinha);
  if (colisao){
    velocidadeXBolinha *= -1;
  }
}

function incluiPlacar(){
  fill(255)
  text(meusPontos, xTamanho/2-30, 30)
  text(pontosOponente, xTamanho/2+30, 30)
}
function marcaPonto(){
  if (xBolinha < 10){
    pontosOponente += 1
  }
  if (xBolinha > xTamanho - 10){
    meusPontos += 1
  }
}
1 resposta
solução!

Olá Maro, como vai?

A melhor forma é você criar função do objeto e dentro dela definir suas propriedades e interações, pois além de você está criando um código mais limpo e legível ,esta praticando as boas praticas da programação.

Abraços e ótimos estudos! :)

Se está resposta te ajudou, por favor, marca como solucionado ✓. Continúa com seus estudos :)

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