Le classement ne marche pas encore.
continuous-integration/drone/push Build is failing Details

master
Camille TURPIN-ETIENNE 11 months ago
parent 1baca9f63a
commit 57f2cca38f

@ -8,7 +8,7 @@ namespace CoreLibrary.Manageurs
public class Manageur
{
private readonly IPersistance persistance;
private readonly List<Joueur> joueurs;
public readonly List<Joueur> joueurs;
private readonly List<Partie> parties;
public IReadOnlyList<Joueur> Joueurs => joueurs;
@ -54,8 +54,8 @@ namespace CoreLibrary.Manageurs
{
perdant.IncrementerStatistique(regles, Statistique.PartiePerdue);
}
Sauvegarder();
};
return partie;
}

@ -19,6 +19,7 @@ namespace CoreLibrary.Persistance
return [];
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), nomDossier));
var directory = Directory.GetCurrentDirectory();
if (!File.Exists(fichier))
return [];

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:Views="clr-namespace:MauiSpark.Views"
x:Class="MauiSpark.Pages.ConnexionPage"
xmlns:vues="clr-namespace:MauiSpark.Vues"
Title="Connexion">

@ -3,8 +3,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:pages="clr-namespace:MauiSpark.Pages"
x:Class="MauiSpark.Pages.TableauScore"
xmlns:vues="clr-namespace:MauiSpark.Vues"
Title="TableauScore">
<ScrollView>
<VerticalStackLayout>
<FlexLayout Direction="Row" JustifyContent="SpaceAround" AlignContent="Center" VerticalOptions="Center" Margin="10, 50" >
@ -12,6 +13,35 @@
<Label Text="Scoreboard" Style="{StaticResource TexteTitre}" Margin="0" />
<Image Grid.Row="1" Source="star.png" WidthRequest="100" HorizontalOptions="Start" VerticalOptions="Center" Margin="0"/>
</FlexLayout>
<Button Text="Regles Classique" Clicked="QuandButtonRegleClassiqueClique"></Button>
<Frame Margin="20" >
<Grid ColumnDefinitions="auto,*,auto,auto,auto,auto" ColumnSpacing="10" >
<Button Margin="5" Grid.Column="0" Text="RANK" Style="{StaticResource ButtonTableau}" VerticalOptions="Center"></Button>
<Button Margin="5" Grid.Column="1" Text="PSEUDO" Style="{StaticResource ButtonTableau}" VerticalOptions="Center" HorizontalOptions="Start" Clicked="QuandButtonClassementClique" ></Button>
<Button Margin="5" Grid.Column="2" Text="Coût Moyen" Style="{StaticResource ButtonTableau}" VerticalOptions="Center" Clicked="QuandButtonClassementClique" ></Button>
<Button Margin="5" Grid.Column="3" Text="Partie Gagnée" Style="{StaticResource ButtonTableau}" VerticalOptions="Center" Clicked="QuandButtonClassementClique" ></Button>
<Button Margin="5" Grid.Column="4" Text="Partie Perdue" Style="{StaticResource ButtonTableau}" VerticalOptions="Center" Clicked="QuandButtonClassementClique" ></Button>
<Button Margin="5" Grid.Column="5" Text="Partie Egalité" Style="{StaticResource ButtonTableau}" VerticalOptions="Center" Clicked="QuandButtonClassementClique" ></Button>
</Grid>
</Frame>
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Frame CornerRadius="5" Padding="0" VerticalOptions="Start" Margin="20,0,20,10" >
<Grid ColumnDefinitions="auto,*,auto,auto,auto,auto">
<Label Grid.Column="0" Text="{Binding Place}" Margin="20,20,20,20" Style="{StaticResource TexteFrame}" />
<Label Grid.Column="1" Text="{Binding Joueur.Nom}" Margin="55,20,20,20" Style="{StaticResource TexteFrame}" />
<Label Grid.Column="2" Text="{Binding NbCoutMoyen}" Margin="20,20,100,20" Style="{StaticResource TexteFrame}" />
<Label Grid.Column="3" Text="{Binding PartieGagnee}" Margin="55,20,100,20" Style="{StaticResource TexteFrame}" />
<Label Grid.Column="4" Text="{Binding PartiePerdue}" Margin="55,20,100,20" Style="{StaticResource TexteFrame}" />
<Label Grid.Column="5" Text="{Binding PartieEgalite}" Margin="55,20,100,20" Style="{StaticResource TexteFrame}" />
</Grid>
</Frame>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</VerticalStackLayout>
</ScrollView>

