前提・実現したいこと
数字当てをするゲームを作成しています。
ユーザーは6個の数字を、コンピュータは6個の数字+1個の別枠数字を生成します(それぞれ被りなし、1〜43まで)。
知りたいことは、ユーザーが入力した数字と、コンピュータが生成した数字がいくつ合ってたら何等、いくつ合ってたら何等...という条件分岐のやり方です。
全部で1等〜5等を想定しており、
1等 ⇨ ユーザーが入力した6個の数字とコンピュータが生成した6個(別枠以外)が一致
2等 ⇨ ユーザーが入力した6個の数字の内5個はコンピュータが生成した6個(別枠以外)の内の5個と一致、ユーザー数字の残り1個は別枠数字と一致
3等 ⇨ ユーザーが入力した数字6個の内5個がコンピュータが生成した6個(別枠以外)と一致
4等 ⇨ ユーザーが入力した数字6個の内4個がコンピュータが生成した6個(別枠以外)と一致
5等 ⇨ ユーザーが入力した数字6個の内3個がコンピュータが生成した6個(別枠以外)と一致
上記は 「順不同」として想定しています。
ボーナス数字は2等の判定時のみに使用します。
発生している問題・エラーメッセージ
条件分岐の仕方がわからないので、ヒントをいただきたいです。
該当のソースコード
//ユーザーが入力した数字を配列に格納、これ以前に被りを省くようにしているので被らない数字が入っています var user_array = []; for ( var i = 1; i <= 6 ; i++ ) { user_array.push(document.getElementById('number' + i).value); } //コンピュータが生成する数字7個を配列に格納 var com_array = []; var min = 1, max = 43; var length = 7; function intRandom(min, max){ return Math.floor( Math.random() * (max - min + 1)) + min; } for(i = min; i <= length; i++){ while(true){ var tmp = intRandom(min, max); if(!com_array.includes(tmp)){ com_array.push(tmp); break; } } } // ここがわかりません if(user_array.sort().join() == com_array.slice(0,5).sort().join()){ result.innerHTML ='1等'; }else if(){ result.innerHTML ='2等'; }else if(){ result.innerHTML ='3等'; }else if(){ result.innerHTML ='4等'; }else if(){ result.innerHTML ='5等'; }else{ result.innerHTML ='はずれ'; }
試したこと
コンピュータの生成した数字は7個目を別枠数字として考えています。
1等の条件分岐は自身で考えましたが、合っているかの確認はできていません。
回答1件
あなたの回答
tips
プレビュー