diff --git a/table.html b/table.html
index 28488f5..9093fae 100644
--- a/table.html
+++ b/table.html
@@ -23,15 +23,6 @@
this.opponents = [];
this.gamesPlayed = [];
}
- Player.prototype.availablePlayers = function (players, game) {
- result = [];
- for (var player of players ) {
- if (!this.opponents.includes(player.name) &&
- !player.gamesPlayed.includes(game) ) //TODO en fonction du mode
- result.push(player);
- }
- return result;
- };
Player.prototype.addOpponents = function (players) {
for (var player of players ) {
if (player.name === this.name) {
@@ -44,7 +35,7 @@
- function compute() {
+ function compute() {
document.getElementById("results").innerHTML="";
players = [];
for (name of playerSet.slice(0,document.getElementById("players").value) ) {
@@ -57,56 +48,46 @@
session=1;
maxgameplayed = Math.floor(players.length / playerAtTable);
show ("Maximum "+ maxgameplayed + " parties joués en même temps
");
-
- var differentOponentMode = players.length >= playerAtTable * games.length ;
- if (differentOponentMode ) {
- showPass("Tous les joueurs pourront affronter des adversaires différents à chaque table");
- }else {
- showWarning("Certains joueurs s'affronteront plusieurs fois ");
- }
played ={};
for( const player of players ) {
played[player.name]={};
}
- while(!finished) {
+ while(!finished) { //a chaque session
show("
Session "+session +"
");
var tables=0;
playersAvailableInSession=players.slice();
- newTable=1;
- while(playersAvailableInSession.length >= playerAtTable
- && tables < maxgameplayed && newTable > 0) {
- newTable=0;
- for( const game of games ) {
- showDebug( "try for "+game+" players disponibles "+playersAvailableInSession.length +" ");
- possibleplayers= playersAvailableInSession[0].availablePlayers( playersAvailableInSession, game);
- showDebug ("players dispo " +possibleplayers.length + "
" );
+ gameThisSession=[];
- //youpi , une table faite
- if(possibleplayers.length >= playerAtTable ) {
- tablePlayer = possibleplayers.slice(0,playerAtTable) ;
- show( "table "+game+" : ");
- //showDebug ("tablePlayer : " +JSON.stringify(tablePlayer) ) ;
- for( const player of tablePlayer ) {
- played[player.name][game] = session;
- player.gamesPlayed.push(game);
- player.addOpponents(tablePlayer);
- show( player.name +", ");
- const index = playersAvailableInSession.indexOf(player);
- if (index > -1) {
- //showDebug("remove "+ player.name + " du pool de session
");
- playersAvailableInSession.splice(index, 1); // 2nd parameter means remove one item only
- }
- }
- show( "
");
- tables++;
- newTable++;
- }
+ essai=0;
+ while(tables < maxgameplayed && essai < 10) {
+ essai++;
+ selectedGame = findgame(playersAvailableInSession, gameThisSession);
+ showDebug( "try for " +selectedGame +", players disponibles "+playersAvailableInSession.length );
+ possibleplayers = chooseplayers(playersAvailableInSession, selectedGame);
- if(tables == maxgameplayed) {
- break;
- }
- }
+ showDebug ("players dispo " +possibleplayers.length + "
" );
+
+ //youpi , une table faite
+ if(possibleplayers.length >= playerAtTable ) {
+ tablePlayer = possibleplayers.slice(0,playerAtTable) ;
+ show( "table "+selectedGame+" : ");
+ //showDebug ("tablePlayer : " +JSON.stringify(tablePlayer) ) ;
+ for( const player of tablePlayer ) {
+ played[player.name][selectedGame] = session;
+ player.gamesPlayed.push(selectedGame);
+ player.addOpponents(tablePlayer);
+ show( player.name +", ");
+ const index = playersAvailableInSession.indexOf(player);
+ if (index > -1) {
+ //showDebug("remove "+ player.name + " du pool de session
");
+ playersAvailableInSession.splice(index, 1); // 2nd parameter means remove one item only
+ }
+ }
+ show( "
");
+ tables++;
+ gameThisSession.push(selectedGame);
+ }
}
show("