В день таких уведомлений будет до 300
var idCount = 0;
class Player{
constructor(name){
this.id = ++idCount;
this.name = name||`bot ${this.id}`;
}
nextChoise(){
this.choise = ["камень","ножницы","бумага"][Math.floor(Math.random()*3)];
return this.choise;
}
}
class Game{
constructor(){
this.members = [];
this.tour=0;
this.choiseDiffs={
"камень": {win:"ножницы", fall:"бумага"},
"ножницы": {win:"бумага", fall:"камень"},
"бумага": {win:"камень", fall:"ножницы"},
}
}
addMember(member){
if(member instanceof Player){
this.members.push(member);
}
}
nextTour(){
console.log("тур №", ++this.tour);
console.log("Участники", this.members.map(player=>player.name).join(", "));
this.members.forEach(player=>console.log(player.name, "->", player.nextChoise()));
const falls = [];
const list = this.members.filter(player=>{
return this.members.every(enemy=>{
if(this.choiseDiffs[player.choise].fall===enemy.choise){
falls.push(player);
return false;
}
return true;
});
});
if(!list.length){
console.log("игра продолжается. тур завешился ничьей.");
return true;
}else if(list.length>1){
console.log("игра продолжается. часть игроков покидает нас:", falls.map(player=>player.name).join(", "));
this.members = list;
return true;
}else{
this.members = list;
console.log("игра завершена. победил игрок:", list[0].name)
return false;
}
}
}
const game = new Game();
for(var i=0;i<3;i++){
const player = new Player();
game.addMember(player);
}
while(game.nextTour()){}
тур № 1
Участники bot 1, bot 2, bot 3
bot 1 -> бумага
bot 2 -> камень
bot 3 -> ножницы
игра продолжается. тур завешился ничьей.
тур № 2
Участники bot 1, bot 2, bot 3
bot 1 -> ножницы
bot 2 -> камень
bot 3 -> камень
игра продолжается. часть игроков покидает нас: bot 1
тур № 3
Участники bot 2, bot 3
bot 2 -> ножницы
bot 3 -> бумага
игра завершена. победил игрок: bot 2