清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
<html> <meta charset="utf-8" /> <title>打蟹</title> <style> body{ background:gray; text-align:center; } canvas{ background:white; } </style> <body> <canvas id="canvas" width="1024px" height="576px"></canvas> <div style="display:none;"> <img src="界面.png" id="background" /> <img src="锤子.png" id="hammer" /> <img src="锤子1.png" id="hammer1" /> <img src="洞前.png" id="hole1"/> <img src="洞后.png" id="hole2" /> <img src="数字.png" id="number" /> <img src="大螃蟹.png" id="big_crab" /> <img src="小螃蟹1.png" id="crab1" /> <img src="小螃蟹2.png" id="crab2" /> <img src="小螃蟹3.png" id="crab3" /> <img src="生命.png" id="life" /> </div> <audio id="music1" preload="auto" src="打蟹-1.mp3" /> <audio id="music2" preload="auto" src="打蟹-2.mp3" /> <audio id="music3" preload="auto" src="打蟹-3.mp3" /> <audio id="music4" preload="auto" src="打蟹-4.mp3" /> <script> var game = (function(){ var that = {}; that.canvas = document.getElementById('canvas'); that.cWidth = that.canvas.width; that.cHeight = that.canvas.height; that.cc = that.canvas.getContext('2d'); that.images = { 'background' : document.getElementById('background'), 'hammer' : document.getElementById('hammer'), 'hammer1' : document.getElementById('hammer1'), 'hole1' : document.getElementById('hole1'), 'hole2' : document.getElementById('hole2'), 'number' : document.getElementById('number'), 'bigCrab' : document.getElementById('big_crab'), 'crab1' : document.getElementById('crab1'), 'crab2' : document.getElementById('crab2'), 'crab3' : document.getElementById('crab3'), 'life' : document.getElementById('life') }; that.musics = { 'music1' : document.getElementById('music1'), 'music2' : document.getElementById('music2'), 'music3' : document.getElementById('music3'), 'music4' : document.getElementById('music4') }; that.holes = [[450,100], [300,235], [670,180], [445,375], [150,390]]; that.state = 0; //0: 正常 1: 打中 2: 打错 3: 结束 that.formula = []; that.life = 3; that.crabs = []; that.drawBackground = function(){ that.cc.drawImage(that.images.background, 0, 0, that.cWidth, that.cHeight); that.cc.drawImage(that.images.hole1, that.holes[0][0], that.holes[0][1], that.images.hole1.width, that.images.hole1.height); that.cc.drawImage(that.images.hole2, that.holes[0][0], that.holes[0][1], that.images.hole2.width, that.images.hole2.height); that.cc.drawImage(that.images.hole1, that.holes[1][0], that.holes[1][1], that.images.hole1.width, that.images.hole1.height); that.cc.drawImage(that.images.hole2, that.holes[1][0], that.holes[1][1], that.images.hole2.width, that.images.hole2.height); that.cc.drawImage(that.images.hole1, that.holes[2][0], that.holes[2][1], that.images.hole1.width, that.images.hole1.height); that.cc.drawImage(that.images.hole2, that.holes[2][0], that.holes[2][1], that.images.hole2.width, that.images.hole2.height); that.cc.drawImage(that.images.hole1, that.holes[3][0], that.holes[3][1], that.images.hole1.width, that.images.hole1.height); that.cc.drawImage(that.images.hole2, that.holes[3][0], that.holes[3][1], that.images.hole2.width, that.images.hole2.height); that.cc.drawImage(that.images.hole1, that.holes[4][0], that.holes[4][1], that.images.hole1.width, that.images.hole1.height); that.cc.drawImage(that.images.hole2, that.holes[4][0], that.holes[4][1], that.images.hole2.width, that.images.hole2.height); }; that.clearCanvas = function(){ that.cc.clearRect(0, 0, that.cWidth, that.cHeight); }; that.getNumY = function(num){ var n; switch(num){ case '0' : n = 3; break; case '1' : n = 43; break; case '2' : n = 82; break; case '3' : n = 122; break; case '4' : n = 163; break; case '5' : n = 203; break; case '6' : n = 243; break; case '7' : n = 283; break; case '8' : n = 323; break; case '9' : n = 363; break; case '+' : n = 403; break; case '-' : n = 443; break; case '*' : n = 483; break; case '/' : n = 523; break; default : break; } return n; }; that.createFormula = function(){ var a = parseInt(Math.random()*30+1); var b = parseInt(Math.random()*30+1); var c = a * b; return [c + '/' + a, b]; }; that.displayFormula = function(){ var len = that.formula[0].length; for(var i = 0; i < len; i ++){ that.cc.drawImage(that.images.number, 0, that.getNumY(that.formula[0].charAt(i)), 35, 35, 200 + i * 32, 60, 32, 32); } }; that.init = function(){ that.formula = that.createFormula(); that.bigCrab = new BigCrab(); that.state = 0; that.life = 3; for(var i = 0; i < 5; i++){ var crab = new Crab(); crab.inHole = game.holes[i]; that.crabs.push(crab); } that.crabs[0].number = that.formula[1]; that.hammer = new Hammer(); } that.checkClick = function(x, y){ if((that.crabs[0].inHole[0]+240) > x && that.crabs[0].inHole[0] < x && that.crabs[0].inHole[1] < y && (that.crabs[0].inHole[1]+50) > y){ return 0; }else{ for(var i = that.crabsToShow.length - 1; i > 0; i--){ if((that.crabs[that.crabsToShow[i]].inHole[0]+240) > x && that.crabs[that.crabsToShow[i]].inHole[0] < x && that.crabs[that.crabsToShow[i]].inHole[1] < y && (that.crabs[that.crabsToShow[i]].inHole[1]+50) >y){ return 1; } } } }; that.displayLife = function(){ for(var i=0;i<that.life;i++){ that.cc.drawImage(that.images.life, 0, 0, that.images.life.width, that.images.life.height, 380-i*40, 520, 20, 20); } }; return that; })(); var Hammer = function(){ this.state = 0; this.x = 0; this.y = 0; this.display = function(){ var image = game.images.hammer; if(this.state != 0){ image = game.images.hammer1; } game.cc.drawImage(image, this.x, this.y, image.width, image.height); }; } var BigCrab = function(){ this.blood = 100; this.displayBlood = function(){ var num = this.blood; for(var i = 0; i < 3; i++){ if(num != 0){ game.cc.drawImage(game.images.number, 0, game.getNumY((num % 10) + ''), 35, 35, 185 - i * 20, 520, 25, 25); num = parseInt(num / 10); }else{ game.cc.drawImage(game.images.number, 0, 3, 35, 35, 185 - i * 20, 520, 25, 25); } } }; var n=0; this.displayMotion = function(m){ switch(m){ case 3: case 0: if(n > 29){ n = 0; } game.cc.drawImage(game.images.bigCrab, n % 6 * 400, parseInt(n / 6) * 300, 400, 300, 40, 70, 320, 240); n++; break; case 1: if(n > 1){ n = 0; } game.cc.drawImage(game.images.bigCrab, n * 400, (parseInt(n / 6) +10) * 300, 400, 300, 40, 70, 320, 240); n++; break; case 2: if(n > 1){ n = 0; } game.cc.drawImage(game.images.bigCrab, n * 400, (parseInt(n / 6) +9) * 300, 400, 300, 40, 70, 320, 240); n++; break; } }; }; var Crab = function(){ this.number = parseInt(Math.random()*99+1); this.inHole = game.holes[parseInt(Math.random()*5)]; this.displayNumber = function(){ var num = this.number; for(var i = 0; i < 2; i++){ game.cc.drawImage(game.images.number, 0, game.getNumY((num % 10) + ''), 35, 35, this.inHole[0]+130-35*i, this.inHole[1]+70, 35, 35); num = parseInt(num / 10); if(num == 0){ break; } } } var n = 0; var image = eval("game.images.crab" + parseInt(Math.random()*3+1)); this.display = function(i){ if(i != undefined){ n = i; } if(n > 59){ game.cc.drawImage(image, 0, 0, 220, 150, this.inHole[0]+20, this.inHole[1]-100, 220, 150); this.displayNumber(); game.displayFormula(); }else{ game.cc.drawImage(image, n % 10 * 220, parseInt(n / 10) * 150, 220, 150, this.inHole[0]+20, this.inHole[1]-41-n, 220, 150); game.cc.drawImage(game.images.hole1, this.inHole[0], this.inHole[1], game.images.hole1.width, game.images.hole1.height); } n++; }; this.dismiss = function(i){ if(i != undefined){ n = i; } if(n < 60){ game.cc.drawImage(image, n % 10 * 220, parseInt(n / 10) * 150, 220, 150, this.inHole[0]+20, this.inHole[1]-100+n, 220, 150); game.cc.drawImage(game.images.hole1, this.inHole[0], this.inHole[1], game.images.hole1.width, game.images.hole1.height); } n++; }; this.deth = function(i){ if(i != undefined){ n = i; } if(n < 24){ game.cc.drawImage(image, n % 10 * 220, (parseInt(n / 10) + 6) * 150, 220, 150, this.inHole[0], this.inHole[1]-100, 220, 150); }else{ game.cc.drawImage(image, 660, 1200, 220, 150, this.inHole[0], this.inHole[1]-100, 220, 150); } this.displayNumber(); n++; }; this.goInToHole = function(i){ if(i != undefined){ n = i; } if(n < 60){ game.cc.drawImage(image, n % 10 * 220, parseInt(n / 10) * 150, 220, 150, this.inHole[0]+138-n*2, this.inHole[1]-100, 220, 150); game.cc.drawImage(game.images.hole1, this.inHole[0], this.inHole[1], game.images.hole1.width, game.images.hole1.height); }else if(n < 120){ game.cc.drawImage(image, (n - 60) % 10 * 220, parseInt((n - 60) / 10) * 150, 220, 150, this.inHole[0]+20, this.inHole[1]-160 + n, 220, 150); game.cc.drawImage(game.images.hole1, this.inHole[0], this.inHole[1], game.images.hole1.width, game.images.hole1.height); } n++; }; }; var nu = 0; var b = function(){ game.drawBackground(); game.bigCrab.displayMotion(game.state); game.bigCrab.displayBlood(); game.displayLife(); if(nu == 0){ var nn = parseInt(Math.random()*4+2); game.crabsToShow = [0]; for(var i = 0; i < nn; i++){ var n = (nn + i * 2) % 3 + 1; var str = game.crabsToShow.join(); if(str.indexOf(n) == -1){ game.crabsToShow.push(n); } } var e = game.crabs[game.crabsToShow[1]].inHole; game.crabs[game.crabsToShow[1]].inHole = game.crabs[game.crabsToShow[0]].inHole; game.crabs[game.crabsToShow[0]].inHole = e; game.crabs[game.crabsToShow[0]].display(0); for(var i = game.crabsToShow.length - 1; i > 0; i--){ game.crabs[game.crabsToShow[i]].number = parseInt(Math.random()*99+1); game.crabs[game.crabsToShow[i]].display(0); } }else if(nu < 70){ for(var i in game.crabsToShow){ game.crabs[game.crabsToShow[i]].display(); } }else if(nu == 70){ game.canvas.onclick = function(e){ var t = game.checkClick(e.offsetX, e.offsetY); switch(t){ case 0: //打中 game.state = 1; game.crabs[0].deth(0); game.musics.music2.play(); game.bigCrab.blood -= 10; if(game.bigCrab.blood == 0){ game.state = 3; nu = 179; game.musics.music3.play(); alert('胜利'); break; } nu = 70; console.log('打中'); break; case 1: //打错 game.life--; if(game.life == 0){ game.musics.music4.play(); alert('失败'); game.state = 3; }else{ game.state = 2; game.musics.music1.play(); } console.log('打错'); //game.crabs[0].happy(0); nu = 70; break; default: //其他情况 game.state = 0; break; } }; game.canvas.onmousedown=function(){ game.hammer.state = 1; }; game.canvas.onmouseup=function(){ game.hammer.state = 0; }; if(game.state == 1){ game.crabs[0].deth(); }else{ game.crabs[0].display(); } for(var i = game.crabsToShow.length-1; i > 0; i--){ game.crabs[game.crabsToShow[i]].display(); } }else if(nu > 70 && nu < 150){ if(game.state == 1){ game.crabs[0].deth(); }else{ game.crabs[0].display(); } for(var i = game.crabsToShow.length-1; i > 0; i--){ game.crabs[game.crabsToShow[i]].display(); } }else if(nu == 150){ if(game.state == 3){ game.canvas.onclick = null; return; } if(game.state == 1){ game.formula = game.createFormula(); game.crabs[0].number = game.formula[1]; } game.state = 0; game.canvas.onclick = null; for(var i in game.crabsToShow){ game.crabs[game.crabsToShow[i]].dismiss(0); } }else if(nu > 150 && nu < 210){ for(var i in game.crabsToShow){ game.crabs[game.crabsToShow[i]].dismiss(); } }else{ nu = -1; } game.hammer.display(); setTimeout(b, 30); nu++; }; var a = function(){ game.drawBackground(); game.bigCrab.displayMotion(game.state); game.bigCrab.displayBlood(); game.displayLife(); for(var i in game.crabs){ game.crabs[i].goInToHole(); } if(nu < 180){ setTimeout(a, 30); nu++; }else{ nu = 0; b(); } }; window.onload = function(){ game.init(); a(); game.canvas.onmousemove=function(e){ game.hammer.x = e.offsetX-100; game.hammer.y = e.offsetY-150; }; }; </script> </body> </html>