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

[Sugestão] Resolução ao estilo "Pong"

Olá pessoal!

Segue solução no p5.js, utilizando a function draw. Acredito que esta solução utilize mais espaço de memória...

//variáveis
const idadeStefany = 21;
const idadesAmigos = [idadeStefany, 20, 23, 18, 7];
//novas listas para guardar as idades
let idadesAmigos1Ano = [];
let idadesAmigos5Anos = [];

//nota: não haveria necessidade de criar uma nova lista para idades daqui a 5 anos. Foi apenas para evitar o loop da função draw

function setup() {
  createCanvas(400, 400);
}
function draw(){
  background(0);
  calculaProximaIdade(idadeStefany);
  calculaProximasIdades(idadesAmigos);
  calculaIdadesDaqui5Anos(idadesAmigos);
}

function calculaProximaIdade(idade) {
    idade += 1;
    fill(255);
    textSize(16);
    text("Próxima idade Stefany:", 10,20);
    text(idade, 10, 40);
}

function calculaProximasIdades(idades) {
    for (let i = 0; i < idadesAmigos.length; i += 1) {
      idadesAmigos1Ano[i] = idades[i] + 1;
    }
    fill(255);
    textSize(16);
    text("Nossas idades daqui 1 ano:", 10,60);
    text(idadesAmigos1Ano, 10, 80);
}

function calculaIdadesDaqui5Anos(idades) {
     for (let i = 0; i < idadesAmigos.length; i += 1) {
        idadesAmigos5Anos[i] = idades[i] + 5;
    }
    fill(255);
    textSize(16);
    text("Nossas idades daqui 5 ano:", 10,100);
    text(idadesAmigos5Anos, 10, 120);
}

2 respostas

Oi, Franklin, tudo bem?

Desculpe a demora em te responder!

Muito obrigado por compartilhar sua solução aqui na comunidade do fórum, sempre é importante trocar conhecimentos e experiências para aprimorar nossos projetos e habilidades.

Em relação à sua solução, de fato, ela funciona utilizando a função draw do p5.js, o que pode consumir mais recursos de memória em comparação com uma solução que não utilize esta função. No entanto, é importante lembrar que o consumo de memória depende também do tamanho dos dados que estão sendo manipulados e da quantidade de operações que estão sendo realizadas.

Outra alternativa, seria usar a propriedade array.map() que irá criar uma cópia da lista no interior da função,fazendo com que não seja necessário criar outras variáveis contendo listas no escopo global do código, e apresentar os resultados diretamente no console do p5, removendo a função draw, para minimizar o consumo de memória.

Podermos usar a propriedade array.map() no interior da função por meio do seguinte comando:

 let idadesValue = idades.map(x => x);

Podemos ler esse comando da seguinte maneira: a lista idades, composta pelas idades da Stefany e dos seus amigos, vai receber através do ponto uma propriedade de nome mapque tem como parâmetro o valor identidade (x => x). O valor "x" representa cada um dos elementos da lista e a seta, que pode ser aplicada no editor de código - fonte como o sinal de igual (=) seguido do sinal de maior (>) indica que cada valor da lista será espelhado nele mesmo, ou seja, a partir da lista será feita uma cópia da lista no interior da função.

Desse modo, conseguimos obter os valores esperados para cada uma das funções.

O código completo para conseguir realizar a solução do problema no código da Stefany está abaixo:

const idadeStefany = 21;
const idadesAmigos = [idadeStefany, 20, 23, 18, 7];

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

function calculaProximaIdade(idade) {
    idade += 1;
    console.log("Próxima idade Stefany:" + idade);
}

function calculaProximasIdades(idades) {
    let idadesValue = idades.map(x => x);
    for (let i = 0; i < idadesValue.length; i += 1) {
      idadesValue[i] += 1;
    }
    console.log("Nossas idades daqui 1 ano:" +idadesValue)
}

function calculaIdadesDaqui5Anos(idades) {
    let idadesValue = idades.map(x => x);
    for (let i = 0; i < idadesValue.length; i += 1) {
      idadesValue[i] += 5;
    }
    console.log("Nossas idades daqui 5 ano:" + idadesValue)
}

  calculaProximaIdade(idadeStefany);
  calculaProximasIdades(idadesAmigos);
  calculaIdadesDaqui5Anos(idadesAmigos);

Caso queira se aprofundar mais no uso da propriedade .map deixo a documentação abaixo:

Espero ter ajudado. Caso tenha dúvidas, estarei à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!
solução!

Rodrigo, boa tarde! Muito obrigado pelo retorno. Adorei a solução proposta por ti. Vou pesquisar mais sobre o mapeamento.

Showwwww!!!