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();