2017-04-21 14 views
2

ロック、ペーパー、ハサミのゲームを構築しようとしています。ここに私のコードです:はじめにJavascript - 関数、構文、ロジック

var options = ["r", "p", "s"]; 
 
    
 
document.onkeyup = function() { 
 
    var userGuess = String.fromCharCode(event.keycode).toLowerCase(); 
 

 
    console.log(userGuess); 
 

 
    var computerGuess = options[Math.floor(Math.random() * options.length)]; 
 

 
    console.log(computerGuess); 
 

 
    if (userGuess == "r" || userGuess == "p" || userGuess == "s") { 
 
     alert("Chosen Correctly - Good job!"); 
 
    } else { 
 
     alert("Please choose r, p, or s"); 
 
    } 
 
}

私はR、Pキーを押す、またはS際、私の警告は "!正しく選択 - 良い仕事" を言うことはありません。代わりに、警告は "r"、 "p"、または "s"を選択してください。 HHHmmmm、この作業がなければ、ユーザーの推測をコンピュータの推測と比較することはできません。新鮮な目のセットは私を助けますか?どうぞありがとうございます。

+3

@Sam:彼は文字列と文字列を比較しているので、厳密に等しいと結果は変わりません。 –

+0

@squint本当にありがとう、ありがとう。しかし、人生はまれではありません。私はとにかく、彼が厳密に同等であれば、もっと正しいと思う。エラーは "C"人のコメントです。 – Sam

+0

ロバート:ようこそ!私はあなたのよく書かれたコードサンプルを「スニッピット」に変換しました。質問に真っ直ぐ書いて答えにコピーすることができます。あなたは将来の質問でそれを使うことができます。 (ボタンバーにあります) – msanford

答えて

1

2つの変更:。event

  1. 峠ので、それはですローカルで利用可能(あなたがそれを持っているように、ではないkeycode
  2. keyCodeは、intercapsで書かれている;。JavaScriptは大文字と小文字が区別され

良いデバッグのヒント。検査しようとしているオブジェクトがconsole.dir()になると、正しい(利用可能な)プロパティとメソッド名が表示されます。

(但し、eventは巨大であるため、あなたはふるいにかけなければなりません。)

var options = ["r", "p", "s"]; 
 
    
 
document.onkeyup = function(event) { 
 

 
    var userGuess = String.fromCharCode(event.keyCode).toLowerCase(); 
 

 
    console.log(userGuess); 
 

 
    var computerGuess = options[Math.floor(Math.random() * options.length)]; 
 

 
    console.log(computerGuess); 
 

 
    if (userGuess == "r" || userGuess == "p" || userGuess == "s") { 
 
     alert("Chosen Correctly - Good job!"); 
 
    } else { 
 
     alert("Please choose r, p, or s"); 
 
    } 
 
}

1

keyCodeにキャセタルCがありません。

var userGuess = String.fromCharCode(event.keyCode).toLowerCase();

+0

ありがとう!私はそれがタイプミスや文法に関連するものだと分かっていました。 –

1

event.keycode C.はまた、おそらく、それはすでに文字列であるので、ちょうど、event.keyを使用する方が良いだろう資本に気づく、event.keyCodeでなければなりません。

あなたはどのブラウザで開発していますか?開発ツールはほとんどの場合F12キーを押すことでアクセスできます。ここでは、プログラムの実行中にブレークポイントに変数にアクセスすることができます。

+0

ありがとう!私はChromeを使用しています - チェックコンソール。しかし、私はそのエラーが参照されていることに気付かなかった。 –

+0

私はGoogleのブレークポイントになると思う - ありがとう! –

+0

Chromeを使用している場合は、F12キーを押してソースにアクセスし、JSがあるファイルを探し、左側にある数字をクリックしてブレークポイントを設定します。参考までに、これは私が理解したものです。私はブレークポイントを設定し、 'event.keycode'が未定義であることを見ました。しかし、私は 'event.keyCode' *が定義されていることに気付きました。また、誰かがすでにこれを言っていますが、関数に引数としてイベントを追加したいと思うかもしれません: 'document.onkeyup = function(event){'いくつかのブラウザはそこで動作しないかもしれないので。 – conman124

1

他の人が言っているように、あなたはkeyCodeの大文字の "C"を忘れていました。

しかし、eventはどこにも定義されていません。グローバルeventオブジェクトを使用することは悪い考えであり、(ありがたいことに)すべてのブラウザでサポートされているわけではありません。 event.keyCodeではなくevent.whichを使用することもできますが、これはすべてのイベントで一貫して機能しません。

イベントハンドラの開始がより次のようになります。

document.onkeyup = function(event) { 
    var userGuess = String.fromCharCode(event.which).toLowerCase(); 
    ... 

しかし、あなたはまた、このように、何が起こっているかを確認するためにコンソールロギングを使用することができます:私はdidnの

document.onkeyup = function(event) { 
    console.log("event=", event); 
    var userGuess = String.fromCharCode(event.which).toLowerCase(); 

注意をconsole.log("event=" + event);

+と入力すると、イベントはのように出力されます。カンマ(および任意の近代的なブラウザのデベロッパーコンソールで、F12と通常のアクセスは、オブジェクトの内容を参照することができるでしょう

+0

彼はグローバルな 'event'を使っていますが、Firefoxでは利用できません。 –

+0

これも私を混乱させました。イベントが自動的に追加されることはわかりませんでした。 – conman124

+0

ええ、それは本当に良い練習ではありません... – Lambart

0

あなたは、イベントハンドラへのparamaterとしてeventを持っていることになるでしょうし、それがevent.keyCodeではなくevent.keycode(ワットHICHはを不定となります)です。

var options = ["r", "p", "s"]; 
 
    
 
document.onkeyup = function(event) { 
 
    var userGuess = String.fromCharCode(event.keyCode).toLowerCase(); 
 

 
    console.log(userGuess); 
 

 
    var computerGuess = options[Math.floor(Math.random() * options.length)]; 
 

 
    console.log(computerGuess); 
 

 
    if (userGuess == "r" || userGuess == "p" || userGuess == "s") { 
 
     alert("Chosen Correctly - Good job!"); 
 
    } else { 
 
     alert("Please choose r, p, or s"); 
 
    } 
 
}

0

ちょっと変わってevent.keycodeevent.keyCode

関連する問題