在Javascript中为对象属性提供随机属性值
我正在尝试创建一个基于平铺的游戏,并希望为每种类型的平铺提供随机颜色,例如:在Javascript中为对象属性提供随机属性值,javascript,Javascript,我正在尝试创建一个基于平铺的游戏,并希望为每种类型的平铺提供随机颜色,例如: Game.Glyph = function(properties) { properties = properties || {}; this._char = properties['character'] || ' '; this._foreground = properties['foreground'] || 'white'; }; Game.Tile.floorTile = new G
Game.Glyph = function(properties) {
properties = properties || {};
this._char = properties['character'] || ' ';
this._foreground = properties['foreground'] || 'white';
};
Game.Tile.floorTile = new Game.Tile({
character: '.',
});
然后假设我已经用Game.Tile.floorTile
(以及其他)填充了map
数组
for(设x=0;x
这导致每个地砖要么是红色,要么是黄色,而不是随机分布。我怎样才能像我在上面尝试的那样给每个磁贴一个随机颜色?如果您只想在两个值之间进行选择,a可以很容易地与产生0到1之间的值的
Math.random()相结合:
map[x][y]._foreground = Math.random() > 0.5 ? 'red': 'yellow'
例如,使用简化版本的代码:
let map=[[{},{}],{},{}]]
for(设x=0;x<2;x++){
for(设y=0;y<2;y++){
映射[x][y]。_前台=Math.random()>0.5?'red':'yellow'
}
}
console.log(map)
如果您只想在两个值之间进行选择,a可以轻松地与Math.random()结合使用,后者生成0到1之间的值:
map[x][y]._foreground = Math.random() > 0.5 ? 'red': 'yellow'
例如,使用简化版本的代码:
let map=[[{},{}],{},{}]]
for(设x=0;x<2;x++){
for(设y=0;y<2;y++){
映射[x][y]。_前台=Math.random()>0.5?'red':'yellow'
}
}
console.log(map)
在JS数组原型中没有random()
方法我有一个我正在使用的实现,应该提到。在JS数组原型中没有random()
方法我有一个我正在使用的实现,应该提到。谢谢,三元组非常整洁。然而,我仍然有我原来的问题,每一块地砖要么变成黄色,要么变成红色,这不是两者的随机混合。你看到了吗?你在@AlwaysNedinghelp上面运行的代码片段?没有,这很奇怪-当我改变单个地板的颜色时,每隔一块地板的颜色也会改变一次。@AlwaysNedinghelp听起来你可能已经在矩阵中填充了对一个实例的大量引用Game.Tile
。创建矩阵时,需要为数组的每个元素调用new Game.Tile()
。你说得对:)我花了一段时间进行重构,但感谢你为我指出了正确的方向^。^谢谢,三元结构非常整洁。然而,我仍然有我原来的问题,每一块地砖要么变成黄色,要么变成红色,这不是两者的随机混合。你看到了吗?你在@AlwaysNedinghelp上面运行的代码片段?没有,这很奇怪-当我改变单个地板的颜色时,每隔一块地板的颜色也会改变一次。@AlwaysNedinghelp听起来你可能已经在矩阵中填充了对一个实例的大量引用Game.Tile
。创建矩阵时,需要为数组的每个元素调用new Game.Tile()
。你说得对:)我花了一段时间进行重构,但感谢你为我指明了正确的方向^^