@ -1,11 +1,141 @@
namespace MauiSpark.Pages;
using CoreLibrary.Joueurs;
using CoreLibrary.Manageurs;
using CoreLibrary.Statistiques;
using System.Linq;
using CoreLibrary.Regles;
public partial class TableauScore : ContentPage
namespace MauiSpark.Pages
{
public TableauScore()
public partial class TableauScore : ContentPage
{
NavigationPage.SetHasNavigationBar(this, false);
private IRegles regles = new ReglesClassiques();
public TableauScore()
{
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
QuandButtonClassementClique(null, EventArgs.Empty);
}
InitializeComponent();
private void QuandButtonRegleClassiqueClique(object sender, EventArgs e)
{
regles = new ReglesClassiques();
}
public int NbClique { get; set; } = 0;
public IEnumerable<Classement> GetClassement(Func<Joueur, object> critereTri)
{
IEnumerable<Joueur> joueursTries = NbClique % 2 == 0
? MauiProgram.Manageur.joueurs.OrderBy(critereTri)
: MauiProgram.Manageur.joueurs.OrderByDescending(critereTri);
NbClique++;
return joueursTries.Select(joueur => new Classement(joueur, MauiProgram.Manageur, critereTri, regles));
}
public void QuandButtonClassementClique(object sender, EventArgs e)
{
Button button = sender as Button;
string nom = button?.Text ?? string.Empty;
Func<Joueur, object> critereTri;
switch (nom)
{
case "PSEUDO":
critereTri = joueur => joueur.Nom;
break;
case "Cout Moyen":
critereTri = joueur =>
{
int totalParties = joueur.Statistique(regles, Statistique.PartiePerdue) +
joueur.Statistique(regles, Statistique.PartieGagnee) +
joueur.Statistique(regles, Statistique.PartieEgalite);
return totalParties == 0 ? 0 : (double)joueur.Statistique(regles, Statistique.CoupJoue) / totalParties;
};
break;
case "Partie Gagnée":
critereTri = joueur => joueur.Statistique(regles, Statistique.PartieGagnee);
break;
case "Partie Perdue":
critereTri = joueur => joueur.Statistique(regles, Statistique.PartiePerdue);
break;
case "Partie Égalité":
critereTri = joueur => joueur.Statistique(regles, Statistique.PartieEgalite);
break;
default:
critereTri = joueur =>
{
int totalParties = joueur.Statistique(regles, Statistique.PartiePerdue) +
joueur.Statistique(regles, Statistique.PartieGagnee) +
joueur.Statistique(regles, Statistique.PartieEgalite);
return totalParties == 0 ? 0 : (double)joueur.Statistique(regles, Statistique.CoupJoue) / totalParties;
};
break;
}
BindingContext = GetClassement(critereTri);
int a = 2;
}
}
public class Classement
{
private IRegles regles;
private Manageur manageur;
private Joueur joueur;
private Func<Joueur, object> critereTri;
public Joueur Joueur
{
get => joueur;
private set => joueur = value;
}
public int Place
{
get => manageur.joueurs
.OrderBy(critereTri)
.ToList()
.IndexOf(joueur) + 1;
}
public int PartieGagnee
{
get => joueur.Statistique(regles, Statistique.PartieGagnee);
}
public int PartiePerdue
{
get => joueur.Statistique(regles, Statistique.PartiePerdue);
}
public int PartieEgalite
{
get => joueur.Statistique(regles, Statistique.PartieEgalite);
}
public double NbCoupMoyen
{
get
{
int totalParties = joueur.Statistique(regles, Statistique.PartiePerdue) +
joueur.Statistique(regles, Statistique.PartieGagnee) +
joueur.Statistique(regles, Statistique.PartieEgalite);
return totalParties == 0 ? 0 : (double)joueur.Statistique(regles, Statistique.CoupJoue) / totalParties;
}
}
public Classement(Joueur joueur, Manageur manageur, Func<Joueur, object> critereTri, IRegles regles)
{
this.manageur = manageur;
this.joueur = joueur;
this.critereTri = critereTri;
this.regles = regles;
}
}
}

@ -16,8 +16,8 @@
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource TexteSombre}, Dark={StaticResource TexteClair}}"/>
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource FondSecondaireClair}, Dark={StaticResource FondSecondaireSombre}}" />
<Setter Property="FontSize" Value="Large"/>
<Setter Property="HeightRequest" Value="80"/>
<Setter Property="WidthRequest" Value="500"/>
<Setter Property="HeightRequest" Value="60"/>
<Setter Property="WidthRequest" Value="250"/>
</Style>
<Style TargetType="Frame">

Loading…
Cancel
Save