私はこれをまったく理解していません。while ループを追加すると、変数が「Uncaught type error cannot read property of 'perp'」をスローします。私は多くの解決策を試し、コードを分離し、追加の入力を追加し、:any タイプを作成しようとしましたが、本当に途方に暮れています。
背景情報: 私は「Three's a Crime」と呼ばれる簡単な小さなゲームを作ろうとしています。基本的に、最大 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を使用しており、DefiniteTypedアンダースコアタイピングを使用しています。
レポジトリを表示または複製して試してみてください。このエラーは Google Chrome 26 で発生しています。すべてのコードは game.ts、gameobject.ts、main.ts 内にあります。アンダースコアや jquery ui などの外部ライブラリへの参照がたくさんあります。GUI を少し改善する予定です。メインのゲーム ロジックを完成させます。
これをすべて読んでくれたことに感謝します。あなたの助けに感謝します。
編集:だから私はこのようなループを使ってゲームに「ターン」を入れようとしています
while (is_over)
{
break;
}