rem:/* @echo off :【Hit&Brow For Node.js】 : 本プログラムを動 […]
rem:/* @echo off :【Hit&Brow For Node.js】 : 本プログラムを動 […]
rem:/*@echo off:【Hit&Brow For Node.js】:本プログラムを動作させるには、:Node.jsがインストールされている必要があります。clsnode "%~f0" %*@goto :EOF */process.stdin.resume();process.stdin.setEncoding("utf8");(function main(){var active="head";var max,hit,blow,miss,count;var ans,anss=[];var user,users=[];console.log("【Hit&Blow】");head();process.stdin.on("data",function(data){data=data.replace(/\r\n$/,"");switch(active){case "head":console.log("");max=Number(data);ans="";count=0;if(isNaN(max)){console.log("数字で入力して下さい。");head();return;}if(10<max){console.log("桁数が大きすぎます。");head();return;}if(max<1){console.log("桁数が小さすぎます。");head();return;}for(var i=0;i<max;i++){rnds:while(1){anss[i]=Math.floor(Math.random()*10);for(var n=0;n<i;n++){if(anss[i]==anss[n]){continue rnds;}}break rnds;}ans+=anss[i];}b_head(max);active="body";break;case "body":hit=0;blow=0;miss=max;if(data.toLowerCase()=="z"){console.log("Give up...");console.log("Answer:"+ans);console.log("\nもう一回?(Y/N)");active="regame";return;}user=data;users=user.split("");if(users.length!=max){console.log("桁数が不当です。");b_head(max);return;}for(var i=0;i<max;i++){for(var n=0;n<max;n++){if(i!=n && users[i]==users[n]){console.log("各桁を異なる値にしてください。");b_head(max);return;}}if(isNaN(users[i])){console.log("数字のみを入力して下さい。");b_head(max);return;}}count++;for(var i in users){if(anss[i]==users[i]){hit++;miss--;}else{for(var n in users){if(anss[i]==users[n]){blow++;miss--;}}}}console.log("-> "+count+":"+hit+"hit "+blow+"blow "+miss+"miss");if(hit==max){console.log("All hit!\nCongratulation!!\n");console.log("もう一回?(Y/N)");active="regame";return;}break;case "regame":console.log("");var end=data;if(end.toLowerCase()=="n"){console.log("Good game playing!");active="exit";return;}head();active="head"break;case "exit":process.exit();}});})();function head(){console.log("桁数を入力してね。");}function b_head(max){console.log(max+"桁の数字を入力してね。(zでギブアップ)");}