首页 > 解决方案 > 我需要将随机图像生成器附加到游戏中的障碍组件

问题描述

您可以在此处查看源代码:http: //site.roaminghound.com/CNIT133finalproject.html 我需要弄清楚如何将随机图像生成器附加到 myObstacles。给它们贴上标签同样会破坏代码。图片生成器目前在html中展示随机图片生成器的作品,稍后会拿出来。

function updateGameArea() {
    var x, height, gap, minHeight, maxHeight, minGap, maxGap;
    for (i = 0; i < myObstacles.length; i += 1) {
        if (myGamePiece.crashWith(myObstacles[i])) {
            myGameArea.stop();
            return;
        } 
    }
    myGameArea.clear();
    myBackground.speedX = -1;
    myBackground.newPos();    
    myBackground.update();
    myGameArea.frameNo += 1;
    if (myGameArea.frameNo == 1 || everyinterval(250)) {
        x = myGameArea.canvas.width;
        minHeight = 50;
        maxHeight = 200;
        height = Math.floor(Math.random()*(maxHeightminHeight+1)+minHeight);
        minGap = 150;
        maxGap = 170;
        gap = Math.floor(Math.random()*(maxGap-minGap+1)+minGap);
        myObstacles.push(new component(120, 120, "images/enemy0.gif", x, height + gap, "image"));
        this.img = img;
    }

    for (i = 0; i < myObstacles.length; i += 1) {
        myObstacles[i].speedX = -1;
        myObstacles[i].newPos();
        myObstacles[i].update();
    }
    myGamePiece.newPos();    
    myGamePiece.update();
}
/*Below is my array of enemies, it is currently not attached to the enemy 
generator. I have it showing up below the game area with HTML just to prove 
the array works.*/
var changeObstacle = new 
Array("images/enemy0.gif","images/enemy1.gif","images/enemy2.gif",
      "images/enemy3.gif","images/enemy4.gif","images/enemy5.gif",
      "images/enemy6.gif","images/enemy7.gif","images/enemy8.gif",
      "images/enemy9.gif","images/enemy10.gif","images/enemy11.gif",
      "images/enemy12.gif","images/enemy13.gif","images/enemy14.gif",
      "images/enemy15.gif","images/enemy16.gif","images/enemy17.gif",
      "images/enemy18.gif");
function chooseEnemy() {
    var randomNum = Math.floor(Math.random() * changeObstacle.length);
    document.getElementById("myEnemy").src = changeObstacle[randomNum];
}

标签: javascripthtmlcss

解决方案


我认为您是在问如何在游戏中生成各种类型的敌人。目前,只有滑板类型 (enemy0.gif) 正在生成,但您已经准备了 18 个其他附加精灵(enemy1.gif 到enemy18.gif)。

这是一个简单的解决方案:

var n = Math.floor(Math.random() * (18 + 1));  // Get a random number 0 to 18.
var imgUrl = 'images/enemy' + n + '.gif';      // Form image url.
myObstacles.push(new component(120, 120, imgUrl, x, height + gap, "image"));

这是一种基于您的尝试的方法。我更改了方法chooseEnemy()以返回一个字符串,该字符串由创建敌人组件的行使用:

myObstacles.push(new component(120, 120, chooseEnemy(), x, height + gap, "image"));

.
.
.

function chooseEnemy() {
    var randomNum = Math.floor(Math.random() * (changeObstacle.length + 1));
    // document.getElementById("myEnemy").src = changeObstacle[randomNum];
    return changeObstacle[randomNum];
}

注意:你需要(changeObstacle.length + 1),否则最后一个敌人类型永远不会产生!


推荐阅读