JSFiddle - React, Tailwind, and code Playground

by electronoob

HTML

<canvas id=canvas width=550px height=550px style="">
</canvas>

CSS

body {
  margin: 0px;
  padding: 0px;
  overflow: hidden;
}

canvas {
  position: absolute;
  top: 0px;
  left: 0px;
}

JavaScript

//snake game 0.3

var curveRadians = 0;
var curveRadians2 = 0;
var curveRadians3 = 0;
var maxrad = 0.2;
var debug_msg = '';
var fps = 0;
var msf = 0; //miliseconds per frame render time
var msfa = 0; // total miliseconds per 1 second render time / fps;
var mX = 0;
var mY = 0;
var canvas = document.getElementById('canvas');
var camera = canvas.getContext('2d');
var screen = document.createElement('canvas');
var screenContext = screen.getContext('2d');
var background = document.createElement('canvas');
var minimap = document.createElement('canvas');
var minimapContext = minimap.getContext('2d');
var ticks_snake_move = 0;
var snake = [];
var camera_properties = {
  x: 0,
  y: 0,
  z: 1,
  newz: 0
};
var snake_nodes = {
  x: 0,
  y: 0,
  ishead: 0
};
snake.nodes = Array();
snake.length = 4; // min start length 4
snake.size = 10;
snake.newsize = 0;
snake.color = '0,255,0';
snake.x = 300 * camera_properties.z;
snake.y = 300 * camera_properties.z;
snake.add = 0;
snake.speed = 4;
snake.skin = new Image();

screen.width = 3000;
screen.height = 3000;
background.width = 1000;
background.height = 1000;
minimap.width = 100;
minimap.height = 100;
setInterval(camera_z_grow, 2000);
setInterval(camera_z_change, 30);
setInterval(snake_grow, 5000);
setInterval(function() {
  debug_msg = `
  x: ${(snake.nodes[0].x).toPrecision(6)}
  y: ${(snake.nodes[0].y).toPrecision(6)}
  ${fps.toPrecision(2)} fps.
  ${(msfa / fps).toPrecision(2)} ms/frame avg.
  ${(curveRadians3).toPrecision(2)} curve radians 3.
  `;
  fps = 0;
  msfa = 0;
}, 1000);
setInterval(function() {
  snake_move();
}, 32);
setTimeout(function() {
  snake.add = 20;
}, 10);

function background_do_lines() {
  var ctx = background.getContext('2d');
  ctx.strokeStyle = 'rgba(255,255,100,0.2)';
  ctx.lineWidth = 1;
  ctx.beginPath();
  ctx.rect(0, 0, background.width, background.height);
  ctx.fillStyle = 'rgba(20,20,60,1)';
  ctx.fill();
  for (i = 0; i < background.width; i += snake.size * 3) {
    ctx.beginPath();
   ...