質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4345閲覧

じゃんけんの判定をしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/10/28 11:08

編集2017/10/28 16:03

度々質問失礼します.
じゃんけんのプログラムを作成していて,出た手によって勝ち負けの判定を出力したいです.

ユーザの各手を0,1,2で表し,PCの手はarrの0,1,2で表して計算により勝ち負けを判定できると思ったのですが,今のところエラーや勝ち負けの結果も何も出ません.
どこがおかしいのでしょうか.

javascript

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8" /> 5 <title>じゃんけん</title> 6</head> 7<body> 8 <p> 9 <input type="button" value="start" onclick="toggle()" /> 10 PCの手:<span id="pchand"></span> 11 </p> 12 <p> 13 <input type="button" value="グー" onclick="serect_hand(0)"/> 14 <input type="button" value="チョキ" onclick="serect_hand(1)"/> 15 <input type="button" value="パー" onclick="serect_hand(2)"/> 16 あなたの手:<span id="userhand"></span> 17 </p> 18 <p> 19   <input type="button" value="結果" onclick="result()"/> 20 結果:<span id="kekka"></span> 21 </p> 22 <p> 23 <input type="button" id="reset" value="リセット" onclick="reset()"/> 24 </p> 25 26 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> 27 <script> 28 //PC側:ランダムにグー,チョキ,パー出力 29 var view=document.getElementById("pchand"); 30 var pc_hand; 31 var running=false; 32 var intervalID; 33 var usernohand; 34 35 function toggle(){ 36 intervalID=setInterval(pc_hand,250); //pc_hand関数を250ミリ秒ごとに繰り返す 37 running=true; 38 }; 39 function pc_hand(){ 40 var arr=["グー","チョキ","パー"]; 41 var pcnohand=Math.floor(Math.random()*arr.length); 42 console.log(arr[pcnohand]); 43 view.textContent=arr[pcnohand]; 44   //console.log(arr[0]); //グー 45 // var pc0=arr.lastIndexOf('グー'); 46 // var pc1=arr.lastIndexOf('チョキ'); 47 // var pc2=arr.lastIndexOf('パー'); 48 // console.log(pc0); //0 49 // console.log(pc1); //1 50 // console.log(pc2); //2 51 }; 52 53 //ユーザ側:ボタンを押したらPCの手が止まる,選んだ手を出力 54 function serect_hand(usernohand){ 55 if(usernohand==0){ 56 document.getElementById("userhand").innerHTML="グー"; 57 clearInterval(intervalID); 58 running=false; 59 }else if (usernohand==1) { 60 document.getElementById("userhand").innerHTML="チョキ"; 61 clearInterval(intervalID); 62 running=false; 63 }else if (usernohand==2) { 64 document.getElementById("userhand").innerHTML="パー"; 65 clearInterval(intervalID); 66 running=false; 67 } 68 console.log("ユーザ:"+usernohand); //0,1,2 69 }; 70 71 //結果:ユーザの勝敗 72 function result(){ 73 if(pc_hand(arr[0])-usernohand==0){ 74 document.getElementById("kekka").innerHTML="あいこ"; 75 }else if (pc_hand(arr[1])-usernohand==1) { 76 document.getElementById("kekka").innerHTML="あなたの勝ち"; 77 }else if (pc_hand(arr[2])-usernohand==2) { 78 document.getElementById("kekka").innerHTML="あなたの負け"; 79 } 80 }; 81 82 //リセットボタンで初期化 83 function reset(){ 84 document.getElementById("pchand").innerHTML=""; 85 document.getElementById("userhand").innerHTML=""; 86 document.getElementById("kekka").innerHTML=""; 87 }; 88 </script> 89</body> 90</html> 91

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

lang

1function result() { 2 if (pc_hand(arr[0]) - usernohand == 0) { 3 document.getElementById("kekka").innerHTML = "あいこ"; 4 } else if (pc_hand(arr[1]) - usernohand == 1) { 5 document.getElementById("kekka").innerHTML = "あなたの勝ち"; 6 } else if (pc_hand(arr[2]) - usernohand == 2) { 7 document.getElementById("kekka").innerHTML = "あなたの負け"; 8 } 9};

