Fusion indicateurs
continuous-integration/drone/push Build is failing Details

master
Céleste BARBOSA 11 months ago
commit 4fc193ce37

@ -10,6 +10,7 @@ namespace CoreLibrary.Joueurs
{
[DataContract]
[KnownType(typeof(ReglesClassiques))]
[KnownType(typeof(ReglesDifficiles))]
public class Joueur : IEstPersistant
{
public event EventHandler<JoueurSeConnecterEventArgs>? JoueurSeConnecter;

@ -9,6 +9,7 @@ namespace CoreLibrary
{
[DataContract]
[KnownType(typeof(ReglesClassiques))]
[KnownType(typeof(ReglesDifficiles))]
public class Partie : IEstPersistant
{
public event EventHandler<PartieDemanderJoueurEventArgs>? PartieDemanderJoueur;

@ -0,0 +1,24 @@
using System.Runtime.Serialization;
namespace CoreLibrary.Regles
{
[DataContract]
public class ReglesDifficiles : IRegles
{
public string Nom => "Règles difficile";
public int NbJoueurs => 2;
public int NbTour => 12;
public int TailleCode => 6;
public override bool Equals(object? obj)
{
if (obj == null || obj is not ReglesDifficiles) return false;
return true;
}
public override int GetHashCode()
{
return HashCode.Combine(Nom, NbJoueurs, NbTour, TailleCode);
}
}
}

File diff suppressed because it is too large Load Diff

@ -5,18 +5,21 @@ namespace MauiSpark.Convertisseurs
{
public class IndicateurVersCouleurMAUI : IValueConverter
{
public static Color Noir { get; private set; } = Color.FromArgb("#000000");
public static Color Blanc { get; private set; } = Color.FromArgb("#FFFFFF");
public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
if (value is not Indicateur) return "black";
if (value is not Indicateur) return Noir;
switch (value)
{
case Indicateur.BonnePlace:
return "black";
return Noir;
case Indicateur.BonneCouleur:
return "white";
return Blanc;
default:
return "black";
return Noir;
}
}

@ -124,6 +124,9 @@
<MauiXaml Update="Vues\ImageResultatVue.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="Vues\IndicateurVue.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="Vues\JetonVue.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>

@ -14,8 +14,9 @@
<Image Grid.Row="1" Source="star.png" WidthRequest="100" HorizontalOptions="Start" VerticalOptions="Center" Margin="0"/>
</FlexLayout>
<Grid RowDefinitions="*" ColumnDefinitions="*">
<Button x:Name="ReglesClassiques" Text="ReglesClassiques" Style="{StaticResource ButtonClassementRegle}" Clicked="QuandBoutonPresse"/>
<Grid RowDefinitions="*" ColumnDefinitions="*,*">
<Button x:Name="ReglesClassiques" Text="Régles Classiques" Style="{StaticResource ButtonClassementRegle}" Clicked="QuandBoutonPresse"/>
<Button Grid.Column="1" x:Name="ReglesDifficiles" Text="Régles Difficiles" Style="{StaticResource ButtonClassementRegle}" Clicked="QuandBoutonPresse"/>
</Grid>
<Border Margin="20" StrokeThickness="2" StrokeShape="RoundRectangle 10">

@ -121,6 +121,12 @@ namespace MauiSpark.Pages
return;
}
if (sender == ReglesDifficiles)
{
classement.Regles = new ReglesDifficiles();
return;
}
if (classement.TypeTri == nameof(sender)) {
classement.Inverser = !classement.Inverser;
return;

@ -7,7 +7,7 @@
<Grid
ColumnDefinitions="*"
RowDefinitions="*, *">
RowDefinitions="*, *,*">
<vues:TitreVue Texte="mode de jeu"/>
@ -16,5 +16,10 @@
Grid.Row="1"
Text="Règles classiques"
Clicked="QuandReglesPresse"/>
<Button
x:Name="ReglesDifficiles"
Grid.Row="2"
Text="Règles difficiles"
Clicked="QuandReglesPresse"/>
</Grid>
</ContentPage>

@ -18,6 +18,8 @@ public partial class ModePage : ContentPage
if (sender.Equals(ReglesClassiques))
partie = MauiProgram.Manageur.NouvellePartie(new ReglesClassiques());
else if (sender.Equals(ReglesDifficiles))
partie = MauiProgram.Manageur.NouvellePartie(new ReglesDifficiles());
else
return;

@ -36,10 +36,13 @@
<BindableLayout.ItemTemplate>
<DataTemplate>
<Label Text="O"/>
<vues:IndicateurVue Couleur="{Binding ., Converter={StaticResource IndicateurVersCouleurMAUI}}"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"/>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
<StackLayout
Orientation="Horizontal"

@ -9,7 +9,12 @@
<ScrollView>
<StackLayout>
<vues:TitreVue Texte="Règles"/>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,*">
<vues:IndicateurVue Couleur="White" WidthRequest="100" HeightRequest="100" />
<Label Grid.Row="1" FontSize="Medium" Text="Cette indicateur indique une bonne couleur" HorizontalOptions="Center"/>
<vues:IndicateurVue Grid.Column="1" Couleur="Black" WidthRequest="100" HeightRequest="100"/>
<Label Grid.Row="1" Grid.Column="1" FontSize="Medium" Text="Cette indicateur indique une bonne place" HorizontalOptions="Center"/>
</Grid>
<StackLayout BindableLayout.ItemsSource="{Binding .}">
<BindableLayout.ItemTemplate>
<DataTemplate>

@ -12,14 +12,20 @@ public partial class ReglesPage : ContentPage
{
Titre = "Règles classiques",
Description = "Le but du jeu est de découvrir la combinaison. On génère aléatoirement deux combinaisons de 4 couleurs (six couleurs au total : jaune, bleu, rouge, vert, blanc et noir), une combinaison pour chaque joueur. Deux joueurs se battent pour trouver la combinaison en premier, il y a douze tours. Le premier joueur à trouver la combinaison à gagner, chaque joueur a le même nombre de coups à réaliser. Donc si le joueur un à trouvé la solution au bout de huit coups, le joueur deux doit finir son huitième coup. Si le joueur deux trouve la combinaison, les deux joueurs sont à égalité. Sinon, le joueur un gagne. Pour trouver la combinaison, les joueurs disposent de quatre indicateurs. Ces indicateurs sont quatre ronds qui représentent les quatre couleurs sélectionnées par le joueur. Un rond noir signifie quune couleur est à la bonne place, un rond blanc correspond à une mauvaise place et s'il ny a pas dindicateur aucune des couleurs nest présentent dans la combinaison."
};
public ReglesPage()
};
private static readonly Regles reglesDifficiles = new Regles()
{
Titre = "Règles difficiles",
Description = "Le but du jeu est de découvrir la combinaison. On génère aléatoirement deux combinaisons de 6 couleurs (six couleurs au total : jaune, bleu, rouge, vert, blanc et noir), une combinaison pour chaque joueur. Deux joueurs se battent pour trouver la combinaison en premier, il y a douze tours. Le premier joueur à trouver la combinaison à gagner, chaque joueur a le même nombre de coups à réaliser. Donc si le joueur un à trouvé la solution au bout de huit coups, le joueur deux doit finir son huitième coup. Si le joueur deux trouve la combinaison, les deux joueurs sont à égalité. Sinon, le joueur un gagne. Pour trouver la combinaison, les joueurs disposent de quatre indicateurs. Ces indicateurs sont quatre ronds qui représentent les 6 couleurs sélectionnées par le joueur. Un rond noir signifie quune couleur est à la bonne place, un rond blanc correspond à une mauvaise place et s'il ny a pas dindicateur aucune des couleurs nest présentent dans la combinaison."
};
public ReglesPage()
{
NavigationPage.SetHasNavigationBar(this, false);
BindingContext = (Regles[])[
reglesClassiques
reglesClassiques,reglesDifficiles
];
InitializeComponent();

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiSpark.Vues.IndicateurVue"
x:Name="indicateurVue">
<Grid
x:Name="Grid"
SizeChanged="QuandTailleChangee"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<Rectangle
x:Name="Carre"
Fill="{Binding Couleur, Source={x:Reference indicateurVue}}">
</Rectangle>
</Grid>
</ContentView>

@ -0,0 +1,28 @@
using CoreLibrary.Core;
using MauiSpark.Convertisseurs;
using System.Globalization;
namespace MauiSpark.Vues;
public partial class IndicateurVue : ContentView
{
public static readonly BindableProperty CouleurProperty = BindableProperty.Create(nameof(Couleur), typeof(Color), typeof(IndicateurVue), default(Color));
public Color Couleur
{
get => (Color)GetValue(CouleurProperty);
set => SetValue(CouleurProperty, value);
}
public IndicateurVue()
{
InitializeComponent();
BindingContext = this;
}
private void QuandTailleChangee(object sender, EventArgs e)
{
double taille = Math.Min(Grid.Width, Grid.Height) / 2;
Carre.WidthRequest = Carre.HeightRequest = taille;
}
}
Loading…
Cancel
Save