JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/2.3.0/custom/phaser-arcade-physics.min.js"></script>

CSS

body {
    margin: 0;
    padding: 0;
}

JavaScript

var size = 400;
var padd = 10;
var main = new Phaser.Game(size, size, Phaser.CANVAS, 'game');

var graphics;
var box;
var movingLine, movingLineDir;
var center = new Phaser.Point(size/2, size/2);
var borders = [];
var text;
var maxLength = 400;

main.state.add('Game', {
    perload: function() {},
    
    create: function() {
        text = this.game.add.text(size/2, size/2, '', {'font': '12px', 'fill': '#fff'});
        graphics = this.game.add.graphics(0, 0);
        box = this.game.add.graphics(0, 0);
        box.lineStyle(2, 0xaaaaaa);
        
        box.drawRect(padd, padd, size-(padd*2), size-(padd*2));
        borders.push(new Phaser.Line(padd, padd, size-padd, padd));  // top
        borders.push(new Phaser.Line(size-padd, padd, size-padd, size-padd));  // right
        borders.push(new Phaser.Line(padd, size-padd, size-padd, size-padd));  // bottom
        borders.push(new Phaser.Line(padd, padd, padd, size-padd));  // left
        
        box.drawRect(padd*2, padd*2, size-(padd*2*2), size-(padd*2*2));
        borders.push(new Phaser.Line(padd*2, padd*2, size-padd*2, padd*2));  // top
        borders.push(new Phaser.Line(size-padd*2, padd*2, size-padd*2, size-padd*2));  // right
        borders.push(new Phaser.Line(padd*2, size-padd*2, size-padd*2, size-padd*2));  // bottom
        borders.push(new Phaser.Line(padd*2, padd*2, padd*2, size-padd*2));  // left
        
        box.drawRect(120, 30, 50, 50);
        borders.push(new Phaser.Line(120, 30, 170, 30));  // top
        borders.push(new Phaser.Line(170, 30, 170, 80));  // right
        borders.push(new Phaser.Line(120, 80, 170, 80));  // bottom
        borders.push(new Phaser.Line(120, 80, 120, 30));  // left
        
        box.drawRect(300, 80, 50, 50);
        borders.push(new Phaser.Line(300, 80, 350, 80));  // top
        borders.push(new Phaser.Line(350, 80, 350, 130));  // right
        borders.push(new Phaser.Line(300, 130, 350, 130));  // bottom
        borders.push(new...