まずresult内でarrを参照しようとしていますがpc_hand内で宣言されてるのでムリです。

また、pc_hand(arr[0])というのは何を期待しているのでしょうか。関数pc_handは引数が0個ですから渡しても無意味です。おそらく現在のPCの手を取得したいのだと思いますが、intervalIDと同様にグローバル変数を使用すればいいのではないでしょうか。

投稿2017/10/28 16:23

karamarimo

総合スコア2551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/29 09:52

グローバル変数にするのを試したところできました!ありがとうございました.
guest

0

とりあえず result() がどこでも実行されていません。

投稿2017/10/28 12:36

kei344

総合スコア69366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/28 15:14

そうでした.結果ボタンを作って,結果ボタンを押すと勝敗が表示されるようにしたいと思います. arrが定義されていないというエラーが出るので,arrをグローバル変数にしたりしてみましたがエラーは消えませんでした.勝敗判定での,配列を使って計算の仕方が上手くできていないと思うのですが. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>じゃんけん</title> </head> <body> <p> <input type="button" value="start" onclick="toggle()" /> PCの手:<span id="pchand"></span> </p> <p> <input type="button" value="グー" onclick="serect_hand(0)"/> <input type="button" value="チョキ" onclick="serect_hand(1)"/> <input type="button" value="パー" onclick="serect_hand(2)"/> あなたの手:<span id="userhand"></span> </p> <p> <input type="button" value="結果" onclick="result()"/> 結果:<span id="kekka"></span> </p> <p> <input type="button" id="reset" value="リセット" onclick="reset()"/> </p> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script> //PC側:ランダムにグー,チョキ,パー出力 var view=document.getElementById("pchand"); var pc_hand; var running=false; var intervalID; var usernohand; function toggle(){ intervalID=setInterval(pc_hand,250); //pc_hand関数を250ミリ秒ごとに繰り返す running=true; }; function pc_hand(){ var arr=["グー","チョキ","パー"]; var pcnohand=Math.floor(Math.random()*arr.length); console.log("PC:"+arr[pcnohand]); //グー,チョキ,パー view.textContent=arr[pcnohand]; //console.log(arr[0]); //グー // var pc0=arr.lastIndexOf('グー'); // var pc1=arr.lastIndexOf('チョキ'); // var pc2=arr.lastIndexOf('パー'); // console.log(pc0); //0 // console.log(pc1); //1 // console.log(pc2); //2 }; //ユーザ側:ボタンを押したらPCの手が止まる,選んだ手を出力 function serect_hand(usernohand){ if(usernohand==0){ document.getElementById("userhand").innerHTML="グー"; clearInterval(intervalID); running=false; }else if (usernohand==1) { document.getElementById("userhand").innerHTML="チョキ"; clearInterval(intervalID); running=false; }else if (usernohand==2) { document.getElementById("userhand").innerHTML="パー"; clearInterval(intervalID); running=false; } console.log("ユーザ:"+usernohand); //0,1,2 }; //結果:ユーザの勝敗 function result(){ if(pc_hand(arr[0])-usernohand==0){ document.getElementById("kekka").innerHTML="あいこ"; }else if (pc_hand(arr[1])-usernohand==1) { document.getElementById("kekka").innerHTML="あなたの勝ち"; }else if (pc_hand(arr[2])-usernohand==2) { document.getElementById("kekka").innerHTML="あなたの負け"; } }; //リセットボタンで初期化 function reset(){ document.getElementById("pchand").innerHTML=""; document.getElementById("userhand").innerHTML=""; document.getElementById("kekka").innerHTML=""; }; </script> </body> </html>
kei344

2017/10/28 15:18

コメントエリアではマークダウンが使えないため、コードはここではなく質問文に追記してください。(決して元のコードを消さないでください)
退会済みユーザー

退会済みユーザー

2017/10/28 16:21

ご指摘ありがとうございます!質問文に追記しました
kei344

2017/10/28 16:25 編集

「決して元のコードを消さないでください」と書いたつもりですが。あとからこのページに来た人がやり取りを見ることを前提で編集してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問