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

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

ただいまの
回答率

90.52%

  • JavaScript

    16373questions

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

javascriptでジャンケンゲーム(勝敗の表示)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 511

sakeota

score 5

javascriptの練習としてジャンケンゲームを作っています。
入力フォームに
①「グー、チョキ、パー」のいづれかをクリックすると、
②①に反応して、乱数で「グー、チョキ、パー」のいづれかが表示され、
③①と②の値に応じて、勝敗を表示させたいです。

今のところ、①②までは出来たのですが、③の部分で、②で表示された値の定義、渡し方がうまくいきません。

js部分の②の値の渡し方について、アドバイスいただけると助かります。

html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>じゃんけん</title>
    <link rel="stylesheet" href="css/styles2.css">
</head>
<body>
    <div>
        <label for="janken">ジャンケン</label>
        <input type="text" id="janken" />
    </div>
    <div class="button" >
        <button type="submit" id="btnclient">ポン!</button>
    </div>


    <div id="btnresult">?</div>
    <p id="result">
    <script src="js/main2.js"></script>
</body>
</html>
```javascript  
(function(){  
'use strict';  

var btnclient= document.getElementById('btnclient');  
var btnresult= document.getElementById('btnresult');  
var result= document.getElementById('result');  
var jankenForm = document.getElementById('janken');  
var janpon = jankenForm.value;  
var resultForm = document.getElementById('btnresult');  



btnclient.addEventListener('click', function(){  
// var n= Math.random();  
// if(n<0.33){  
//     btnresult.textContent ='グー';  
// }else if(n<0.67){  
//     btnresult.textContent = 'チョキ';  
// }else{  
//     btnresult.textContent = 'パー';  
// }  

var shape;  
var n;  
if (n < 1 / 3) {  
shape = 'グー';  
} else if (n < 2 / 3) {  
shape  = 'チョキ';  
} else {  
shape  = 'パー';  
}  
btnresult.innerHTML = shape;  



if(shape == "パー" && janken =="チョキ"){  
result.innerHTML = "勝ち!"  
} else if (shape == "グー" && janken =="パー")   
{result.innerHTML = "勝ち!"}  
else if (shape == "チョキ" && janken =="グー")   
{result.innerHTML = "勝ち!"}  
else if (shape == "パー" && janken =="グー")   
{result.innerHTML = "負け!"}  
else if (shape == "グー" && janken =="チョキ")   
{result.innerHTML = "負け!"}  
else if (shape == "チョキ" && janken =="パー")   
{result.innerHTML = "負け!"}  
else{  
result.innerHTML = "あいこ"  
}  

        
// var btnResult = resultForm.value;  




});  

jankenForm.addEventListener('click', function(){  
this.select();  
});  
})();  
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

①「グー、チョキ、パー」のいづれかをクリックすると、

コードを見る限り、ボタンではなくテキストボックスに入力する形になってますが...。

②で表示された値の定義、渡し方がうまくいきません。

ランダムで生成した手を変数に入れればよいのでは?

    var shape;
    if (n < 1 / 3) {
      shape = 'グー';
    } else if (n < 2 / 3) {
      shape  = 'チョキ';
    } else {
      shape  = 'パー';
    }
    btnresult.innerHTML = shape;

if(btnResult = "パー" && janken ="チョキ"){

=ではなく==ですね。

追記 2017/11/04 19:29

var n;  


これではnに数字も何も入ってないですよね。もともとあった

var n = Math.random(); 


を入れればよいのでは?

また、jankenが定義されていないです。janponのつもりで書いていると思うのですが。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/04 15:05

    ありがとうございます。
    =を==に直したところ、エラー文は消えたのですが、var shapeを定義しても、「あいこ」以外の結果表示がうまくいきません。
    テキストボックスに入れているキーの渡し方がよくないのでしょうか。

    javascript
    >>
    btnclient.addEventListener('click', function(){

    var shape;
    var n;
    if (n < 1 / 3) {
    shape = 'グー';
    } else if (n < 2 / 3) {
    shape = 'チョキ';
    } else {
    shape = 'パー';
    }
    btnresult.innerHTML = shape;



    if(shape == "パー" && janken =="チョキ"){
    result.innerHTML = "勝ち!"
    } else if (shape == "グー" && janken =="パー")
    {result.innerHTML = "勝ち!"}
    else if (shape == "チョキ" && janken =="グー")
    {result.innerHTML = "勝ち!"}
    else if (shape == "パー" && janken =="グー")
    {result.innerHTML = "負け!"}
    else if (shape == "グー" && janken =="チョキ")
    {result.innerHTML = "負け!"}
    else if (shape == "チョキ" && janken =="パー")
    {result.innerHTML = "負け!"}
     else{
    result.innerHTML = "あいこ"
    }

      




    });

    キャンセル

  • 2017/11/04 15:53

    var n; に何も代入していないのでは...?
    質問文に全コードを載せてもらえますか?

    キャンセル

  • 2017/11/04 18:15

    質問文を更新して、コードを全て記載しました。ありがとうございます。

    キャンセル

  • 2017/11/04 20:52

    開発者コンソールを使えばエラーなどをチェックできるので活用してください。

    キャンセル

  • 2017/11/04 21:54

    有り難うございました。最終的に、var n;の定義を戻したのと、var janpon = jankenForm.value;をaddEventListenerの中に定義したら、思い通りの結果になりました。
    今回、==を=に直していたときには、コンソールでエラーが出ていたのですが、それ以外は、elseに記載があったからか、エラーが出ませんでした。
    htmlは、変更していませんが、jsのコードは最終的に以下に変更しました。
    沢山ご教示いただき、有り難うございました。

    >>jsのコード
    (function(){
    'use strict';

    var btnclient= document.getElementById('btnclient');
    var btnresult= document.getElementById('btnresult');
    var result= document.getElementById('result');
    var jankenForm = document.getElementById('janken');

    var resultForm = document.getElementById('btnresult');



    btnclient.addEventListener('click', function(){
    // var n= Math.random();
    // if(n<0.33){
    // btnresult.textContent ='グー';
    // }else if(n<0.67){
    // btnresult.textContent = 'チョキ';
    // }else{
    // btnresult.textContent = 'パー';
    // }
    var janpon = jankenForm.value;
    var shape;
    var n = Math.random();
    if (n < 1 / 3) {
    shape = 'グー';
    } else if (n < 2 / 3) {
    shape = 'チョキ';
    } else {
    shape = 'パー';
    }
    btnresult.innerHTML = shape;



    if(shape == "パー" && janpon =="チョキ"){
    result.innerHTML = "勝ち!"
    } else if (shape == "グー" && janpon =="パー")
    {result.innerHTML = "勝ち!"}
    else if (shape == "チョキ" && janpon =="グー")
    {result.innerHTML = "勝ち!"}
    else if (shape == "パー" && janpon =="グー")
    {result.innerHTML = "負け!"}
    else if (shape == "グー" && janpon =="チョキ")
    {result.innerHTML = "負け!"}
    else if (shape == "チョキ" && janpon =="パー")
    {result.innerHTML = "負け!"}
     else{
    result.innerHTML = "あいこ"
    }

      
    // var btnResult = resultForm.value;




    });

    jankenForm.addEventListener('click', function(){
    this.select();
    });
    })();

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    JavaScriptを使ってツイッターに投稿したい

    5秒当てゲームのようなものをつくっています 自分のタイムをツイッターに投稿できるようにしたいのですが、ゲームの関数とツイートする関数が別なため、タイムをtwitTexを関数に

  • 解決済

    ランキングの同順の処理

    var array = {"Aさん":20,"Bさん":30,"Cさん":30,"Dさん":50} 上の配列から以下のように出力するにはどうすれば良いのでしょうか? 数値の高い

  • 受付中

    javascriptのon clickイベントで関数以外を実行させたい

    on clickイベントで $("startButton").onclick =  start() のようにスタートボタンを押したら関数を実行させたいのですが、 スタートボタンを押

  • 解決済

    JavaScriptで要素の値を取得するには

    前提・実現したいこと 要素の値を取得して値によって条件分岐を行いたい。 発生している問題 var hoge = document.getElementById('hoge');

  • 解決済

    ボタンをクリックして表示される文字列を条件分岐して表示させたい

    テキストボックスに数値を入力して、その値によって文字列を表示したいです。 しかし、どの値を入れても、最初の条件にマッチし、「軽すぎ」としか表示されません。 おまけに、formタグの

  • 解決済

    javascript removeが効かない問題

    現在、htmlとjavascriptで、コメントフォームを作っています。 作成にあたって問題が発生したので、その原因と対策法をうかがいたく、質問させていただきます。 まず、下の

  • 解決済

    JavaScriptでクイズ作成(結果によりボタンを表示)

    前提・実現したいこと JavaScriptで以下のようなクイズを作成したいと思っています。 問題を表示(ラジオボタン)→ 正解を選択→ 結果によりボタンを表示 【2問とも正解を

  • 解決済

    javascriptで "replace is not a function" と出る

    目的 javascriptで全角英数字を半角英数字に変換するアプリを作ろうとしています. replaceメソッドを使って全角文字を半角文字に変換しようとしているのですが,"repl

同じタグがついた質問を見る

  • JavaScript

    16373questions

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