Binding sur le déroulement d'une partie
continuous-integration/drone/push Build is failing Details

master
Céleste BARBOSA 11 months ago
parent 30bad619ad
commit 84ca6115f3

@ -1,12 +1,23 @@
using CoreLibrary.Exceptions; using CoreLibrary.Exceptions;
using System.ComponentModel;
namespace CoreLibrary.Core namespace CoreLibrary.Core
{ {
/// <summary> /// <summary>
/// Classe représentant un code composé de jetons et ses différentes méthodes. /// Classe représentant un code composé de jetons et ses différentes méthodes.
/// </summary> /// </summary>
public class Code public class Code : INotifyPropertyChanged
{ {
public event PropertyChangedEventHandler? PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private readonly Jeton?[] lesJetons; private readonly Jeton?[] lesJetons;
/// <summary> /// <summary>
@ -14,6 +25,8 @@ namespace CoreLibrary.Core
/// </summary> /// </summary>
public int NbJetons { get; private set; } = 0; public int NbJetons { get; private set; } = 0;
public IEnumerable<Jeton?> Jetons => lesJetons;
/// <summary> /// <summary>
/// Initialise une nouvelle instance de la classe <see cref="Code"/> avec la longueur de code spécifiée. /// Initialise une nouvelle instance de la classe <see cref="Code"/> avec la longueur de code spécifiée.
/// </summary> /// </summary>
@ -61,6 +74,7 @@ namespace CoreLibrary.Core
} }
lesJetons[NbJetons++] = jeton; lesJetons[NbJetons++] = jeton;
OnPropertyChanged(nameof(Jetons));
} }
/// <summary> /// <summary>
@ -75,6 +89,7 @@ namespace CoreLibrary.Core
} }
lesJetons[--NbJetons] = null; lesJetons[--NbJetons] = null;
OnPropertyChanged(nameof(Jetons));
} }
/// <summary> /// <summary>
@ -96,16 +111,6 @@ namespace CoreLibrary.Core
return jeton.Value; return jeton.Value;
} }
/// <summary>
/// Récupère une liste des jetons dans le code.
/// </summary>
/// <returns>Les jetons du code.</returns>
public IEnumerable<Jeton?> Jetons()
{
return lesJetons;
}
/// <summary> /// <summary>
/// Vérifie si le code est complet. /// Vérifie si le code est complet.
/// </summary> /// </summary>
@ -138,8 +143,8 @@ namespace CoreLibrary.Core
if (!autreCode.EstComplet()) if (!autreCode.EstComplet())
return indicateurs; return indicateurs;
List<Jeton?> mesJetons = new List<Jeton?>(Jetons()); List<Jeton?> mesJetons = new List<Jeton?>(Jetons);
List<Jeton?> sesJetons = new List<Jeton?>(autreCode.Jetons()); List<Jeton?> sesJetons = new List<Jeton?>(autreCode.Jetons);
for (int i = 0; i < mesJetons.Count; ++i) for (int i = 0; i < mesJetons.Count; ++i)
{ {

@ -149,7 +149,7 @@ namespace CoreLibrary.Core
for (int i = 0; i < grille.Length; ++i) for (int i = 0; i < grille.Length; ++i)
{ {
grilleJetons[i] = grille[i]?.Jetons() ?? new Code(tailleCode).Jetons(); grilleJetons[i] = grille[i]?.Jetons ?? new Code(tailleCode).Jetons;
} }
return grilleJetons; return grilleJetons;
} }

@ -55,5 +55,10 @@ namespace CoreLibrary.Joueurs
{ {
QuandJouerCode(code); QuandJouerCode(code);
} }
public override String ToString()
{
return Nom;
}
} }
} }

@ -157,15 +157,15 @@ namespace CoreLibrary
plateauCourant.AjouterCode(e.Code); plateauCourant.AjouterCode(e.Code);
QuandAjouterCode(e.Code); QuandAjouterCode(e.Code);
if(Regles.EstTerminee()) Regles.PasserLaMain();
QuandPasserMain();
if (Regles.EstTerminee())
{ {
Terminee(); Terminee();
} }
else else
{ {
Regles.PasserLaMain();
QuandPasserMain();
(joueurCourant, plateauCourant) = Regles.JoueurCourant(); (joueurCourant, plateauCourant) = Regles.JoueurCourant();
QuandNouveauTour(joueurCourant, plateauCourant.Tour, Regles.GenererCode(), plateauCourant.Grille(), plateauCourant.Indicateurs()); QuandNouveauTour(joueurCourant, plateauCourant.Tour, Regles.GenererCode(), plateauCourant.Grille(), plateauCourant.Indicateurs());
} }

