前提・実現したいこと
ユーザーが数字を入力し、コンピューターがランダムに生成した数字と一致したら当たりになるプログラムにおいて、入力する数字を5個で作成したいと考えています。
下のコードは数字2つに対応しています。
こういった場合、数字を3つ増やすと単純に記述量が増えるとは思うのですが、なるべく少ない記述で完成させるにはどの部分にどういった工夫を凝らすのが一般的なのでしょうか?
1番増えるのはelse ifの条件部分だと思うのですが(コードでは「前後賞」ですが、数字を5つにしたら順不同で5つ一致した場合も「小当たり」にしたいです)、ここを全通り書かなくても済む考え方などがあればヒントをいただきたいです。
<form> <input type="text" id="number1" value="" onblur="check1()"><br> <input type="text" id="number2" value="" onblur="check1()"><br> <p id="error1"></p><br> <input type="button" id="btn" value="チェック" onclick="click()"><br><br> </form> USER :[<span id="user1">   </span>] [<span id="user2">   </span>] <br> <br> COM : [<span id="com1">   </span>] [<span id="com2">   </span>] <p id="result"></p> var btn = document.getElementById('btn'); btn.disabled = true; function check1(){ var btn = document.getElementById("btn"); var number1 = document.getElementById("number1").value; var number2 = document.getElementById("number2").value; if(number1.match(/^[0-9]{1}$/) && number2.match(/^[0-9]{1}$/)){ btn.disabled = false; error1.innerHTML = ' ' }else if(!number1.match(/^[0-9]{1}$/) || !number2.match(/^[0-9]{1}$/)){ error1.innerHTML = '0から9の半角数字を2つ入力してください' } } function click(){ var number1 = document.getElementById("number1").value; var number2 = document.getElementById("number2").value; var user1 = document.getElementById("user1"); var user2 = document.getElementById("user2"); var com1 = document.getElementById("com1"); var com2 = document.getElementById("com2"); var result = document.getElementById('result'); var random1 = Math.floor( Math.random() * 11); var random2 = Math.floor( Math.random() * 11); user1.innerHTML = number1; user2.innerHTML = number2; com1.innerHTML = random1; com2.innerHTML = random2; if(number1 === random1 && number2 === random2){ result.innerHTML = "当たり";} else if(number1 === random2 && number2 === random1) { result.innerHTML="前後賞"; }else{ result.innerHTML="はずれ"; } }
試したこと
配列が使えるかな、と考え色々と調べているのですが、良い考えが浮かびません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/04/25 09:28