html5仿一flash游戏,是男人就下一百层

来源:互联网 发布:滚筒洗衣机推荐 知乎 编辑:程序博客网 时间:2024/04/29 23:29
<audio id="main_music" loop>            <source src="http://dl.dropbox.com/u/26141789/canvas/snake/main.mp3" type="audio/mp3"/>            <source src="http://dl.dropbox.com/u/26141789/canvas/snake/main.ogg" type="audio/ogg"/>        </audio><canvas id="cv"></canvas>
var mainMusic = document.getElementById("main_music");  var cv = document.getElementById('cv'),ctx = cv.getContext('2d');w = 800;h = 600;cv.width = w;cv.height = h;var paintCv = function(){ctx.fillStyle = 'black';ctx.fillRect(0, 0, w, h)}var size = 20,playerX = w/size/2,playerY = 0,speed = 16,gameLoop = null,elemyArr = [],elemyNum = 20,score = 0;var paintPlayer = function(){ctx.fillStyle = 'blue';ctx.fillRect(playerX * size, playerY * size, size, size);}var paintElemy = function(){                for(var i=0; i<elemyNum; i++){                    for(var j=0; j<elemyArr[i].length; j++){                        ctx.fillStyle = 'white';                        ctx.fillRect(elemyArr[i][j].x * size, elemyArr[i][j].y * size, size, size);                    }                }            }var update = function(){var add = 1;for(var i=0; i<elemyNum; i++){                    for(var j=0; j<elemyArr[i].length; j++){                        if(elemyArr[i][j].y == playerY && elemyArr[i][j].x == playerX){ //elemy自减和player自加位置重叠的情况,+2使player回到elemy上方                            add = -2;                            elemyArr[i][j].y--                        } else if(--elemyArr[i][j].y == playerY && elemyArr[i][j].x == playerX){ //正好落到elemy上方的情况                            add = -1;                        }                    }                }                for(var i=0; i<elemyNum; i++){    for(var j=0; j<elemyArr[i].length; j++){        if(elemyArr[i][j].y < 0){                            var _jLength = Math.round(Math.random()*3+3),                                _x = Math.round(Math.random() * w/size),                                _y = h/size + i,                                _arr = [];                            for(var j=0; j<_jLength; j++){                                _x++;                                _arr.push({'x': _x, 'y': _y});                            }                            elemyArr.splice(i, 1);                            elemyArr.push(_arr);                            score++;                        }    }}playerY += add;                                if(playerX >= w/size){                    playerX = w/size;                } else if(playerX <= 0){                    playerX = 0;                } else if(playerY >= h/size-1){                    playerY = h/size-1;                } else if(playerY < 0){                    mainMusic.pause();                    alert('GAME OVER ! 跳进了'+ score +'层地狱');                    clearInterval(gameLoop);                    size = 20,                    playerX = w/size/2,                    playerY = 0,                    speed = 16,                    gameLoop = null,                    elemyArr = [],                    elemyNum = 20,                    score = 0;                    init();                                    }}var draw = function(){paintCv();paintPlayer();paintElemy();update();}var init = function(){document.onkeydown = function(e){var code = e.keyCode;if(code == 37)playerX -= 1;//if(code == 38)playerY -= 1;if(code == 39)playerX += 1;if(code == 40)playerY += 1;}for(var i=0; i<elemyNum; i++){    var _jLength = Math.round(Math.random()*3+3),        _x = Math.round(Math.random() * w/size),                        _y = h/size + i,                        _arr = [];                    for(var j=0; j<_jLength; j++){                        _x++;                        _arr.push({'x': _x, 'y': _y});                    }elemyArr.push(_arr);}gameLoop = setInterval(draw, 1000/speed);mainMusic.play();}init();


原创粉丝点击