|
| 1 | +//游戏结束提示,获得多少分,元宝分值及时间 |
| 2 | +var stage, loader; |
| 3 | +var background, manImg, man, start; |
| 4 | +var C_W, C_H, SPEED = 3, COIN_W = 100, COIN_H = 56, COIN_X = 30, COIN_Y = 30; |
| 5 | +var allCoins = [], countCoins = document.getElementById("coins"); |
| 6 | +var loop, time = document.getElementById("time"), time_count = document.getElementById("timeCount"); |
| 7 | +var vx = 0; |
| 8 | +var game_over; |
| 9 | + |
| 10 | +window.onload = function() { |
| 11 | + init(); |
| 12 | +} |
| 13 | + |
| 14 | +function init(){ |
| 15 | + stage = new createjs.Stage("canvas"); |
| 16 | + C_W = stage.canvas.width; |
| 17 | + C_H = stage.canvas.height; |
| 18 | + |
| 19 | + var manifest = [ |
| 20 | + {src: "./img/bg.jpg", id: "background"}, |
| 21 | + {src: "./img/man.png", id: "man"}, |
| 22 | + {src: "./img/coin.png", id: "coin"}, |
| 23 | + {src: "./img/start.png", id: "start"}, |
| 24 | + {src: "./audio/score.mp3", id: "sound"}, |
| 25 | + ]; |
| 26 | + |
| 27 | + loader = new createjs.LoadQueue(false); |
| 28 | + loader.installPlugin(createjs.Sound); |
| 29 | + loader.on("complete", handlerComplete); |
| 30 | + loader.loadManifest(manifest); |
| 31 | +} |
| 32 | +function registerSound(event){ |
| 33 | + sound = event.src; |
| 34 | +} |
| 35 | +function handlerComplete(){ |
| 36 | + var bgImg = loader.getResult("background"); |
| 37 | + background = new createjs.Shape(); |
| 38 | + background.graphics.bf(bgImg).drawRect(0, 0, C_W, C_H); |
| 39 | + stage.addChild(background); |
| 40 | + |
| 41 | + manImg = loader.getResult("man"); |
| 42 | + man = new createjs.Bitmap(manImg); |
| 43 | + man.x = 400; |
| 44 | + man.y = 385; |
| 45 | + stage.addChild(man); |
| 46 | + |
| 47 | + var startImg = loader.getResult("start"); |
| 48 | + start = new createjs.Bitmap(startImg,); |
| 49 | + start.x = 360; |
| 50 | + start.setTransform(start.x, 240, 0.5, 0.5); |
| 51 | + stage.addChild(start); |
| 52 | + start.addEventListener("click",handlerStartGame); |
| 53 | + |
| 54 | + game_over = new createjs.Text('Game Over !!!','50px Algerian','yellow'); |
| 55 | + game_over.x = 320; |
| 56 | + game_over.y = 150; |
| 57 | + game_over.shadow = new createjs.Shadow("#000000", 5, 5, 10) |
| 58 | + game_over.visible = false; |
| 59 | + stage.addChild(game_over); |
| 60 | + |
| 61 | + createjs.Ticker.timingMode = createjs.Ticker.RAF; |
| 62 | + createjs.Ticker.setFPS(60); |
| 63 | + createjs.Ticker.addEventListener("tick", tick); |
| 64 | +} |
| 65 | + |
| 66 | +function handlerStartGame(){ |
| 67 | + start.visible = false; |
| 68 | + time.innerHTML = 10; |
| 69 | + countCoins.innerHTML = 0; |
| 70 | + time_count.style.display = 'block'; |
| 71 | + var coinImg = loader.getResult("coin"); |
| 72 | + coinsHandle(coinImg); |
| 73 | + |
| 74 | + window.addEventListener("keydown", handlerKeyDown); |
| 75 | +} |
| 76 | + |
| 77 | +function coinsHandle(coins){ |
| 78 | + loop = setInterval(function(){ |
| 79 | + var coin = createCoin(coins); |
| 80 | + allCoins.push(coin); |
| 81 | + time.innerHTML = parseInt(time.innerHTML) - 1; |
| 82 | + if(vx != 0) vx--; |
| 83 | + if(time.innerHTML == "0"){ |
| 84 | + clearInterval(loop); |
| 85 | + gameOver(); |
| 86 | + } |
| 87 | + }, 1000); |
| 88 | +} |
| 89 | +function gameOver(){ |
| 90 | + start.visible = true; |
| 91 | + game_over.visible = true; |
| 92 | + time_count.style.display = 'none'; |
| 93 | + man.x = 400; |
| 94 | + man.y = 385; |
| 95 | + coins.visible = false; |
| 96 | + allCoins.forEach(function(cc, index){ |
| 97 | + if(cc.shape.visible){ |
| 98 | + cc.shape.visible = false; |
| 99 | + } |
| 100 | + }); |
| 101 | +} |
| 102 | +function tick(event){ |
| 103 | + if(!start.visible){ |
| 104 | + man.x += vx; |
| 105 | + if(man.x < 0) man.x = 0; |
| 106 | + else if(man.x + manImg.width > C_W) man.x = C_W - manImg.width; |
| 107 | + if(man.y < 0) man.y = 0; |
| 108 | + else if(man.y + manImg.height > C_H) man.y = C_H - manImg.height; |
| 109 | + |
| 110 | + allCoins.forEach(function(cc, index){ |
| 111 | + if(cc.shape.visible){ |
| 112 | + if((cc.shape.x + cc.size().w) > man.x && cc.shape.x < (man.x + manImg.width) && (cc.shape.y + cc.size().h) > (man.y + manImg.height/2)){ |
| 113 | + cc.isget = true; |
| 114 | + countCoins.innerHTML = parseInt(countCoins.innerHTML) + 1; |
| 115 | + createjs.Sound.play("sound"); |
| 116 | + } |
| 117 | + cc.update(); |
| 118 | + } |
| 119 | + }); |
| 120 | + } |
| 121 | + stage.update(event); |
| 122 | +} |
| 123 | + |
| 124 | +function handlerKeyDown(event){ |
| 125 | + switch(event.keyCode){ |
| 126 | + case 65://A |
| 127 | + vx = -4; |
| 128 | + break; |
| 129 | + case 68://D |
| 130 | + vx = 4 |
| 131 | + break; |
| 132 | + } |
| 133 | +} |
0 commit comments