correction des code smell

master
Céleste BARBOSA 11 months ago
parent 15e83989a7
commit 01e2d8d579

@ -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()
{

@ -100,7 +100,7 @@ namespace ConsoleApp
/// <param name="plateau">Le plateau de jeu.</param>
public static void DessinerPlateau(Plateau plateau)
{
(IReadOnlyList<IReadOnlyList<Jeton>> codes, IReadOnlyList<IReadOnlyList<Indicateur>> indicateurs) = plateau.Grille;
(IEnumerable<IEnumerable<Jeton>> codes, IEnumerable<IEnumerable<Indicateur>> 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<Jeton> ligneCodes = codes.ElementAt(i);
IReadOnlyList<Indicateur> ligneIndicateurs = indicateurs.ElementAt(i);
IEnumerable<Jeton> ligneCodes = codes.ElementAt(i);
IEnumerable<Indicateur> ligneIndicateurs = indicateurs.ElementAt(i);
Console.Write("│");

@ -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);

@ -27,8 +27,8 @@ namespace CoreLibrary.Core
public bool Complet => Taille == TailleMax;
[DataMember]
public bool Victoire { get; private set; } = false;
public (IReadOnlyList<IReadOnlyList<Jeton>>, IReadOnlyList<IReadOnlyList<Indicateur>>) Grille => (
codes.Select(code => code.Jetons).ToList(),
public (IEnumerable<IEnumerable<Jeton>>, IEnumerable<IEnumerable<Indicateur>>) Grille => (
codes.Select(code => code.Jetons),
indicateurs
);
@ -70,10 +70,10 @@ namespace CoreLibrary.Core
throw new GrilleCompleteException();
codes.Add(code);
IReadOnlyList<Indicateur> indicateurs = codeSecret.Comparer(code);
this.indicateurs.Add(indicateurs.ToList());
IReadOnlyList<Indicateur> 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();

@ -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;

@ -5,13 +5,19 @@ namespace CoreLibrary.Joueurs
{
public class Robot : Joueur
{
private static int nbRobots = 0;
private static int nbRobots;
private List<Code>? 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<Code>();
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<Code> GenererTousCodesPossibles(int tailleCode)
{
Couleur[] couleurs = Enum.GetValues<Couleur>();
int nbLignes = (int)Math.Pow(couleurs.Length, tailleCode);
@ -52,6 +55,7 @@ namespace CoreLibrary.Joueurs
}
}
List<Code> codes = new List<Code>();
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<Code> codes, Plateau plateau)
{
if (codesPossibles == null)
if (codes == null)
return;
List<int> indicesASupprimer = new List<int>();
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);
}
}
}

@ -13,7 +13,7 @@ namespace CoreLibrary.Manageurs
public IReadOnlyList<Joueur> Joueurs => joueurs;
public IReadOnlyList<Partie> Parties => parties;
public IReadOnlyList<Partie> PartiesNonTerminees => parties.Where(partie => !partie.Termine).Reverse().ToList();
public IEnumerable<Partie> PartiesNonTerminees => parties.Where(partie => !partie.Termine).Reverse();
public Manageur(IPersistance persistance)
{

@ -33,8 +33,8 @@ namespace CoreLibrary
[DataMember]
private int courant = 0;
public IReadOnlyList<string> Joueurs => joueurs.Keys.ToList();
public IReadOnlyList<string> Robots => joueurs.Where(joueur => joueur.Value).Select(joueur => joueur.Key).ToList();
public IEnumerable<string> Joueurs => joueurs.Keys;
public IEnumerable<string> 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);

@ -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<T>();
}
public void Enregistrer<T>(T[] elements) where T : IEstPersistant

@ -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();
}
}

@ -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();
}
}

@ -121,5 +121,19 @@
"Value": 50
}
]
},
{
"Nom": "a",
"statistiques": [
{
"Key": {
"Item1": {
"__type": "ReglesClassiques:#CoreLibrary.Regles"
},
"Item2": 3
},
"Value": 1
}
]
}
]

@ -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": [ ]
}
]

@ -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()
{

@ -19,12 +19,12 @@ internal class Tour
Code = e.Code;
EstJoueur = e.EstJoueur;
(IReadOnlyList<IReadOnlyList<Jeton>> jetons, IReadOnlyList < IReadOnlyList < Indicateur >> indicateurs) = e.Plateau.Grille;
(IEnumerable<IEnumerable<Jeton>> jetons, IEnumerable<IEnumerable<Indicateur>> indicateurs) = e.Plateau.Grille;
List<(IEnumerable<Jeton>, IEnumerable<Indicateur>)> plateau = new List<(IEnumerable<Jeton>, IEnumerable<Indicateur>)>();
for (int i = 0; i < e.Plateau.TailleMax; ++i)
{
if(i >= jetons.Count)
if(i >= jetons.Count())
{
plateau.Add(([], []));
continue;

Loading…
Cancel
Save