@ -0,0 +1,59 @@
using CoreLibrary.Core;
using System.Globalization;
namespace MauiSpark.Convertisseurs
{
public class CouleurVersCouleurMAUI : IValueConverter
{
public static Color Rouge { get; private set; } = Color.FromRgb(255, 0, 0);
public static Color Vert { get; private set; } = Color.FromRgb(0, 255, 0);
public static Color Bleu { get; private set; } = Color.FromRgb(0, 0, 255);
public static Color Jaune { get; private set; } = Color.FromRgb(255, 255, 0);
public static Color Noir { get; private set; } = Color.FromRgb(0, 0, 0);
public static Color Blanc { get; private set; } = Color.FromRgb(255, 255, 255);
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is not Couleur) return Noir;
switch (value)
{
case Couleur.BLANC:
return Blanc;
case Couleur.BLEU:
return Bleu;
case Couleur.VERT:
return Vert;
case Couleur.ROUGE:
return Rouge;
case Couleur.NOIR:
return Noir;
case Couleur.JAUNE:
return Jaune;
default:
return Noir;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is not Color) return Couleur.NOIR;
if (value.Equals(Rouge))
return Couleur.ROUGE;
if (value.Equals(Vert))
return Couleur.VERT;
if (value.Equals(Bleu))
return Couleur.BLEU;
if (value.Equals(Jaune))
return Couleur.JAUNE;
if (value.Equals(Noir))
return Couleur.NOIR;
if (value.Equals(Blanc))
return Couleur.BLANC;
return Couleur.NOIR;
}
}
}

