用canvas和原生js写的一个笨鸟先飞的小游戏(暂时只有一个关卡)

其中一个画布背景是一张图片,还有小鸟,两个管子的图片。暂时不知道怎么附上去就不添加了。这里只有源代码,css和js都是在html写着的,感觉比他们的容易吧,hah 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>笨鸟先生</title>
    <style>
        *{margin: 0;padding:0;}
        body,html{
            width:100%;
            height:100%;
        }
        canvas{
            background: url("images/background.png");
            background-repeat: repeat-x;
            background-size: 100% 100%;
            position: fixed;
        }
        #score{
            position: absolute;
            font-family:Times New Roman;
            font-size: 80px;
            font-weight: bold;
            top:30px;
            left:200px;
            color:black;
        }
        .wraper{
            width: 100%;
            height:100%;
            position: absolute;
            top:0;
            left:0;
            z-index: 1;
            background-color: ghostwhite;
            opacity: 0.5;
            display: none;
        }
        .scoreban{
            position: absolute;
            top:200px;
            left:550px;
            z-index: 2;
            font-family:Times New Roman;
            font-size: 80px;
            font-weight: bold;
            display: none;
        }
    </style>
</head>
<body>
<canvas style=" display:block;width:100%;height:100%;" id="canvas">
</canvas>
<div class="wraper">

</div>
<div class="scoreban">
    <p id="scoreban0"></p>
</div>
<p></p>
<div id="score">
    <i id="scoreI"></i>
</div>
<video src="music/zbj.mp3" autoplay loop width="0" height="0" id="bgMusic"></video>
<script>
    var score = document.getElementById('scoreI');
    var scoreban0 = document.getElementById('scoreban0');
    var wraper = document.getElementsByClassName('wraper')[0];//背景色
    var scoreban = document.getElementsByClassName('scoreban')[0];
    var oCanvas = document.getElementById("canvas");
    var ctx = oCanvas.getContext("2d");
    var birdPic = new Image();
    var imgtop=50; //小鸟默认高度
    var i = 1;     //小鸟下落速度
    var j = 1;
    var time;
    function flyBird(){
        birdPic.src = "images/avatar.png";
        ctx.clearRect(115,0,8,500);
        birdPic.onload = function (){
            ctx.drawImage(birdPic,115,imgtop,8,8);
        }
        imgtop+=i;
        i=i+0.5;
    }
    document.onkeydown = function (event){//空格按键触发
        if(event.keyCode == 32){
            j=j+10;
            imgtop-=j;
        }
        i=1;
        j=1;
    };
    time = setInterval(flystop,80);
    //过柱子的数目
    var q = 0;
    score.innerHTML = q;  //默认为0

    var stop = new Image();//上下两个柱子
    var stop0 = new Image();

    var stopsite = 260;//默认柱子的开始位置
    var toparr = [20,30,10,80,30,70,20,40,60,30];
    function flystop(){
        flyBird();
        stop.src = "images/ob_bottom.png";
        stop0.src = 'images/ob_top.png';
        for(var t = 0;t<10;t++){
            ctx.clearRect(stopsite+70*t+20,0,20,600);
            ctx.drawImage(stop0,stopsite+70*t,0,20,toparr[t]);
            ctx.drawImage(stop,stopsite+70*t,toparr[t]+30,20,120);
            if(stopsite+70*t <= 123 && stopsite+70*t > 95){ //
                if(imgtop<=toparr[t] || imgtop>=toparr[t]+22){
                    clearInterval(time);
                    wraper.style.display = 'block';
                    scoreban.style.display = 'block';
                    scoreban0.innerHTML = 'GG,您的分数为:'+ (q-1);
                }
            }
            if(stopsite+70*t ==170){
                score.innerHTML = q;
                q++;
            }
        }
        if(imgtop <= 0 || imgtop>= ctx.canvas.height){//判断是否过界
            clearInterval(time);
            wraper.style.display = 'block';
            scoreban.style.display = 'block';
            scoreban0.innerHTML = 'GG,您的分数为:'+ q;
        }
        stopsite-=2;
        if(stopsite == -550){
            clearInterval(time);
            wraper.style.display = 'block';
            scoreban.style.display = 'block';
            scoreban0.innerHTML = '恭喜你,你赢了0.0';
        }
    }
</script>
</body>
</html>

 

posted @ 2016-09-19 21:36  萤火虫不玩儿火  阅读(1182)  评论(0编辑  收藏  举报