孑丶 2021-10-07 16:45 采纳率: 100%
浏览 70
已结题

请问一下,根据书本敲的,然后在浏览器打开就是空白的,请问哪儿有问题

请问一下,根据书本敲的,然后在浏览器打开就是空白的,请问哪儿有问题
#代码如下


<html>
    <meta charset="utf-8" />
    <head>
        <canvas id="gameCanvas" width="600" height="600">您的浏览器不支持Canvas</canvas>
        <script  type="text/JavaScript">
            // 获取画布元素
            var canvas = document.getElementById("gameCanvas");
            var ctx = canvas.getContext("2d");
            
            //定义游戏场景
            var bgReady = false;
            var bgImage = new Image();
            bgImage.src = "background.png";
            bgImage.onload = function () {
                bgReady = true;
            }

            //定义mario对象样式
            var marioReady = false;
            var marioImage = new Image();
            marioImage.src = "mario.jpg";
            marioImage.onload = function(){
                marioReady = true;
            }

            //定义怪物样式
            var monsterReady = false;
            var monsterImage = new Image();
            monsterImage.src = "monster.jpg";
            monsterImage.onload = function(){
                monsterReady = true;
            }

            //定义mario初始参数
            var mario = {
                speed: 256,
                x: canvas.width/2,
                y: canvas.height/2
            }

            //定义怪物初始参数
            function monster(){
                this.x = Math.random() * canvas.width;
                this.y = Math.random() * canvas.height;
                this.speed = 100;
                this.xDirection = 1;
                this.yDirection = 1;
                this.move = function (modifier) {
                this.x += this.xDirection * this.speed * modifier;
                this.y += this.yDirection * this.speed * modifier;
                if (this.x >= canvas.width - 32){
                    this.x = canvas.width -32;
                    this.xDirection = -1;
                }else if (this.x <= 0) {
                    this.x = 0;
                    this.xDirection = 1;
                }else if (this.y >= canvas.width - 32) {
                    this.y = canvas.width -32;
                    this.yDirection = -1;
                }else if (this.y <= 0) {
                    this.y = 0;
                    this.yDirection = 1;
                }
                };
            }

            var monsterSum = 0;
            var monsterList = new Array();
            monsterList[monsterSum] = new monster();

            var keysDown = {};

            //添加键盘操作监控事件
            addEventListener{
                "keydown",
                function (e) {
                    keysDown[e.keyCode] = true;
                },
                false
            };
            addEventListener{
                "keyup",
                function (e) {
                    delete keysDown[e.keyCode];
                }
            };

            //定义移动事件
            var Move = function (modifier) {

                if (38 in keysDown){
                    mario.y -= mario.speed * modifier;
                }
                if (40 in keysDown){
                    mario.y += mario.speed * modifier;
                }
                if (37 in keysDown){
                    mario.x -= mario.speed * modifier;
                }
                if (39 in keysDown){
                    mario.x += mario.speed * modifier;
                }
                if (mario.x >= canvas.width - 32) {
                    mario.x = 0;
                }else if (mario.x <= 0) {
                    mario.x = canvas.width - 32;
                }
                if (mario.y >= canvas.width - 32) {                    
                    mario.y = 0;
                }else if (mario.y <= 0) {
                    mario.y = canvas.width -32;
                }

                for (var i = 0; i <= monsterSum; i++) {
                    monsterList[i].move(modifier);            
                }
            }

            //定义绘图事件
            var Draw = function () {
                if(bgReady){
                    ctx.drawImage(bgImage, 0, 0);
                    if (marioReady) {
                        ctx.drawImage(marioImage, mario.x, mario.y);
                    }
                
                    if (monsterReady) {
                        for(var i = 0; i <= monsterSum; i++)
                        ctx.drawImage(monsterImage, monsterList[i].x, monsterList[i].y);
                    }
                }
                ctx.fillStyle = "rgb(250, 250, 250)";
                ctx.font = "24px Helvetica";
                ctx.textAlign = "left";
                ctx.textBaseline = "top";
                last = Date.now() - start;
                ctx.fillText(last/1000, 12, canvas.height-590);
            }

            //设置怪物刷新并判断位置
            var Check = function () {
                if(monsterSum != Math.floor(last / 5000)){
                    monsterSum ++;
                    monsterList[monsterSum] = mew monster();
                }

                for(var i = 0; i <= monsterSum; i++){
                    if (
                        (monsterList[i].x - 32) <= mario.x
                        && mario.x <= (monsterList[i].x + 32)
                        && (monsterList[i].y - 32) <= mario.y
                        && mario.y <= (monsterList[i].y + 32)
                    ) {
                        end = Date.now();
                        alter("你被怪物抓到了,游戏结束!");
                        End();
                    }
                }
            }

            var End = function () {
                if(bgReady){
                    ctx.drawImage(bgImage, 0, 0);
                }
                window.clearInterval(timer);
                return;
            }

            var main = function () {
                var now = Date.now();
                var delta = now - then;
                Move(delta / 1000);
                Draw();
                Check();
                
                then = now;
            }

            var then = Date.now();
            var start = then;
            timer = setInterval(main, 1);
        </script>
    </body>
</html>
  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-10-07 16:46
    关注

    没有看到代码,请重新上传一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 修改了问题 10月7日
  • 创建了问题 10月7日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)