feliz-dia.000webhostapp.com/game1.html

 

 

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8" />

    <title>Gamedev Canvas Workshop</title>

    <style>

         * { padding: 0; margin: 0; }

         canvas { background: #eee; display: block; margin: 0 auto; }

    </style>

</head>

<body>

    <canvas id="myCanvas" width="480" height="320"></canvas>

 

    <script>

        var canvas = document.getElementById("myCanvas");

        var ctx = canvas.getContext("2d");

        var ballRadius = 10;

        var x = canvas.width / 2;

        var y = canvas.height - 30;

        var dx = 2;

        var dy = -2;

        var paddleHeight = 10;

        var paddleWidth = 75;

        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;

       

        var lives = 3;

        var score = 0;

 

        var bricks = [];

        for (var c = 0; c < brickColumnCount; c++) {

            bricks[c] = [];

            for (var r = 0; r < brickRowCount; r++) {

                bricks[c][r] = { x: 0, y: 0, status: 1 };

            }

        }

 

        document.addEventListener("keydown", keyDownHandler, false);

        document.addEventListener("keyup", keyUpHandler, false);

        document.addEventListener("mousemove", mouseMoveHandler, false);

 

        function keyDownHandler(e) {

            if (e.key == "Right" || e.key == "ArrowRight") {

                rightPressed = true;

            }

            else if (e.key == "Left" || e.key == "ArrowLeft") {

                leftPressed = true;

            }

        }

 

        function keyUpHandler(e) {

            if (e.key == "Right" || e.key == "ArrowRight") {

                rightPressed = false;

            }

            else if (e.key == "Left" || e.key == "ArrowLeft") {

                leftPressed = false;

            }

        }

       

        function mouseMoveHandler(e) {

            var relativeX = e.clientX - canvas.offsetLeft;

            if(relativeX > 0 && relativeX < canvas.width) {

                paddleX = relativeX - paddleWidth/2;

            }

        }

       

        function drawLives() {

            ctx.font = "16px Arial";

            ctx.fillStyle = "#0095DD";

            ctx.fillText("Lives: "+lives, canvas.width-65, 20);

        }

       

        function collisionDetection() {

            for(var c=0; c<brickColumnCount; c++) {

                for(var r=0; r<brickRowCount; r++) {

                    var b = bricks[c][r];

                    if(b.status == 1) {

                        if(x > b.x && x < b.x+brickWidth && y > b.y && y < b.y+brickHeight) {

                            dy = -dy;

                            b.status = 0;

                            score++;

                            if(score == brickRowCount*brickColumnCount) {

                                alert("YOU WIN, CONGRATS!");

                                document.location.reload();

                            }

                        }

                    }

                }

            }

        }

       

        function drawBall() {

            ctx.beginPath();

            ctx.arc(x, y, ballRadius, 0, Math.PI * 2);

            ctx.fillStyle = "#0095DD";

            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 (var c = 0; c < brickColumnCount; c++) {

                for (var 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;

                        bricks[c][r].y = brickY;

                        ctx.beginPath();

                        ctx.rect(brickX, brickY, brickWidth, brickHeight);

                        ctx.fillStyle = "#0095DD";

                        ctx.fill();

                        ctx.closePath();

                    }

                }

            }

        }

       

        function drawScore() {

            ctx.font = "16px Arial";

            ctx.fillStyle = "#0095DD";

            ctx.fillText("Score: "+score, 8, 20);

        }

 

        function draw() {

            ctx.clearRect(0, 0, canvas.width, canvas.height);

            drawBricks();

            drawBall();

            drawPaddle();

            collisionDetection();

            drawScore();

            drawLives();

 

            if (x + dx > canvas.width - ballRadius || x + dx < ballRadius) {

                dx = -dx;

            }

            if (y + dy < ballRadius) {

                dy = -dy;

            }

            else if (y + dy > canvas.height - ballRadius) {

                if (x > paddleX && x < paddleX + paddleWidth) {

                    if (y = y - paddleHeight) {

                        dy = -dy;

                    }

                }

                else {

                    lives--;

                    if(!lives) {

                        alert("GAME OVER");

                        document.location.reload();

                        clearInterval(interval); // Needed for Chrome to end game

                    }

                    else {

                        x = canvas.width/2;

                        y = canvas.height-30;

                        dx = 2;

                        dy = -2;

                        paddleX = (canvas.width-paddleWidth)/2;

                    }

                }

            }

 

            if (rightPressed && paddleX < canvas.width - paddleWidth) {

                paddleX += 7;

            }

            else if (leftPressed && paddleX > 0) {

                paddleX -= 7;

            }

 

                x += dx;

                y += dy;

        }

 

        var interval = setInterval(draw, 10);

    </script>

 

</body>

</html>

'IT 통신 수학 과학 > HTML' 카테고리의 다른 글

CSS 셀렉터  (0) 2021.06.05
000webhost/아이엠앱에서 php로 DB 접속  (0) 2021.06.01
웹에 그림그리는 4가지 방법  (0) 2020.10.01
웹에 그림그리기.  (0) 2020.10.01

+ Recent posts