我完全不明白这一点。添加 while 循环会导致变量抛出“未捕获的类型错误无法读取 'perp' 的属性”。我尝试了很多解决方案,分离代码,添加额外的类型,尝试制作:任何类型,我真的很茫然。
小背景信息:我正在尝试制作一个名为“三是犯罪”的快速小游戏,本质上我有一个算法可以显示最多 3 名罪犯,其中最多 2 名可能是真正的肇事者。
所有代码都可以公开查看:https ://github.com/treehau5/ThreesACrime
function main(num) {
var is_over = false;
var game = new GameObject.Game(shuffled_criminals, num);
$('body').append(game.display());
$("#status").text("Turn in progress");
$('body').append('<div class="container"><p>Enter your guess<p><div class="input-append" id="turn_form"><form>\
<input class="span2" id="Text1" type="text" />\
<button class="btn" id="Button1" type="button">Go!</button>\
</form>\
</div></div>');
console.log(game.getThree());
while (true) //removing this while loop causes above line to work fine.
{ }
}
这是游戏类中的 getThree 方法
getThree() {
var result: Criminal[] = [];
var temp: Criminal[] = _.shuffle(this.criminals);
var num_perp = 0;
while (result.length != 3) {
while ((num_perp != 3) && (result.length != 3)) {
var x: Criminal = temp.pop();
result.push(x);
if (x.perp == true)
num_perp++;
temp = _.shuffle(temp);
}
do {
temp = _.shuffle(temp);
var y: Criminal = temp.pop();
if (y.perp == false)
result.push(y);
}
while (result.length != 3)
}
return result;
}//end displayThree
我正在使用 underscorejs 进行改组,并使用 distinctlyTyped 下划线分型。
随意查看或克隆 repo 以尝试。这个错误发生在 Google Chrome 26 中。所有代码都在 game.ts、gameobject.ts 和 main.ts 中,有很多对外部库的引用,比如下划线和 jquery ui,我打算在我完成后稍微修饰一下 GUI完成主游戏逻辑。
感谢您甚至费心阅读所有这些内容,非常感谢您的帮助。
编辑:所以我试图使用这样的循环在游戏中放置一个“转弯”
while (is_over)
{
break;
}