JSFiddle - React, Tailwind, and code Playground

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>Events: Task 2</title>
    <style>
      p {
        color: purple;
        margin: 0.5em 0;
      }

      * {
        box-sizing: border-box;
      }

      canvas {
        border: 1px solid black;
      }
    </style>
    <link rel="stylesheet" href="../styles.css" />
  </head>

  <body>

    <section class="preview">
    </section>

    <canvas width="480" height="320" tabindex="0">

    </canvas>

  </body>
  
</html>

JavaScript

const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");

function drawCircle(x, y, size) {
  ctx.fillStyle = "white";
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  ctx.beginPath();
  ctx.fillStyle = "black";
  ctx.arc(x, y, size, 0, 2 * Math.PI);
  ctx.fill();
}

let x = 50;
let y = 50;
const size = 30;

drawCircle(x, y, size);

const handleKeydown = (e) => {
  switch (e.key) {
    case "d":
      if (x >= canvas.width - 50) {
        break;
      }
      x += 1;
      drawCircle(x, y, size);
      break;
    case "a":
      if (x <= 50) {
        break;
      }
      x -= 1;
      drawCircle(x, y, size);
      break;
    case "w":
      if (y <= 50) {
        break;
      }
      y -= 1;
      drawCircle(x, y, size);
      break;
    case "s":
      if (y >= canvas.height - 50) {
        break;
      }
      y += 1;
      drawCircle(x, y, size);
      break;
  }
};

canvas.addEventListener("keydown", handleKeydown);

// Add your code here