js实现跑酷小游戏

代码语言:html

所属分类:游戏

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Kandi Runner</title>
    <style>
        body {
            font-family: arial,sans-serif;
            font-size: 16px
        }

        .wrapper {
            width: 600px;
            height: 360px;
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
            position: absolute;
            left: 20px;
            margin-left: auto;
            margin-right: auto
        }

        canvas {
            position: absolute;
            top: 0;
            left: 0;
            border: 1px solid #000;
            z-index: 1;
            width: 600px;
            height: 360px;
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box
        }

        #game-over {
            display: none;
            text-align: center;
            padding-top: 92px;
            z-index: 7;
            width: 600px;
            height: 360px;
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
            overflow: auto;
            margin: auto;
            position: absolute
        }
    </style>
</head>
<body>
    <h3>按空格键跳跃</h3>
    <div class="wrapper">
        <canvas id="canvas" width="800" height="480">
            <p>
                You're browser does not support the required functionality to play this game.
            </p>
            <p>
                Please update to a modern browser such as <a href="www.google.com/chrome/‎">Google Chrome</a> to play.
            </p>
        </canvas>
        <div id="game-over">
            <a href="javascript:void(0);" class="restart" id="restart">再试一次?</a>
        </div>
    </div>
    <script>
        (function() {
            var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var player, score, stop, ticker; var ground = [], water = [], enemies = [], environment = []; var platformHeight, platformLength, gapLength; var platformWidth = 32; var platformBase = canvas.height-platformWidth; var platformSpacer = 64; function rand(low, high) {
                return Math.floor(Math.random()*(high-low+1)+low);
            }
            function bound(num, low, high) {
                return Math.max(Math.min(num, high), low);
            }
            var assetLoader = (function() {
                this.imgs = {
                    'bg': '/bfwrepo/image/paoku/bg.png', 'sky': '/bfwrepo/image/paoku/sky.png', 'backdrop': '/bfwrepo/image/paoku/backdrop.png', 'backdrop2': '/bfwrepo/image/paoku/backdrop_ground.png', 'grass': '/bfwrepo/image/paoku/grass.png', 'avatar_normal': '/bfwrepo/image/paoku/normal_walk.png', 'water': '/bfwrepo/image/paoku/water.png', 'grass1': '/bfwrepo/image/paoku/grassMid1.png', 'grass2': '/bfwrepo/image/paoku/grassMid2.png', 'bridge': '/bfwrepo/image/paoku/bridge.png', 'plant': '/bfwrepo/image/paoku/plant.png', 'bush1': '/bfwrepo/image/paoku/bush1.png', 'bush2': '/bfwrepo/image/paoku/bush2.png', 'cliff': '/bfwrepo/image/paoku/grassCliffRight.png', 'spikes': '/bfwrepo/image/paoku/spikes.png', 'box': '/bfwrepo/image/paoku/boxCoin.png', 'slime': '/bfwrepo/image/paoku/slime.png'
                }; var assetsLoaded = 0; var numImgs = Object.keys(this.imgs).length; this.totalAssest = numImgs; function assetLoaded(dic, name) {
                    if (this[dic][name].status !== 'loading') {
                        return;
                    }
                    this[dic][name].status = 'loaded'; assetsLoaded++; if (assetsLoaded === this.totalAssest && typeof this.finished === 'function') {
                        this.finished();
                    }}
                this.downloadAll = function() {
                    var _this = this; var src; for (var img in this.imgs) {
                        if (this.imgs.hasOwnProperty(img)) {
                            src = this.imgs[img]; (function(_this, img) {
                                _this.imgs[img] = new Image(); _this.imgs[img].status = 'loading'; _this.imgs[img].name = img; _this.imgs[img].onload = function() {
                                    assetLoaded.call(_this, 'imgs', img)}; _this.imgs[img].src = src;
                            })(_this, img);
                        }}}
                return {
                    imgs: this.imgs, totalAssest: this.totalAssest, downloadAll: this.downloadAll
                };
            })(); assetLoader.finished = function() {
                startGame();
            }
            function SpriteSheet(path, frameWidth, frameHeight) {
                this.image = new Image(); this.frameWidth = frameWidth; this.frameHeight = frameHeight; var self = this; this.image.onload = function() {
                    self.framesPerRow = Math.floor(self.image.width/self.frameWidth);
                }; this.image.src = path;
            }
            function Animation(spritesheet, frameSpeed, startFrame, endFrame) {
                var animationSequence = []; var currentFrame = 0; var counter = 0; for (var frameNumber = startFrame; frameNumber <= endFrame; frameNumber++)
                    animationSequence.push(frameNumber); this.update = function() {
                    if (counter == (frameSpeed-1))
                        currentFrame = (currentFrame+1)%animationSequence.length; counter = (counter+1)%frameSpeed;
                }; this.draw = function(x, y) {
                    var row = Math.floor(animationSequence[currentFrame]/spritesheet.framesPerRow); var col = Math.floor(animationSequence[currentFrame]%spritesheet.fram.........完整代码请登录后点击上方下载按钮下载查看

网友评论0