@ -0,0 +1,29 @@
using CoreLibrary.Core;
using System.Globalization;
namespace MauiSpark.Convertisseurs
{
public class IndicateurVersCouleurMAUI : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is not Indicateur) return "black";
switch (value)
{
case Indicateur.BONNEPLACE:
return "black";
case Indicateur.BONNECOULEUR:
return "white";
default:
return "black";
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

@ -0,0 +1,25 @@
using CoreLibrary.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MauiSpark.Convertisseurs
{
public class JetonVersTexte : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is not Jeton) return "";
return "O";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

@ -1,16 +1,17 @@
using CoreLibrary; namespace MauiSpark.Pages;
namespace MauiSpark.Pages; public partial class Accueil : ContentPage
{
public partial class Accueil : ContentPage public Accueil()
{ {
public Accueil() NavigationPage.SetHasBackButton(this, false);
{ NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
} InitializeComponent();
}
private void QuandJouerClique(Object? sender, EventArgs e) private void QuandJouerClique(Object? sender, EventArgs e)
{ {
Navigation.PushAsync(new Mode()); Navigation.PushAsync(new Mode());
} }
} }

@ -1,34 +1,56 @@
using CoreLibrary; using CoreLibrary;
using CoreLibrary.Events; using CoreLibrary.Events;
using CoreLibrary.Joueurs; using CoreLibrary.Joueurs;
namespace MauiSpark.Pages; namespace MauiSpark.Pages;
public partial class ConnexionPage : ContentPage public partial class ConnexionPage : ContentPage
{ {
private readonly JoueurBuilder joueurBuilder; private readonly JoueurBuilder joueurBuilder;
public ConnexionPage(Partie partie, DemanderNomEventArgs e) public ConnexionPage(Partie partie, DemanderNomEventArgs e)
{ {
InitializeComponent(); NavigationPage.SetHasBackButton(this, false);
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
joueurBuilder = e.JoueurBuilder; joueurBuilder = e.JoueurBuilder;
if(partie.Regles.NbJoueurs + 1 == partie.Regles.NbJoueursMaximum) if (partie.Regles.NbJoueurs + 1 == partie.Regles.NbJoueursMaximum)
{
partie.NouveauTour += QuandNouveauTour; partie.NouveauTour += QuandNouveauTour;
partie.PartieTerminee += PartieTerminee;
}
BindingContext = $"Joueur {e.Indice}"; BindingContext = $"Joueur {e.Indice}";
} }
private void QuandNouveauTour(object sender, NouveauTourEventArgs e) private void QuandNouveauTour(object? sender, NouveauTourEventArgs e)
{ {
if (sender != null && sender is Partie) if (sender != null && sender is Partie)
Navigation.PushAsync(new Plateau(sender as Partie, e)); Navigation.PushAsync(new Plateau(sender as Partie, e));
} }
private void QuandSeConnecterPresse(Object sender, EventArgs e) private void QuandSeConnecterPresse(Object sender, EventArgs e)
{ {
joueurBuilder.Joueur(new Joueur(Nom.Text)); joueurBuilder.Joueur(new Joueur(Nom.Text));
} }
private void PartieTerminee(Object? sender, PartieTermineeEventArgs e)
{
if(e.Gagnants.Count() == 0)
{
Navigation.PushAsync(new Defaite((Partie) sender, e));
}
else if (e.Gagnants.Count() == 2)
{
Navigation.PushAsync(new Egalite());
}
else
{
Navigation.PushAsync(new Victoire((Partie)sender, e));
}
}
} }

@ -13,7 +13,7 @@
<Image Source="defaite.png" MaximumHeightRequest="100" MaximumWidthRequest="100"/> <Image Source="defaite.png" MaximumHeightRequest="100" MaximumWidthRequest="100"/>
</FlexLayout> </FlexLayout>
<Frame Margin="20"> <Frame Margin="20">
<Label HorizontalOptions="Center" Text="Aucun des deux joueurs, Joueur 1 et Joueur 2 n'a trouvé le code secret" Style="{StaticResource TexteFrame}"/> <Label HorizontalOptions="Center" Text="{Binding}" Style="{StaticResource TexteFrame}"/>
</Frame> </Frame>
<Button Text="Menu" VerticalOptions="End" HorizontalOptions="Center"></Button> <Button Text="Menu" VerticalOptions="End" HorizontalOptions="Center"></Button>
</VerticalStackLayout> </VerticalStackLayout>

@ -1,9 +1,14 @@
using CoreLibrary;
using CoreLibrary.Events;
namespace MauiSpark.Pages; namespace MauiSpark.Pages;
public partial class Defaite : ContentPage public partial class Defaite : ContentPage
{ {
public Defaite() public Defaite(Partie p, PartieTermineeEventArgs e)
{ {
InitializeComponent(); InitializeComponent();
BindingContext = $"Aucun des deux joueurs, {e.Perdants.First().Nom} et {e.Perdants.Last().Nom} n'a trouvé le code secret";
} }
} }

@ -8,7 +8,10 @@ public partial class Mode : ContentPage
{ {
public Mode() public Mode()
{ {
InitializeComponent(); NavigationPage.SetHasBackButton(this, false);
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
} }
private void QuandReglesClassiques(Object? sender, EventArgs e) private void QuandReglesClassiques(Object? sender, EventArgs e)

@ -1,8 +1,151 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:conv="clr-namespace:MauiSpark.Convertisseurs"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiSpark.Pages.Plateau" x:Class="MauiSpark.Pages.Plateau"
Title="Plateau"> Title="Plateau">
<ContentPage.Resources>
<conv:CouleurVersCouleurMAUI x:Key="CouleurVersCouleurMAUI"/>
<conv:IndicateurVersCouleurMAUI x:Key="IndicateurVersCouleurMAUI"/>
<conv:JetonVersTexte x:Key="JetonVersTexte"/>
</ContentPage.Resources>
<Grid RowDefinitions="*" ColumnDefinitions="*, *">
<Grid RowDefinitions="*" ColumnDefinitions="*" Margin="50">
<Border
Stroke="#000000"
StrokeThickness="2"
StrokeShape="RoundRectangle 10"
HorizontalOptions="Center">
<FlexLayout
Direction="Column"
Wrap="Wrap"
JustifyContent="SpaceBetween"
AlignItems="Stretch"
BindableLayout.ItemsSource="{Binding Plateau}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid
FlexLayout.Grow="1"
FlexLayout.AlignSelf="Stretch"
RowDefinitions="*, auto"
ColumnDefinitions="*, 5*">
<FlexLayout
VerticalOptions="Center"
Direction="Row"
Wrap="Wrap"
JustifyContent="SpaceAround"
AlignItems="Center"
BindableLayout.ItemsSource="{Binding [1]}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Label
Text="*"
TextColor="{Binding ., Converter={StaticResource IndicateurVersCouleurMAUI}}"
VerticalOptions="Center"
HorizontalOptions="Center" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</FlexLayout>
<FlexLayout
VerticalOptions="Center"
Grid.Column="1"
Direction="Row"
Wrap="Wrap"
JustifyContent="SpaceAround"
AlignItems="Center"
BindableLayout.ItemsSource="{Binding [0]}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Label Text="O"
TextColor="{Binding Couleur, Converter={StaticResource CouleurVersCouleurMAUI}}"
VerticalOptions="Center"
HorizontalOptions="Center" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</FlexLayout>
<BoxView Grid.Row="1" Grid.ColumnSpan="2" HeightRequest="1" BackgroundColor="#000000" VerticalOptions="End"/>
</Grid>
</DataTemplate>
</BindableLayout.ItemTemplate>
</FlexLayout>
</Border>
</Grid>
<Grid Grid.Column="1" RowDefinitions="*, 2*, *" ColumnDefinitions="*" Margin="50">
<Label Text="{Binding Joueur}" FontSize="Large" VerticalOptions="Center" HorizontalOptions="Center"/>
<Border
HorizontalOptions="FillAndExpand"
Grid.Row="1"
Stroke="#000000"
StrokeThickness="2"
StrokeShape="RoundRectangle 10">
<Grid
RowDefinitions="*, auto, *, *"
ColumnDefinitions="*, *, *, *, *, *">
<Label FontSize="Medium" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Text="X">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="SupprimerDernierJeton"/>
</Label.GestureRecognizers>
</Label>
<Label FontSize="Medium" HorizontalOptions="Center" VerticalOptions="Center" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="1" TextColor="{Binding Code.Jetons[0].Couleur, Converter={StaticResource CouleurVersCouleurMAUI}}" Text="{Binding Code.Jetons[0], Converter={StaticResource JetonVersTexte}}"/>
<Label FontSize="Medium" HorizontalOptions="Center" VerticalOptions="Center" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="2" TextColor="{Binding Code.Jetons[1].Couleur, Converter={StaticResource CouleurVersCouleurMAUI}}" Text="{Binding Code.Jetons[1], Converter={StaticResource JetonVersTexte}}"/>
<Label FontSize="Medium" HorizontalOptions="Center" VerticalOptions="Center" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="3" TextColor="{Binding Code.Jetons[2].Couleur, Converter={StaticResource CouleurVersCouleurMAUI}}" Text="{Binding Code.Jetons[2], Converter={StaticResource JetonVersTexte}}"/>
<Label FontSize="Medium" HorizontalOptions="Center" VerticalOptions="Center" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="4" TextColor="{Binding Code.Jetons[3].Couleur, Converter={StaticResource CouleurVersCouleurMAUI}}" Text="{Binding Code.Jetons[3], Converter={StaticResource JetonVersTexte}}"/>
<Label FontSize="Medium" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="5" Text="V">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="ValiderCode"/>
</Label.GestureRecognizers>
</Label>
<BoxView Grid.Row="1" Grid.ColumnSpan="6" HeightRequest="1" BackgroundColor="#000000" VerticalOptions="Center"/>
<Label x:Name="JetonRouge" FontSize="Medium" TextColor="{x:Static conv:CouleurVersCouleurMAUI.Rouge}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2" Text="O">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="CouleurPresee"/>
</Label.GestureRecognizers>
</Label>
<Label x:Name="JetonVert" FontSize="Medium" TextColor="{x:Static conv:CouleurVersCouleurMAUI.Vert}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="2" Grid.Row="2" Grid.ColumnSpan="2" Text="O">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="CouleurPresee"/>
</Label.GestureRecognizers>
</Label>
<Label x:Name="JetonBleu" FontSize="Medium" TextColor="{x:Static conv:CouleurVersCouleurMAUI.Bleu}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="4" Grid.Row="2" Grid.ColumnSpan="2" Text="O">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="CouleurPresee"/>
</Label.GestureRecognizers>
</Label>
<Label x:Name="JetonJaune" FontSize="Medium" TextColor="{x:Static conv:CouleurVersCouleurMAUI.Jaune}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2" Text="O">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="CouleurPresee"/>
</Label.GestureRecognizers>
</Label>
<Label x:Name="JetonNoir" FontSize="Medium" TextColor="{x:Static conv:CouleurVersCouleurMAUI.Noir}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="2" Grid.Row="3" Grid.ColumnSpan="2" Text="O">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="CouleurPresee"/>
</Label.GestureRecognizers>
</Label>
<Label x:Name="JetonBlanc" FontSize="Medium" TextColor="{x:Static conv:CouleurVersCouleurMAUI.Blanc}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Grid.Column="4" Grid.Row="3" Grid.ColumnSpan="2" Text="O">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="CouleurPresee"/>
</Label.GestureRecognizers>
</Label>
</Grid>
</Border>
<Label Grid.Row="2" Text="{Binding Numero}" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="Center"/>
</Grid>
</Grid>
</ContentPage> </ContentPage>

@ -1,15 +1,90 @@
using CoreLibrary; using CoreLibrary;
using CoreLibrary.Core;
using CoreLibrary.Events; using CoreLibrary.Events;
using CoreLibrary.Exceptions;
using CoreLibrary.Joueurs;
using MauiSpark.Convertisseurs;
namespace MauiSpark.Pages; namespace MauiSpark.Pages;
internal class Tour
{
public IEnumerable<(IEnumerable<Jeton>, IEnumerable<Indicateur>)> Plateau { get; private init; }
public Joueur Joueur { get; private init; }
public string Numero { get; private init; }
public Code Code { get; private init; }
public Tour(NouveauTourEventArgs e)
{
Numero = $"Tour {e.Tour}";
Joueur = e.Joueur;
Code = e.Code;
(IEnumerable<Jeton>, IEnumerable<Indicateur>)[] plateau = new (IEnumerable<Jeton>, IEnumerable<Indicateur>)[e.Grille.Count()];
for (int i = 0; i < e.Grille.Count(); ++i)
{
plateau[i] = (e.Grille.ElementAt(i).Where(x => x.HasValue).Select(x => x!.Value), e.Indicateurs.ElementAt(i));
}
Plateau = plateau;
}
}
public partial class Plateau : ContentPage public partial class Plateau : ContentPage
{ {
private readonly Code code;
private readonly Joueur joueur;
public Plateau(Partie p, NouveauTourEventArgs e) public Plateau(Partie p, NouveauTourEventArgs e)
{ {
NavigationPage.SetHasBackButton(this, false);
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent(); InitializeComponent();
BindingContext = e; code = e.Code;
joueur = e.Joueur;
BindingContext = new Tour(e);
}
private void CouleurPresee(Object sender, EventArgs e)
{
Label label = (Label)sender;
Couleur couleur = (Couleur)new CouleurVersCouleurMAUI().ConvertBack(label.TextColor, null, null, null);
try
{
code.AjouterJeton(new Jeton(couleur));
}
catch (CodeCompletException ignored)
{
DisplayAlert("Attention", "La code est plein", "OK");
}
}
private void SupprimerDernierJeton(Object sender, EventArgs e)
{
try
{
code.SupprimerDernierJeton();
}
catch(CodeVideException ignored)
{
DisplayAlert("Attention", "La code est vide", "OK");
}
}
private void ValiderCode(Object sender, EventArgs e)
{
try
{
joueur.Code(code);
}
catch (CodeIncompletException ignored)
{
DisplayAlert("Attention", "La code n'est pas complet", "OK");
}
} }
} }

@ -13,7 +13,7 @@
<Image Source="trophy.jpg" MaximumHeightRequest="100" MaximumWidthRequest="100"/> <Image Source="trophy.jpg" MaximumHeightRequest="100" MaximumWidthRequest="100"/>
</FlexLayout> </FlexLayout>
<Frame Margin="20" > <Frame Margin="20" >
<Label HorizontalOptions="Center" Text="Le joueur x a gagné" Style="{StaticResource TexteFrame}"/> <Label HorizontalOptions="Center" Text="{Binding}" Style="{StaticResource TexteFrame}"/>
</Frame> </Frame>
<Button Text="Menu" VerticalOptions="End" HorizontalOptions="Center"></Button> <Button Text="Menu" VerticalOptions="End" HorizontalOptions="Center"></Button>
</VerticalStackLayout> </VerticalStackLayout>

@ -1,9 +1,14 @@
using CoreLibrary;
using CoreLibrary.Events;
namespace MauiSpark.Pages; namespace MauiSpark.Pages;
public partial class Victoire : ContentPage public partial class Victoire : ContentPage
{ {
public Victoire() public Victoire(Partie partie, PartieTermineeEventArgs e)
{ {
InitializeComponent(); InitializeComponent();
}
BindingContext = $"Le joueur {e.Gagnants.First().Nom} a gagné";
}
} }
Loading…
Cancel
Save