diff --git a/Sources/ConsoleApp/Program.cs b/Sources/ConsoleApp/Program.cs
index 9f8281d..73733cc 100644
--- a/Sources/ConsoleApp/Program.cs
+++ b/Sources/ConsoleApp/Program.cs
@@ -14,7 +14,7 @@ namespace ConsoleApp
[ExcludeFromCodeCoverage]
public static class Program
{
- public static Manageur Manageur { get; private set; } = new Manageur(new PersistanceJSON());
+ public static Manageur Manageur { get; private set; } = new Manageur(new PersistanceJson());
public static void Main()
{
diff --git a/Sources/ConsoleApp/Utils.cs b/Sources/ConsoleApp/Utils.cs
index 09e929a..070b3c8 100644
--- a/Sources/ConsoleApp/Utils.cs
+++ b/Sources/ConsoleApp/Utils.cs
@@ -100,7 +100,7 @@ namespace ConsoleApp
/// Le plateau de jeu.
public static void DessinerPlateau(Plateau plateau)
{
- (IReadOnlyList> codes, IReadOnlyList> indicateurs) = plateau.Grille;
+ (IEnumerable> codes, IEnumerable> indicateurs) = plateau.Grille;
int tailleGrille = 2 + plateau.TailleMaxCode * 3;
@@ -109,14 +109,14 @@ namespace ConsoleApp
for (int i = 0; i < plateau.TailleMax; ++i)
{
- if(i >= codes.Count)
+ if(i >= codes.Count())
{
Console.WriteLine($"│{new string(' ', tailleGrille)}│ │{new string(' ', tailleGrille)}│");
continue;
}
- IReadOnlyList ligneCodes = codes.ElementAt(i);
- IReadOnlyList ligneIndicateurs = indicateurs.ElementAt(i);
+ IEnumerable ligneCodes = codes.ElementAt(i);
+ IEnumerable ligneIndicateurs = indicateurs.ElementAt(i);
Console.Write("│");
diff --git a/Sources/CoreLibrary/Core/Jeton.cs b/Sources/CoreLibrary/Core/Jeton.cs
index b6cefe4..ff3206b 100644
--- a/Sources/CoreLibrary/Core/Jeton.cs
+++ b/Sources/CoreLibrary/Core/Jeton.cs
@@ -13,12 +13,12 @@ namespace CoreLibrary.Core
Couleur = couleur;
}
- public override readonly bool Equals(object? objet)
+ public override readonly bool Equals(object? obj)
{
- if (objet == null || objet is not Jeton)
+ if (obj is not Jeton)
return false;
- return Couleur == ((Jeton)objet).Couleur;
+ return Couleur == ((Jeton)obj).Couleur;
}
public static bool operator ==(Jeton gauche, Jeton droite) => gauche.Equals(droite);
diff --git a/Sources/CoreLibrary/Core/Plateau.cs b/Sources/CoreLibrary/Core/Plateau.cs
index 02a38a4..f8b3321 100644
--- a/Sources/CoreLibrary/Core/Plateau.cs
+++ b/Sources/CoreLibrary/Core/Plateau.cs
@@ -27,8 +27,8 @@ namespace CoreLibrary.Core
public bool Complet => Taille == TailleMax;
[DataMember]
public bool Victoire { get; private set; } = false;
- public (IReadOnlyList>, IReadOnlyList>) Grille => (
- codes.Select(code => code.Jetons).ToList(),
+ public (IEnumerable>, IEnumerable>) Grille => (
+ codes.Select(code => code.Jetons),
indicateurs
);
@@ -70,10 +70,10 @@ namespace CoreLibrary.Core
throw new GrilleCompleteException();
codes.Add(code);
- IReadOnlyList indicateurs = codeSecret.Comparer(code);
- this.indicateurs.Add(indicateurs.ToList());
+ IReadOnlyList indicateursCode = codeSecret.Comparer(code);
+ indicateurs.Add(indicateursCode.ToList());
- if (!Victoire && indicateurs.Count(indicateur => indicateur == Indicateur.BonnePlace) == TailleMaxCode)
+ if (!Victoire && indicateursCode.Count(indicateur => indicateur == Indicateur.BonnePlace) == TailleMaxCode)
Victoire = true;
QuandPlateauAjouterCode();
diff --git a/Sources/CoreLibrary/Joueurs/Joueur.cs b/Sources/CoreLibrary/Joueurs/Joueur.cs
index 23f5e95..8cc3cde 100644
--- a/Sources/CoreLibrary/Joueurs/Joueur.cs
+++ b/Sources/CoreLibrary/Joueurs/Joueur.cs
@@ -48,8 +48,6 @@ namespace CoreLibrary.Joueurs
public virtual void QuandDemanderJoueurJouer(object? sender, PartieDemanderJoueurJouerEventArgs e)
{
- if (e.Nom != Nom)
- return;
}
public override string ToString() => Nom;
diff --git a/Sources/CoreLibrary/Joueurs/Robot.cs b/Sources/CoreLibrary/Joueurs/Robot.cs
index e325998..2c539a0 100644
--- a/Sources/CoreLibrary/Joueurs/Robot.cs
+++ b/Sources/CoreLibrary/Joueurs/Robot.cs
@@ -5,13 +5,19 @@ namespace CoreLibrary.Joueurs
{
public class Robot : Joueur
{
- private static int nbRobots = 0;
+ private static int nbRobots;
private List? codesPossibles;
+ static Robot()
+ {
+ nbRobots = 0;
+ }
+
public Robot() :
- base($"Naps {++nbRobots}")
+ base($"Naps {nbRobots + 1}")
{
+ ++nbRobots;
}
public Robot(string nom) :
@@ -25,18 +31,15 @@ namespace CoreLibrary.Joueurs
return;
if (codesPossibles == null)
- {
- codesPossibles = new List();
- GenererTousCodesPossibles(e.Code.TailleMax);
- }
+ codesPossibles = GenererTousCodesPossibles(e.Code.TailleMax);
- SupprimerCodesImpossibles(e.Plateau);
+ SupprimerCodesImpossibles(codesPossibles, e.Plateau);
for(int i = 0; i < e.Code.TailleMax; ++i)
e.Code.AjouterJeton(codesPossibles.ElementAt(0).Jetons[i]);
}
- private void GenererTousCodesPossibles(int tailleCode)
+ private static List GenererTousCodesPossibles(int tailleCode)
{
Couleur[] couleurs = Enum.GetValues();
int nbLignes = (int)Math.Pow(couleurs.Length, tailleCode);
@@ -52,6 +55,7 @@ namespace CoreLibrary.Joueurs
}
}
+ List codes = new List();
for (int i = 0; i < jetons.GetLength(0); ++i)
{
Code code = new Code(tailleCode);
@@ -59,11 +63,13 @@ namespace CoreLibrary.Joueurs
{
code.AjouterJeton(jetons[i, j]!.Value);
}
- codesPossibles!.Add(code);
+ codes!.Add(code);
}
+
+ return codes;
}
- private bool EstCodePossible(Plateau plateau, Code code)
+ private static bool EstCodePossible(Plateau plateau, Code code)
{
for(int i = 0; i < plateau.Taille; ++i)
{
@@ -86,21 +92,21 @@ namespace CoreLibrary.Joueurs
return true;
}
- private void SupprimerCodesImpossibles(Plateau plateau)
+ private static void SupprimerCodesImpossibles(List codes, Plateau plateau)
{
- if (codesPossibles == null)
+ if (codes == null)
return;
List indicesASupprimer = new List();
- for(int i = codesPossibles.Count - 1; i >= 0; --i)
+ for(int i = codes.Count - 1; i >= 0; --i)
{
- if(!EstCodePossible(plateau, codesPossibles.ElementAt(i)))
+ if(!EstCodePossible(plateau, codes.ElementAt(i)))
indicesASupprimer.Add(i);
}
foreach (int indice in indicesASupprimer)
- codesPossibles.RemoveAt(indice);
+ codes.RemoveAt(indice);
}
}
}
diff --git a/Sources/CoreLibrary/Manageurs/Manageur.cs b/Sources/CoreLibrary/Manageurs/Manageur.cs
index 24f5fab..b9a3461 100644
--- a/Sources/CoreLibrary/Manageurs/Manageur.cs
+++ b/Sources/CoreLibrary/Manageurs/Manageur.cs
@@ -13,7 +13,7 @@ namespace CoreLibrary.Manageurs
public IReadOnlyList Joueurs => joueurs;
public IReadOnlyList Parties => parties;
- public IReadOnlyList PartiesNonTerminees => parties.Where(partie => !partie.Termine).Reverse().ToList();
+ public IEnumerable PartiesNonTerminees => parties.Where(partie => !partie.Termine).Reverse();
public Manageur(IPersistance persistance)
{
diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs
index 8a891ee..8bd712a 100644
--- a/Sources/CoreLibrary/Partie.cs
+++ b/Sources/CoreLibrary/Partie.cs
@@ -33,8 +33,8 @@ namespace CoreLibrary
[DataMember]
private int courant = 0;
- public IReadOnlyList Joueurs => joueurs.Keys.ToList();
- public IReadOnlyList Robots => joueurs.Where(joueur => joueur.Value).Select(joueur => joueur.Key).ToList();
+ public IEnumerable Joueurs => joueurs.Keys;
+ public IEnumerable Robots => joueurs.Where(joueur => joueur.Value).Select(joueur => joueur.Key);
[DataMember]
public bool Termine { get; private set; } = false;
[DataMember]
@@ -155,9 +155,9 @@ namespace CoreLibrary
for (int i = 0; i < joueurs.Count; ++i)
{
if (plateaux.ElementAt(i).Victoire)
- gagnants.Add(Joueurs[i]);
+ gagnants.Add(Joueurs.ElementAt(i));
else
- perdants.Add(Joueurs[i]);
+ perdants.Add(Joueurs.ElementAt(i));
}
QuandPartiePartieTerminee(gagnants, perdants);
diff --git a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs
index 0daaf1c..99de553 100644
--- a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs
+++ b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs
@@ -4,13 +4,13 @@ using System.Xml;
namespace CoreLibrary.Persistance
{
- public class PersistanceJSON : IPersistance
+ public class PersistanceJson : IPersistance
{
private readonly string nomDossier = "Fichiers";
private readonly string nomRacine = "Sources";
private readonly string dossier = AppDomain.CurrentDomain.BaseDirectory;
- public PersistanceJSON()
+ public PersistanceJson()
{
while (new DirectoryInfo(dossier).Name != nomRacine)
dossier = Path.GetFullPath(Path.Combine(dossier, @"../"));
@@ -26,20 +26,19 @@ namespace CoreLibrary.Persistance
return [];
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), nomDossier));
- var directory = Directory.GetCurrentDirectory();
-
+
if (!File.Exists(fichier))
return [];
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T[]));
- T[] elements;
+ T[]? elements;
using (FileStream s = File.OpenRead(fichier))
{
elements = jsonSerializer.ReadObject(s) as T[];
}
- return elements;
+ return elements != null ? elements : Array.Empty();
}
public void Enregistrer(T[] elements) where T : IEstPersistant
diff --git a/Sources/CoreLibrary/Regles/ReglesClassiques.cs b/Sources/CoreLibrary/Regles/ReglesClassiques.cs
index 36c5902..0c6ef38 100644
--- a/Sources/CoreLibrary/Regles/ReglesClassiques.cs
+++ b/Sources/CoreLibrary/Regles/ReglesClassiques.cs
@@ -11,7 +11,7 @@ namespace CoreLibrary.Regles
public int NbJoueurs => 2;
public int NbTour => 12;
public int TailleCode => 4;
- public override bool Equals(object? obj) => obj == null ? false : obj is ReglesClassiques;
+ public override bool Equals(object? obj) => obj is ReglesClassiques;
public override int GetHashCode() => Nom.GetHashCode();
}
}
diff --git a/Sources/CoreLibrary/Regles/ReglesDifficiles.cs b/Sources/CoreLibrary/Regles/ReglesDifficiles.cs
index 75c0dfc..2e124df 100644
--- a/Sources/CoreLibrary/Regles/ReglesDifficiles.cs
+++ b/Sources/CoreLibrary/Regles/ReglesDifficiles.cs
@@ -11,7 +11,7 @@ namespace CoreLibrary.Regles
public int NbJoueurs => 2;
public int NbTour => 12;
public int TailleCode => 6;
- public override bool Equals(object? obj) => obj == null ? false : obj is ReglesDifficiles;
+ public override bool Equals(object? obj) => obj is ReglesDifficiles;
public override int GetHashCode() => Nom.GetHashCode();
}
}
diff --git a/Sources/Fichiers/joueurs.json b/Sources/Fichiers/joueurs.json
index 34c6e16..5967433 100644
--- a/Sources/Fichiers/joueurs.json
+++ b/Sources/Fichiers/joueurs.json
@@ -121,5 +121,19 @@
"Value": 50
}
]
+ },
+ {
+ "Nom": "a",
+ "statistiques": [
+ {
+ "Key": {
+ "Item1": {
+ "__type": "ReglesClassiques:#CoreLibrary.Regles"
+ },
+ "Item2": 3
+ },
+ "Value": 1
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/Sources/Fichiers/parties.json b/Sources/Fichiers/parties.json
index de816af..e85bbd1 100644
--- a/Sources/Fichiers/parties.json
+++ b/Sources/Fichiers/parties.json
@@ -2574,5 +2574,135 @@
]
}
]
+ },
+ {
+ "Regles": {
+ "__type": "ReglesClassiques:#CoreLibrary.Regles"
+ },
+ "Termine": false,
+ "Tour": 2,
+ "courant": 0,
+ "joueurs": [
+ {
+ "Key": "a",
+ "Value": true
+ },
+ {
+ "Key": "Naps 1",
+ "Value": false
+ }
+ ],
+ "plateaux": [
+ {
+ "TailleMax": 12,
+ "TailleMaxCode": 4,
+ "Victoire": false,
+ "codeSecret": {
+ "Jetons": [
+ {
+ "Couleur": 3
+ },
+ {
+ "Couleur": 5
+ },
+ {
+ "Couleur": 1
+ },
+ {
+ "Couleur": 4
+ }
+ ],
+ "TailleMax": 4
+ },
+ "codes": [
+ {
+ "Jetons": [
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 0
+ }
+ ],
+ "TailleMax": 4
+ }
+ ],
+ "indicateurs": [
+ [ ]
+ ]
+ },
+ {
+ "TailleMax": 12,
+ "TailleMaxCode": 4,
+ "Victoire": false,
+ "codeSecret": {
+ "Jetons": [
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 3
+ },
+ {
+ "Couleur": 3
+ },
+ {
+ "Couleur": 2
+ }
+ ],
+ "TailleMax": 4
+ },
+ "codes": [
+ {
+ "Jetons": [
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 0
+ },
+ {
+ "Couleur": 0
+ }
+ ],
+ "TailleMax": 4
+ }
+ ],
+ "indicateurs": [
+ [
+ 0
+ ]
+ ]
+ }
+ ]
+ },
+ {
+ "Regles": {
+ "__type": "ReglesClassiques:#CoreLibrary.Regles"
+ },
+ "Termine": false,
+ "Tour": 0,
+ "courant": 0,
+ "joueurs": [ ],
+ "plateaux": [ ]
+ },
+ {
+ "Regles": {
+ "__type": "ReglesClassiques:#CoreLibrary.Regles"
+ },
+ "Termine": false,
+ "Tour": 0,
+ "courant": 0,
+ "joueurs": [ ],
+ "plateaux": [ ]
}
]
\ No newline at end of file
diff --git a/Sources/MauiSpark/MauiProgram.cs b/Sources/MauiSpark/MauiProgram.cs
index 303e793..8c52fb4 100644
--- a/Sources/MauiSpark/MauiProgram.cs
+++ b/Sources/MauiSpark/MauiProgram.cs
@@ -6,7 +6,7 @@ namespace MauiSpark
{
public static class MauiProgram
{
- public static Manageur Manageur { get; private set; } = new Manageur(new PersistanceJSON());
+ public static Manageur Manageur { get; private set; } = new Manageur(new PersistanceJson());
public static MauiApp CreateMauiApp()
{
diff --git a/Sources/MauiSpark/Pages/PlateauPage.xaml.cs b/Sources/MauiSpark/Pages/PlateauPage.xaml.cs
index 30aa891..25419b7 100644
--- a/Sources/MauiSpark/Pages/PlateauPage.xaml.cs
+++ b/Sources/MauiSpark/Pages/PlateauPage.xaml.cs
@@ -19,12 +19,12 @@ internal class Tour
Code = e.Code;
EstJoueur = e.EstJoueur;
- (IReadOnlyList> jetons, IReadOnlyList < IReadOnlyList < Indicateur >> indicateurs) = e.Plateau.Grille;
+ (IEnumerable> jetons, IEnumerable> indicateurs) = e.Plateau.Grille;
List<(IEnumerable, IEnumerable)> plateau = new List<(IEnumerable, IEnumerable)>();
for (int i = 0; i < e.Plateau.TailleMax; ++i)
{
- if(i >= jetons.Count)
+ if(i >= jetons.Count())
{
plateau.Add(([], []));
continue;