2018 ソフトウェア設計及び演習用の班Wiki

18::gr08::stay.html

stay.html

・投票済のプレイヤーに表示される
・ページが表示されたことをサーバーへ送信
・生存しているプレイヤー全員が揃ったらページ遷移する

Screenshot from 2018-08-02 23-29-50.png

stay_night.html

・夜行動済/夜行動がないプレイヤーに表示される
・ページが表示されたことをサーバーへ送信
・生存しているプレイヤー全員が揃って、夜の行動結果の確認が全員済んだら任意のページへ遷移する

待機中 Screenshot from 2018-08-02 23-30-28.png 夜行動の結果表示 Screenshot from 2018-08-02 23-30-55.png

vnum_req / vnum(app.js)

  • プレイヤー数から死者数を除いて生存者数x を求める
  • stay.html/stay_night.htmlが表示された人数v_num を加算していく
  • 投票者数v_num が生存者数x と等しくなったら
    • v_numを0で初期化
    • 夜画面から遷移した場合はウルフずきんに襲われた人を脱落させる
//x:生きてるプレイヤー数
function live(){
    var x = numOfuser;
    for(var i = 0; i < numOfuser; i++){
	if(user[i].lod == 1){
	    x--;
	}
    }
    return x;
}


//投票が終わったプレイヤー数
    socket.on("vnum_req", function(){
	var nd = "";
        var x = live();
	v_num = v_num + 1;
	if(v_num == x){
	    v_num = 0;
		s = 20;
		w = 30;
	    for(var i = 0; i < numOfuser; i++){
		if(user[i].lod == 2){
		    nd = user[i].name;
		    user[i].lod = 1;
		}
	    }
            io.sockets.emit("vnum", {nd: nd});
        }
    });

    //確認が終わったプレイヤー数
    socket.on("n_ok", function(){
	var win, wolf = 0;
	v_num = v_num + 1;
	x = live();
	if(v_num == nx){
	    v_num = 0;
	    for(var i = 0; i < numOfuser; i++){
		if(user[i].work == 7 && user[i].lod == 0){
		    wolf++;
		}
	    }
	    var human = nx - wolf;
	    if(human > wolf){
		win = 0;
	    }else if(human <= wolf){
		win = 1;
		winjudge();
	    }
            io.sockets.emit("v_ok", win);
            f=0;
            
	}
    });


最終更新日:2018/08/09 15:52:49