5-Protagonista

 

Flujo del programa

  1. Al cargar la página, se ejecuta inicializa().
  2. inicializa():
    • Configura el lienzo.
    • Carga la imagen del protagonista.
    • Establece un bucle con setInterval que llama a principal() 50 veces por segundo.
  3. En cada llamada a principal():
    • Se limpia el canvas con borraCanvas().
    • Se dibujan y actualizan las posiciones de los personajes (per1, per2, per3).
    • Se dibuja al protagonista (prota) en su posición actual.

Resultado esperado

  • Tres cuadrados amarillos se mueven horizontalmente dentro del canvas, rebotando entre los límites izquierdo (x > 50) y derecho (x < 400).
  • Una imagen (img/mega.jpg) estática, que representa al protagonista, se dibuja en (200, 200) en cada frame.

Por ahora, el protagonista no tiene movimiento ni interacción, pero está preparado para ser extendido con lógica adicional, como teclas para moverse.





<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
   
   
   
</head>
<body onload="inicializa()">


    <canvas id="canvas" width="500" height="300" style="border:2px solid #000000">
    </canvas>


    <script>
        console.log("actor")
var canvas;
var ctx;
var FPS = 50;

var imgMega;

function inicializa() {
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");

    imgMega = new Image();
    imgMega.src = 'img/mega.jpg';

    imgMega.width=100;
    imgMega.height=100;
 
    setInterval(function () {
      principal();
    }, 1000 / FPS); // Corrección aquí
  }

var protagonista = function (x,y){
  this.x = x;
  this.y = y;
  this.velocidad = 3;

  this.dibuja = function (){
    ctx.drawImage(imgMega, this.x, this.y);
  }
}

var personaje = function (x, y) {
  this.x = x;
  this.y = y;
  this.derecha = true;

  this.dibuja = function () {
    ctx.fillStyle = "#fff000";
    ctx.fillRect(this.x, this.y, 50, 50);
  };
 
  this.mueve = function (velocidad) {
    if (this.derecha == true) {
      if (this.x < 400) {
        this.x += velocidad;
      } else {
        this.derecha = false;
      }
    } else {
      if (this.x > 50) {
        this.x -= velocidad;
      } else {
        this.derecha = true;
      }
    }
  };
};



var per1 = new personaje(10, 50);
var per2 = new personaje(10, 120);
var per3 = new personaje(10, 230);

var prota = new protagonista(200,200);

function borraCanvas() {
  canvas.width = 500;
  canvas.height = 400;
}

function principal() {
  borraCanvas();
  per1.dibuja();
  per2.dibuja();
  per3.dibuja();

  per1.mueve(1);
  per2.mueve(3);
  per3.mueve(70);

  prota.dibuja();

 // console.log("funcion");
}

    </script>
   
</body>
</html>


Comentarios

Entradas populares de este blog

1-Teclas

2-canvas

3-1-Personajes