JSFiddle - React, Tailwind, and code Playground
by Zecheng Hu
HTML
<canvas id="myCanvas" height="320" width="480"></canvas>
CSS
canvas { background: #eee; }
JavaScript
var canvas=document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var ballRadius=10;
//to move
var m=canvas.width/5;
var n=canvas.height-15;
var dm=2;
var dn=-2;
var x=canvas.width/2;
var y=canvas.height-30;
var dx=2;
var dy=-2;
var paddleHeight=10;
var paddleWidth=100;
var paddleX=(canvas.width-paddleWidth)/2;
var rightPressed= false;
var leftPressed=false;
var brickRowCount = 3;
var brickColumnCount = 5;
var brickWidth = 75;
var brickHeight = 20;
var brickPadding = 10;
var brickOffsetTop = 30;
var brickOffsetLeft = 30;
document.addEventListener("keydown",keyDownHandler,false);
document.addEventListener("keyup",keyUpHandler,false);
var bricks = [];
for(c=0; c<brickColumnCount; c++) {
bricks[c] = [];
for(r=0; r<brickRowCount; r++) {
bricks[c][r] = { x: 0, y: 0, status: 1 };
}
}
function keyDownHandler(e){
if(e.keyCode==39){
rightPressed=true;
}
else if(e.keyCode==37){
leftPressed=true;
}
}
function keyUpHandler(e){
if(e.keyCode==39){
rightPressed=false;
}
else if(e.keyCode==37){
leftPressed=false;
}
}
function drawBall(){
ctx.beginPath();
ctx.arc(x,y,ballRadius,0,2*Math.PI);
ctx.fillstyle="Red";
ctx.fillStroke="Red";
ctx.Stroke="10"
ctx.fill();
ctx.closePath();
}
function drawBal(){
ctx.beginPath();
ctx.arc(m,n,ballRadius,0,2*Math.PI)
ctx.fillstyle="Red";
ctx.fillStroke="Red";
ctx.Stroke="10"
ctx.fill();
ctx.closePath();
}
function drawPaddle(){
ctx.beginPath();
ctx.rect(paddleX,canvas.height-paddleHeight,paddleWidth,paddleHeight);
ctx.fillstyle="#0095DD";
ctx.fill();
ctx.closePath();
}
function drawBricks() {
for(c=0; c<brickColumnCount; c++) {
for(r=0; r<brickRowCount; r++) {
if(bricks[c][r].status == 1) {
var brickX = (c*(brickWidth+brickPadding))+brickOffsetLeft;
var brickY = (r*(brickHeight+brickPadding))+brickOffsetTop;
bricks[c][r].x = brickX;
...