-
Notifications
You must be signed in to change notification settings - Fork 1
/
bird-compiled.js.map
1 lines (1 loc) · 19.6 KB
/
bird-compiled.js.map
1
{"version":3,"sources":["bird.js"],"names":[],"mappings":"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","file":"bird-compiled.js","sourcesContent":["/**\n * Created by humengtao on 2016/12/9.\n */\n$(function () {\n // const land=new Image();\n // land.src=\"./flappybird/land.png\"; here is the same way to create a img for HTML_Node;\n\n // find imgs from dom\n const land = document.getElementById('land');\n const background = document.getElementById('back');\n const pipe_up = document.getElementById('pipe_up');\n const pipe_down = document.getElementById('pipe_down');\n const game_over = document.getElementById('game_over');\n const game_start = document.getElementById('game_start');\n const new_game = document.getElementById('new_game');\n const sound1 = document.getElementById('sound1');\n const sound2 = document.getElementById('sound2');\n const sound3 = document.getElementById('sound3');\n const tab_start = document.getElementById('tab_start');\n\n // define class bird\n class Bird {\n constructor() {\n\n// bird vertical position\n this.positionY = 250;\n\n// bird horizon position\n this.positionX = 200;\n\n// bird speed of vertical\n this.vY = 0;\n\n// acceleration\n this.aY = 0.15;\n }\n\n fall() {\n this.positionY += this.vY;\n }\n\n setSpeed(v0, a, t) {\n this.vY = v0 + a * t;\n }\n }\n\n // define class pipe\n class Pipe {\n constructor(positionX, topHeight, bottomHeight) {\n// pipe horizon position\n this.positionX = positionX;\n\n// height of top pipe\n this.topHeight = topHeight;\n\n// height of bottom pipe\n this.bottomHeight = bottomHeight;\n\n// direction of pipe move (up or down)\n this.moveTo = [1, -1][~~(Math.random() * 2)];\n\n// max distance of moving\n this.distance = 40;\n\n// record distance of having moved\n this.pipeDistance = 0;\n\n// speed of pipe move\n this.speed = [0.1, 0.2, 0.3][~~(Math.random() * 3)];\n }\n }\n\n // define class game\n class Game {\n constructor() {\n// all pipes\n this.pipes = [];\n this.i = 1;\n\n// flag of bird img change\n this.flag = 1;\n\n// flag for background\n this.startX = 0;\n this.score = 0;\n }\n\n init() {\n const cas = document.getElementById('canvas');\n const cxt = cas.getContext('2d');\n\n const bird = new Bird();\n\n $('#record span').text(localStorage.getItem('flappy_bird_best_record'));\n\n this.gameReady(cxt, bird);\n }\n\n// change state to ready for game\n gameReady(cxt, bird) {\n const _this = this;\n let getReady = setInterval(()=> {\n\n cxt.clearRect(0, 0, 1200, 800);\n\n// draw init sense\n _this.drawBackground(cxt);\n _this.drawLand(cxt);\n _this.drawBird(cxt, bird);\n _this.drawScore(cxt);\n\n// img for game ready\n cxt.drawImage(game_start, 618, 199, 204, 54);\n cxt.drawImage(tab_start, 663, 270, 114, 98);\n }, 1);\n\n $(document).on('keydown', ()=> {\n clearInterval(getReady);\n $(document).off('keydown');\n bird.vY = -1.2;\n\n// start game\n _this.gameStart(cxt, bird);\n });\n }\n\n gameStart(cxt, bird) {\n\n// initial time\n let t = 0;\n const _this = this;\n\n// add pipe for each one second\n let addPipe = setInterval(()=> {\n const topHeight = ~~(Math.random() * 100) + 80;\n _this.pipes.push(new Pipe(1440, topHeight, 300 - topHeight));\n }, 1000);\n\n// set bird speed with increasing time\n let changeSpeed = setInterval(()=> {\n bird.setSpeed(bird.vY, bird.aY, t);\n t++;\n }, 100);\n\n// giving the bird a raising speed when tab\n $(document).on('keydown', ()=> {\n sound3.currentTime = 0;\n sound3.play();\n t = 0;\n bird.vY = -0.7;\n });\n\n// draw everything\n let runGame = setInterval(()=> {\n cxt.clearRect(0, 0, 1200, 800);\n\n _this.drawBackground(cxt);\n _this.drawPipe(cxt);\n _this.drawLand(cxt);\n _this.drawBird(cxt, bird);\n _this.drawScore(cxt);\n bird.fall();\n }, 1);\n\n// check the game if end\n let check = setInterval(()=> {\n\n// clear all interval if the game is end\n if (_this.checkEnd(bird)) {\n clearInterval(addPipe);\n clearInterval(changeSpeed);\n clearInterval(runGame);\n clearInterval(check);\n $(document).off('keydown');\n _this.gameOver(cxt);\n }\n _this.setScore(bird);\n }, 1);\n }\n\n setScore(bird) {\n if (!!this.pipes[this.score]) {\n if (bird.positionX - 13 > this.pipes[this.score].positionX + 52) {\n sound1.currentTime = 0;\n sound1.play();\n this.score++;\n }\n }\n }\n\n drawScore(cxt) {\n if (this.score < 10) {\n let img = document.getElementById('score_' + this.score);\n cxt.drawImage(img, 70, 20, 16, 20);\n } else if (this.score >= 10) {\n let img1 = document.getElementById('score_' + (~~(this.score / 10)));\n let img2 = document.getElementById('score_' + this.score % 10);\n cxt.drawImage(img1, 55, 20, 16, 20);\n cxt.drawImage(img2, 85, 20, 16, 20);\n } else if (this.score >= 100) {\n let img1 = document.getElementById('score_' + (~~(this.score / 10)));\n let img2 = document.getElementById('score_' + this.score % 10);\n let img3 = document.getElementById('score_' + this.score % 10);\n cxt.drawImage(img1, 40, 20, 16, 20);\n cxt.drawImage(img2, 70, 20, 16, 20);\n cxt.drawImage(img3, 100, 20, 16, 20);\n }\n }\n\n gameOver(cxt) {\n const _this = this;\n sound2.play();\n\n// set local record\n if (!localStorage.getItem('flappy_bird_best_record')||this.score>localStorage.getItem('flappy_bird_best_record'))\n localStorage.setItem('flappy_bird_best_record', this.score);\n\n// draw img of gameover\n cxt.drawImage(game_over, 618, 199, 204, 54);\n cxt.drawImage(new_game, 688, 269, 64, 28);\n\n// bind event of tabing to restart\n $(document).on('keydown', ()=> {\n $(document).off('keydown');\n _this.restartGame();\n });\n }\n\n restartGame() {\n// clear all attrs\n this.pipes = [];\n this.startX = 0;\n this.i = 1;\n this.flag = 1;\n this.score = 0;\n\n// restart\n this.init();\n }\n\n checkEnd(bird) {\n let isEnd = false;\n if (bird.positionY + 13 > 400) {\n isEnd = true;\n }\n if (!!this.pipes[this.score]) {\n if (bird.positionX + 13 >= this.pipes[this.score].positionX && bird.positionX - 13 <= this.pipes[this.score].positionX + 52) {\n if (bird.positionY + 13 >= 400 - this.pipes[this.score].bottomHeight || bird.positionY - 13 <= this.pipes[this.score].topHeight) {\n isEnd = true;\n }\n }\n }\n\n return isEnd;\n }\n\n drawBird(cxt, bird) {\n cxt.beginPath();\n let img = document.getElementById('bird' + this.i);\n\n if (this.flag == 1) {\n this.i += 1;\n } else {\n this.i -= 1;\n }\n\n if (this.i == 3 || this.i == 1) {\n this.flag /= -1;\n }\n cxt.drawImage(img, bird.positionX - 24, bird.positionY - 24, 48, 48);\n cxt.closePath();\n }\n\n\n drawLand(cxt) {\n\n cxt.drawImage(land, this.startX, 400, 288, 112);\n cxt.drawImage(land, this.startX + 288, 400, 288, 112);\n cxt.drawImage(land, this.startX + 288 * 2, 400, 288, 112);\n cxt.drawImage(land, this.startX + 288 * 3, 400, 288, 112);\n cxt.drawImage(land, this.startX + 288 * 4, 400, 288, 112);\n cxt.drawImage(land, this.startX + 288 * 5, 400, 288, 112);\n cxt.drawImage(land, this.startX + 288 * 6, 400, 288, 112);\n this.startX--;\n if (this.startX <= -288) {\n this.startX = 0;\n }\n }\n\n drawPipe(cxt) {\n\n this.pipes.map((el)=> {\n cxt.drawImage(pipe_down, el.positionX, el.topHeight - 320, 52, 320);\n cxt.drawImage(pipe_up, el.positionX, 400 - el.bottomHeight, 52, 320);\n el.positionX--;\n\n if (el.moveTo == 1) {\n el.topHeight += el.speed;\n el.bottomHeight -= el.speed;\n } else {\n el.topHeight -= el.speed;\n el.bottomHeight += el.speed;\n }\n\n el.pipeDistance += el.speed;\n if (el.pipeDistance >= el.distance) {\n el.pipeDistance = 0;\n el.moveTo /= -1;\n }\n });\n }\n\n drawBackground(cxt) {\n\n cxt.drawImage(background, this.startX, 0, 288, 512);\n cxt.drawImage(background, this.startX + 288, 0, 288, 512);\n cxt.drawImage(background, this.startX + 288 * 2, 0, 288, 512);\n cxt.drawImage(background, this.startX + 288 * 3, 0, 288, 512);\n cxt.drawImage(background, this.startX + 288 * 4, 0, 288, 512);\n cxt.drawImage(background, this.startX + 288 * 5, 0, 288, 512);\n cxt.drawImage(background, this.startX + 288 * 6, 0, 288, 512);\n this.startX--;\n if (this.startX <= -288) {\n this.startX = 0;\n }\n }\n }\n\n (function ($) {\n $.fn.startGame = function () {\n return new Game().init();\n };\n })(jQuery)\n});"]}