javascript - 我需要将随机图像生成器附加到游戏中的障碍组件
问题描述
您可以在此处查看源代码: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];
}
解决方案
我认为您是在问如何在游戏中生成各种类型的敌人。目前,只有滑板类型 (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)
,否则最后一个敌人类型永远不会产生!
推荐阅读
- node.js - “http”模块的“IncomingMessage”中未定义的“url”属性是什么意思?
- android - 如何使用资源字符串与占位符连接?
- ruby-on-rails - 我怎样才能只查询graphql中的必填字段?
- javascript - 对象中定义的函数对此有不同的实现,但普通函数有不同的原因?
- node.js - Typescript:使用 require 和 import 同步/异步
- postgresql - 创建 GinIndex 后在 django 中运行测试失败,ProgrammingError: 关系“table_name_GeoLocation_id”已经存在
- python - pandas extract() 返回空数据框
- sails.js - 查询 PostgreSQL 数据库时出现连接名称错误
- python - opencv python/边界框
- kotlin-js - 如何在 Kotlin/JS 项目中执行 Node 命令