Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

93
Visualizações
How to place the circle in random positions continuously?

How to place the circle in random positions continuously ??

I want to place this circle in random positions like jumping from one random position to another and so on... Please Answer How to do that ??

let canvas = document.getElementById("canvas");
    let context = canvas.getContext("2d");
    // for canvas size
    var window_width = window.innerWidth;
    var window_height = window.innerHeight;
    
    canvas.width = window_width;
    canvas.height = window_height;
    let hit_counter=0;
    function randomIntFromInterval(min, max) { // min and max included 
      return Math.floor(Math.random() * (max - min + 1) + min)
    }
    
    class Circle {
      constructor(xpos, ypos, radius, color, text) {
        this.position_x = xpos;
        this.position_y = ypos;
        this.radius = radius;
        this.text = text;
        this.color = color;
      }
      
      // creating circle
      draw(context) {
        context.beginPath();
        context.strokeStyle = this.color;
        context.fillText(this.text, this.position_x, this.position_y);
        context.textAlign = "center";
        context.textBaseline = "middle"
        context.font = "20px Arial";
        context.lineWidth = 5;
        context.arc(this.position_x, this.position_y, this.radius, 0, Math.PI * 2);
        context.stroke();
        context.closePath();
      }
      
      update() {
        if(hit_counter%70 == 0){
          this.text =Math.floor((randomIntFromInterval(1, 20)));
          hit_counter = 1;
      }
      hit_counter++;
        context.clearRect(0, 0, window_width, window_height)
        this.draw(context);
    
        if ((this.position_x + this.radius) > window_width) {
          this.dx = -this.dx;
          
        }
    
        if ((this.position_x - this.radius) < 0) {
          this.dx = -this.dx;
          
        }
    
        if ((this.position_y - this.radius) < 0) {
          this.dy = -this.dy;
          
        }
    
        if ((this.position_y + this.radius) > window_height) {
          this.dy = -this.dy;
          
        }
    
        this.position_x += this.dx;
        this.position_y += this.dy;
      }
    }
      
    let my_circle = new Circle(100, 100, 50, 'Black', hit_counter);
    
    
      my_circle.update();
 <canvas id="canvas"></canvas>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You can use setInterval to call a function after a delayed amount of time.

Based on your code snippet, I would recommend using setInterval to construct and then destruct a circle in a new position:

// Circle Definition
...

const WAIT_TIME_IN_MS = 3000;
let circle = new Circle(x, y, 50, 'Black', hit_counter); // Assuming you want one circle

const interval = setInterval(() => {
    circle.update();
}, WAIT_TIME_IN_MS);

Simply update Circle.position_x and Circle.position_y from within Circle.update before calling Circle.draw:

...

    update() {
        ...
        context.clearRect(0, 0, window_width, window_height);
        this.position_x = randomIntFromInterval(window_width, window_height);
        this.position_y = randomIntFromInterval(window_width, window_height);
        ...
    }
...

When you want to stop this interval, you can call clearInterval(interval).

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda