我是JavaScript新手。我正在进行的任务是使用boxbox作为物理模拟器的简单游戏。 无论如何,我有3个块,当玩家实体接触它们时会改变颜色。我想显示一条简单的结果信息(“只有一个?再试一次!”)。但是,我不知道颜色值是否可以用作条件。这就是我想出的:
function score() {
if (gold1.color == "gold" || gold2.color == "gold" || gold3.color == "gold") {world.createEntity(result, {
shape: "square",
x:9,
y:4,
width: 3,
height: 2,
image: "only1.png",
imageStretchToFit: true, }
}
else if (gold1.color == "gold" && gold2.color == "gold" || gold2.color == "gold" && gold3.color == "gold" || gold1.color == "gold" && gold3.color == "gold") {world.createEntity(result, {
shape: "square",
width: 3,
height: 2,
x:9,
y:4,
image: "only2.png",
imageStretchToFit: true, }
}
else (gold1.color == "gold" && gold2.color == "gold" && gold3.color == "gold") {world.createEntity(result, {
shape: "square",
width: 3,
height: 2,
x:9,
y:4,
image: "only3.png",
imageStretchToFit: true, }
}
}
我不确定这是一种完全错误的方法还是仅仅是语法错误。请帮忙。
谢谢。
答案 0 :(得分:0)
您应该在浏览器中使用调试器(如果您使用的是Chrome,只需按f12键)。在您发布的代码执行之前放置一个断点。你在gold1.color,gold2.color中看到了什么价值?
根据您提供的说明,我发现您发布的代码令人困惑。你为什么要做所有这些检查?
一旦有更多信息,我就会编辑我的答案。
另外一件事,看起来你的第一个代码块会执行,如果其他两个代码块都会执行,那你为什么还要使用“else if”语句呢?如果任何颜色是黄金,第一个代码块将执行,其他代码块不会执行,因为它们都需要一个或多个颜色为黄金。
答案 1 :(得分:0)
怎么样:
function score() {
var nrGold = 0;
if (gold1.color == "gold") {
nrGold++;
}
if (gold2.color == "gold") {
nrGold++;
}
if (gold3.color == "gold") {
nrGold++;
}
if (nrGold!==0) {
world.createEntity(result, {
shape: "square",
width: 3,
height: 2,
x:9,
y:4,
image: "only"+nrGold+".png",
imageStretchToFit: true
});
}
}
note1:json中的最后一个属性不应以逗号结尾(请参阅代码中的imageStretchToFit: true,
)
注意2:您缺少world.createEntity
功能