Skip to content
This repository was archived by the owner on Dec 6, 2023. It is now read-only.

Commit 1c3a712

Browse files
committed
+ Paramètre
+ Couleur
1 parent 5930917 commit 1c3a712

File tree

7 files changed

+92
-39
lines changed

7 files changed

+92
-39
lines changed

Jeux de la vie.Avalonia/Controls/Grille_de_jeu_Control.axaml.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,25 @@ public void Nouveau_tableau(int taille_vertical, int taille_horizontal)
8787

8888
public void Sauvegarder_tableau(string chemin_du_fichier) => Grille_de_jeu.Save(chemin_du_fichier);
8989

90+
public void Définir_couleur(Color tableau, Color celulle)
91+
{
92+
93+
Color pixel;
94+
95+
for (int x = 0; x < grille_source.Width; x++)
96+
for (int y = 0; y < grille_source.Height; y++)
97+
{
98+
pixel = grille_source.GetPixel(x, y);
99+
100+
grille_source.SetPixel(
101+
x, y,
102+
pixel == Couleur_cellule ? celulle : tableau);
103+
}
104+
105+
Couleur_tableau = tableau;
106+
Couleur_cellule = celulle;
107+
}
108+
90109
public bool Déssiner(bool cellule, int position_vertical, int position_horizontal)
91110
{
92111
if (En_cours_dutilisation)

Jeux de la vie.Avalonia/Paramètres_de_l'application.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.ComponentModel;
23
using System.Drawing;
34
using System.IO;
45
using System.Text.Json;
@@ -7,11 +8,13 @@ namespace Jeux_de_la_vie.Avalonia
78
{
89
internal class Paramètres_de_lapplication
910
{
10-
public Size Taille_tableau = new(100, 100);
11-
public Color Couleur_tableau = Color.White;
12-
public Color Couleur_celulle = Color.Black;
11+
public Size Taille_tableau { get; set; } = new(100, 100);
12+
public int Couleur_tableau { get; set; } = Color.White.ToArgb();
13+
public int Couleur_celulle { get; set; } = Color.Black.ToArgb();
1314
public string? Dernier_tableau;
1415

16+
public static event EventHandler? Paramètre_changer;
17+
1518
public static Paramètres_de_lapplication Actuelle
1619
{
1720
get
@@ -39,17 +42,23 @@ public static Paramètres_de_lapplication Actuelle
3942
}
4043
}
4144

45+
/// <summary>
46+
/// Aplique les modifications et le notifis au abonnée
47+
/// </summary>
48+
/// <returns></returns>
4249
public static bool Sauvegarder()
4350
{
4451
try
4552
{
4653
var chemin_du_fichier_de_sauvegarde = Obtenir_le_chemin_du_fichier_de_sauvegarde();
47-
48-
var flux = File.OpenRead(chemin_du_fichier_de_sauvegarde);
49-
var json = JsonSerializer.Serialize(Actuelle);
54+
var json = JsonSerializer.Serialize(Actuelle, new JsonSerializerOptions()
55+
{
56+
WriteIndented = true,
57+
});
5058

5159
File.WriteAllText(chemin_du_fichier_de_sauvegarde, json);
5260

61+
Paramètre_changer?.Invoke(null, new EventArgs());
5362
return true;
5463
}
5564
catch

Jeux de la vie.Avalonia/Windows/MainWindow.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:controls="using:Jeux_de_la_vie.Avalonia.Controls"
66
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
7-
Width="800" Height="860"
7+
Width="700" Height="760"
88
x:Class="Jeux_de_la_vie.Avalonia.MainWindow"
99
Title="Automate cellulaire">
1010

Jeux de la vie.Avalonia/Windows/MainWindow.axaml.cs

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@ public partial class MainWindow : Window
1515
public MainWindow()
1616
{
1717
InitializeComponent();
18+
Initialisation();
1819

19-
Grille_de_jeu.Nouveau_tableau(100, 100);
20-
tableau_initial = new bool[100, 100];
20+
tableau_initial = new bool[
21+
Paramètres_de_lapplication.Actuelle.Taille_tableau.Width,
22+
Paramètres_de_lapplication.Actuelle.Taille_tableau.Height];
2123

22-
jeu_de_la_vie = new();
23-
jeu_de_la_vie.TableauActualisé += Jeu_de_la_vie_TableauActualisé;
24-
Définir_tableau(tableau_initial);
2524
}
2625
#endregion
2726

@@ -144,23 +143,6 @@ public void Speed_Number_box_Value_changed(object sender, int e)
144143
{
145144
jeu_de_la_vie.Définir_la_vitesse(10000 / e);
146145
}
147-
148-
private void Jeu_de_la_vie_TableauActualisé(object? sender, bool[,] état_actuel)
149-
{
150-
Grille_de_jeu.Déssiner(état_actuel);
151-
152-
cycle_actuelle++;
153-
Dispatcher.UIThread.Post(() =>
154-
{
155-
Cycle_Text.Text = $"{cycle_actuelle} / {cycle_maximum}";
156-
157-
if (cycle_maximum != 0 && cycle_actuelle > cycle_maximum)
158-
{
159-
Arrêter_la_génération();
160-
Lecture_tableau_Btn.IsEnabled = false;
161-
}
162-
});
163-
}
164146
#endregion
165147
}
166148
}

Jeux de la vie.Avalonia/Windows/Propriété_du_tableau_Window.axaml.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,17 @@ public IBrush Couleur_tableau
7474
public void Taille_lignes_TextBox_Input(object? sender, TextInputEventArgs e)
7575
{
7676
Appliquer_Button.IsEnabled = true;
77+
78+
if (!int.TryParse(e.Text, out _))
79+
Error(Couleur_cellule_TextBox, "La lignes contient des caractêre invalid");
7780
}
7881

7982
public void Taille_colonnes_TextBox_Input(object? sender, TextInputEventArgs e)
8083
{
8184
Appliquer_Button.IsEnabled = true;
85+
86+
if (!int.TryParse(e.Text, out _))
87+
Error(Couleur_cellule_TextBox, "La colonnes contient des caractêre invalid");
8288
}
8389

8490
public void Couleur_cellule_TextBox_Input(object? sender, TextInputEventArgs e)
@@ -99,17 +105,12 @@ public void Couleur_tableau_TextBox_Input(object? sender, TextInputEventArgs e)
99105

100106
public void Appliquer_Button_Click(object sender, RoutedEventArgs e)
101107
{
102-
try { lignes = Convert.ToInt32(Taille_lignes_TextBox.Text); }
103-
catch { Error(Taille_lignes_TextBox, "La lignes contient des caractêre invalid"); }
104-
105-
try { colonnes = Convert.ToInt32(Taille_colonnes_TextBox.Text); }
106-
catch { Error(Taille_colonnes_TextBox, "La colonnes contient des caractêre invalid"); }
107-
108-
try { couleur_cellule = Brush.Parse(Couleur_cellule_TextBox.Text); }
109-
catch { Error(Couleur_cellule_TextBox, "La cellule contient des caractêre invalid"); }
108+
lignes = Convert.ToInt32(Taille_lignes_TextBox.Text);
109+
colonnes = Convert.ToInt32(Taille_colonnes_TextBox.Text);
110+
couleur_cellule = Brush.Parse(Couleur_cellule_TextBox.Text);
111+
couleur_tableau = Brush.Parse(Couleur_tableau_TextBox.Text);
110112

111-
try { couleur_tableau = Brush.Parse(Couleur_tableau_TextBox.Text); }
112-
catch { Error(Couleur_tableau_TextBox, "Le tableau contient des caractêre invalid"); }
113+
Paramètres_de_lapplication.Sauvegarder();
113114

114115
Appliquer_Button.IsEnabled = false;
115116
}
@@ -131,6 +132,8 @@ private void Error(TextBox textBox, string message)
131132
{
132133
textBox.BorderBrush = Brush.Parse("Red");
133134
Message_derreur_Text.Text = message;
135+
136+
Appliquer_Button.IsEnabled = false;
134137
}
135138

136139
private void Propriété_du_tableau_Window_Propriété_changé(object? sender, EventArgs e)

Jeux de la vie.Avalonia/WindowsLogic/MainWindowLogic.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Avalonia.Controls;
22
using Avalonia.Interactivity;
3+
using Avalonia.Threading;
34
using Jeux_de_la_vie.Avalonia.Windows;
45
using Microsoft.VisualBasic.FileIO;
56
using System;
@@ -12,6 +13,15 @@ namespace Jeux_de_la_vie.Avalonia
1213
{
1314
public partial class MainWindow : Window
1415
{
16+
private void Initialisation()
17+
{
18+
Paramètres_de_lapplication.Paramètre_changer += Paramètres_de_lapplication_Paramètre_changer;
19+
20+
jeu_de_la_vie = new();
21+
jeu_de_la_vie.TableauActualisé += Jeu_de_la_vie_TableauActualisé;
22+
Définir_tableau(tableau_initial);
23+
}
24+
1525
private void Définir_tableau(bool[,] tableau)
1626
{
1727
tableau_initial = tableau;
@@ -149,5 +159,31 @@ private void Ajouter_tableau(bool[,] tableau, int possition_vertical, int possit
149159

150160
return tableau;
151161
}
162+
163+
private void Jeu_de_la_vie_TableauActualisé(object? sender, bool[,] état_actuel)
164+
{
165+
Grille_de_jeu.Déssiner(état_actuel);
166+
167+
cycle_actuelle++;
168+
Dispatcher.UIThread.Post(() =>
169+
{
170+
Cycle_Text.Text = $"{cycle_actuelle} / {cycle_maximum}";
171+
172+
if (cycle_maximum != 0 && cycle_actuelle > cycle_maximum)
173+
{
174+
Arrêter_la_génération();
175+
Lecture_tableau_Btn.IsEnabled = false;
176+
}
177+
});
178+
}
179+
180+
private void Paramètres_de_lapplication_Paramètre_changer(object? sender, EventArgs e)
181+
{
182+
183+
Grille_de_jeu.Définir_couleur(
184+
Color.FromArgb(Paramètres_de_lapplication.Actuelle.Couleur_tableau),
185+
Color.FromArgb(Paramètres_de_lapplication.Actuelle.Couleur_celulle));
186+
187+
}
152188
}
153189
}

Jeux de la vie/Jeux de la vie.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,8 @@
77
<Nullable>enable</Nullable>
88
</PropertyGroup>
99

10+
<ItemGroup>
11+
<Compile Remove="Automate.cs" />
12+
</ItemGroup>
13+
1014
</Project>

0 commit comments

Comments
 (0)