2018 ソフトウェア設計及び演習用の班Wiki
18::gr08::newroom
設定画面モジュール
NRcreatselect(obj,i)
-
引数
- obj :セレクトボックスのid
- i :選択済みにしたい選択肢番号
- 操作
- id:objのセレクトボックスに選択肢を作成し、i番を選択肢を選択済みにする
- 戻り値なし
NRconversion1()
-
引数
- 配列
- 操作
-
配列を、格納されている数だけ添字を格納した配列に変換する(今はalluserを格納した添字0は除外)
- 例 array1 = [7,2,1,1,3] ⇒ array2 = [1,1,2,3,4,4,4]
-
配列を、格納されている数だけ添字を格納した配列に変換する(今はalluserを格納した添字0は除外)
- 戻り値
- 変換後の配列
プログラム
newroom.html
<!DOCTYPE html> <html> <head> <meta charset = "UTF-8" /> <title>newroom</title> <script src="/socket.io/socket.io.js"></script> <link rel="stylesheet" href="button.css" type="text/css"> <link rel="stylesheet" href="play-day-background.css" type="text/css"> <link rel="stylesheet" href="moji.css" type="text/css"> </head> <body> <audio src="click.wav" preload="auto" autoplay ></audio> <audio src="start1.wav" preload="auto" autoplay loop ></audio> <audio id="sound" preload="auto"> <source src="click.wav" type="audio/wav"> </audio><br> <script type="text/javascript"> function sound() { // [ID:sound]の音声ファイルを再生[play()]する document.getElementById( 'sound' ).play() ; } </script> <style type="text/css"> body{ font-family: font-demo1; font-size: 22px; } </style> <center> <br><br><br><br><br><br> <h1>新しい部屋を作ります</h1> <br><br><br> 参加人数は <select id="NRselect1" onchange="NRchange1()"> <option>---</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> <option>9</option> <option>10</option> </select>人 <br /><br /><br> <table style="border-style: none;"> <tr><td>1 赤ずきん </td><td><select id="NRselect2" onchange="NRchange2()"></select>人</td></tr> <tr><td>2 パンずきん </td><td><select id="NRselect3" onchange="NRchange2()"></select>人</td></tr> <tr><td>3 エスパーずきん </td><td><select id="NRselect4" onchange="NRchange2()"></select>人</td></tr> <tr><td>4 ゴーストずきん </td><td><select id="NRselect5" onchange="NRchange2()"></select>人</td></tr> <tr><td>5 スーパーずきん </td><td><select id="NRselect6" onchange="NRchange2()"></select>人</td></tr> <tr><td>6 サイコずきん </td><td><select id="NRselect7" onchange="NRchange2()"></select>人</td></tr> <tr><td>7 ウルフずきん </td><td><select id="NRselect8" onchange="NRchange2()"></select>人</td></tr> </table><br /> <br><br><br> <p><a onclick="main()" href="#" class="square_btn" >決定</a></p> <p id ="dec"> <br></p> <br><br><br><br> </center> <script type="text/javascript" src="./newroom.js" charset = "UTF-8"></script> </body> </html>
newroom.js
var NRcharaDef = [ //デフォルト数 //全体数 あか パン エスパー ゴースト スーパー サイコ ウルフ [0, 0,0,0,0,0,0,0], [4, 1,1,1,0,0,0,1], [5, 2,1,1,0,0,0,1], [6, 2,1,1,0,0,1,1], [7, 3,1,1,0,0,1,1], [8, 1,1,1,1,1,1,2], [9, 2,1,1,1,1,1,2], [10,3,1,1,1,1,1,2] ]; var socketio = io.connect(); function main(){ socketio.emit("roomcreate?",0); } socketio.on("roomcreate?",function(data){ if(data.value == "yes"){ document.getElementById("dec").innerHTML = "部屋はすでに作られています"; }else if(data.value == "no"){ var NRchara = NRselectNUM(); var NRsum = NRchange2(); var NRprovarray = NRconversion1(NRchara); var NRvar = NRconversion2(NRprovarray); var check = NRdecide(NRsum , NRchara); if(check == 1){ socketio.emit("shuffle", {value: NRvar}); window.location ="user.html"; } } }); function NRselectNUM(){ var NRchara = [ document.getElementById("NRselect1").selectedIndex,//alluser document.getElementById("NRselect2").selectedIndex,//aka document.getElementById("NRselect3").selectedIndex,//pan document.getElementById("NRselect4").selectedIndex,//espa- document.getElementById("NRselect5").selectedIndex,//go-suto document.getElementById("NRselect6").selectedIndex,//su-pa- document.getElementById("NRselect7").selectedIndex,//saiko document.getElementById("NRselect8").selectedIndex//uruhu ]; return NRchara; } function NRchange1(){ var NRall = document.getElementById("NRselect1").selectedIndex; for(var i=0;i<8;i++){ if(NRall == i){ NRchara0 = NRcharaDef[i]; } } NRcreatselect("NRselect2",1); NRcreatselect("NRselect3",2); NRcreatselect("NRselect4",3); NRcreatselect("NRselect5",4); NRcreatselect("NRselect6",5); NRcreatselect("NRselect7",6); NRcreatselect("NRselect8",7); document.getElementById("dec").innerHTML = "<br>"; } function NRcreatselect(obj,i){ var NRselect = document.getElementById(obj); for(var j=0;j<10;j++){ if(obj != "NRselect2" && obj != "NRselect8" && j==2){ break; }else if(obj == "NRselect8" && j==4){ break; } NRselect.options[j] = new Option(j); if(j == NRchara0[i]){ NRselect.options[j].selected = true; } } } function NRchange2(){ var NRchara = NRselectNUM(); var NRsum1 = 0,NRsum2 = 0; for(var i=1;i<8;i++){ NRsum1 += NRchara[i]; if(i<6){ NRsum2 += NRchara[i]; } } if(NRsum1 >= 4 && NRsum1 <= 10){ document.getElementById("NRselect1").selectedIndex = NRsum1 - 3; document.getElementById("dec").innerHTML = "<br>"; return NRsum2; } else{ document.getElementById("dec").innerHTML = "設定可能な参加人数は4~10人です"; return -1; } } function NRconversion1(NRchara){ var i=0; var JOchara=[]; for(var j=1;j<NRchara.length;j++){ for(var k=0;k<NRchara[j];k++){ JOchara[i] = j; i++; } } return JOchara; } function NRconversion2(NRprovarray){ var NRprovvalue; for(var i=NRprovarray.length - 1;i>0;i--){ var j = Math.floor( Math.random() * ( i+1 ) ); NRprovvalue = NRprovarray[j]; NRprovarray[j] = NRprovarray[i] NRprovarray[i] = NRprovvalue; } var NR=''; for(var i=0;i<NRprovarray.length - 1;i++){ NR += NRprovarray[i] + ","; } NR += NRprovarray[NRprovarray.length -1]; return NR; } function NRdecide(NRsum , NRchara){ var message = document.getElementById("dec"); if(NRchara[0] == 0){ message.innerHTML = "参加人数を選択してください"; return 0 } else if(NRchara[7] == 0){ message.innerHTML = "ウルフずきんは一人以上必要です"; } else if(NRsum < 0){return 0;} else if(NRchara[7] >= NRsum){ message.innerHTML = "村人の半数以上をウルフが占めています"; return 0; } else{ message.innerHTML = "ユーザー登録に移行します"; return 1; } }
最終更新日:2018/08/03 12:25:54