This repository has been archived by the owner on Jul 3, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathInstellingen.xaml.cs
276 lines (258 loc) · 9.66 KB
/
Instellingen.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Memorygame
{
/// <summary>
/// Instellingen class kan op 2 manieren worden aangeroepen:
/// 1. zonder parameters, standaard instellingen worden ingeladen. Gebruik deze indien het instellingenbestand leeg is
/// 2. Met 1 string waarin het pad instellingenbesand staat. Dit bestand wordt dan uitgelezen.
/// </summary>
public partial class Instellingen : Window, INotifyPropertyChanged
{
/// hieronder staan variabelen welke gevuld worden met instellingen. Alle aan roepen via get set methode. Ivm wijzigen op scherm dm.v. PropertyGewijzigd .
int _breedte;
int _lengte;
int _aantalSets;
string _thema;
// pad instellingenbestand
string padInstellingen;
// arrat met instellingen. Wordt gevuld via uitlezen methode.
string[] instellingen;
/// <summary>
/// Wijzig breedte int en voer propertyGewijzigd uit
/// </summary>
public int breedte
{
get
{
return _breedte;
}
set
{
_breedte = value;
PropertyGewijzigd();
}
}
/// <summary>
/// Wijzig lengte int en voer propertyGewijzigd uit
/// </summary>
public int lengte
{
get
{
return _lengte;
}
set
{
_lengte = value;
PropertyGewijzigd();
}
}
/// <summary>
/// Wijzig het aantal te raden sets
/// Verifieer eerst of het aantal sets geldig is, anders foutmelding weergeven met verdere instructies
/// </summary>
public int aantalSets
{
get { return _aantalSets; }
set
{
if (value < 1)
value = _aantalSets;
if (value > (breedte * lengte) / 2)
{
value = _aantalSets;
MessageBox.Show("Je hebt een grid van " + breedte + " * " + lengte + ". Hierin zijn maximaal " + Convert.ToString((breedte * lengte) / 2) + " combinatie's mogelijk.");
}
if (((breedte * lengte - (breedte * lengte % 2)) % value) != 0)
{
value = _aantalSets;
MessageBox.Show("Dit aantal sets is niet mogelijk met het huidige grid");
}
_aantalSets = value;
PropertyGewijzigd();
}
}
/// <summary>
/// String met hierin het thema
/// </summary>
public string thema
{
get
{
return _thema;
}
set
{
_thema = value;
PropertyGewijzigd();
}
}
/// <summary>
/// Controleerd of instellingenbestand is ingevuld en leest deze in in instellingen stringArray.
/// Indien bestand niet bestaat worden standaard instellingen toegepast dmv standaartInstellingen methode.
/// </summary>
public Instellingen(string _padInstelingen)
{
InitializeComponent();
DataContext = this;
padInstellingen = _padInstelingen;
// probeer of instellingen bestand leesbaar is en zet in instellingen array. Indien niet mogelijk geef een foutmelding.
try { instellingen = File.ReadAllLines(padInstellingen); }
catch (Exception) { MessageBox.Show("Het instellingenbestand is niet beschikbaar. Probeer het over enkele seconden opnieuw of probeer het spel opnieuw te starten."); return; };
// als instellingen bestand leeg is, dan standaard instellingen toe passen
if (instellingen.Length == 0)
{
standaardInstellingen();
}
// als array vullen gelukt is, vul instellingen variabelen in adv uitgelezen array
else
{
changeBreedteLengte(Convert.ToInt32(instellingen[0]), Convert.ToInt32(instellingen[1]));
aantalSets = Convert.ToInt32(instellingen[2]);
thema = instellingen[3];
}
}
/// <summary>
/// Indien geen bestanden aanwezig, geef standaard instellingen mee
/// </summary>
public Instellingen()
{
standaardInstellingen();
}
/// <summary>
/// Vul standaard instellingen in
/// </summary>
private void standaardInstellingen()
{
changeBreedteLengte(4, 4);
aantalSets = 1;
thema = "Smiley's";
}
/// <summary>
/// Genereer string met hierin de instellingen
/// </summary>
/// <returns>string Array in volgorde: [0] = breedte [1] = lengte [2] = aantal sets te raden [3] = thema</returns>
public string[] ophalen()
{
string[] _return = new string[5];
_return[0] = Convert.ToString(breedte);
_return[1] = Convert.ToString(lengte);
_return[2] = Convert.ToString(aantalSets);
_return[3] = thema;
return _return;
}
/// <summary>
/// Verander breedte en lengte variabelen en pas string aan tbv instellingenscherm
/// Bereken eerst of grid mogelijk is icm aantal sets
/// </summary>
/// <param name="_breedte">Breedte grid</param>
/// <param name="_lengte">Lengte Grid</param>
private void changeBreedteLengte(int _breedte, int _lengte)
{
if ((_breedte * _lengte) / 2 < aantalSets)
{
MessageBox.Show("Dit Grid kan niet gekozen worden in combinatie met het aantal minimale te raden combo's van " + Convert.ToString(aantalSets));
return;
}
breedte = _breedte;
lengte = _lengte;
}
/// <summary>
/// event voor update propery indien gewijzigd
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Update property als content in variabele is veranderd
/// </summary>
/// <param name="propertyName">De property met een nieuwe waarde</param>
protected void PropertyGewijzigd([CallerMemberName]string propertyName = null)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
/// <summary>
/// Als er onder instellingen voor grid op 4*4 wordt geklikt, verander deze instellingen dmv changeBreedteLengte methode
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void setKlik4(object sender, RoutedEventArgs e)
{
changeBreedteLengte(4, 4);
}
/// <summary>
/// Als er onder instellingen voor grid op 5*5 wordt geklikt, verander deze instellingen dmv changeBreedteLengte methode
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void setKlik5(object sender, RoutedEventArgs e)
{
changeBreedteLengte(5, 5);
}
/// <summary>
/// Als er onder instellingen voor grid op 6*6 wordt geklikt, verander deze instellingen dmv changeBreedteLengte methode
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void setKlik6(object sender, RoutedEventArgs e)
{
changeBreedteLengte(6, 6);
}
/// <summary>
/// Als er onder instellingen voor thema op smileys wordt geklikt, verander deze instellingen in array
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void themaKlikSmileys(object sender, RoutedEventArgs e)
{
thema = "Smiley's";
}
/// <summary>
/// Als er onder instellingen voor thema op dieren wordt geklikt, verander deze instellingen in array
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void themaKlikDieren(object sender, RoutedEventArgs e)
{
thema = "Dieren";
}
/// <summary>
/// Als er onder instellingen voor thema op voedsel wordt geklikt, verander deze instellingen in array
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void themaKlikVoedsel(object sender, RoutedEventArgs e)
{
thema = "Voedsel";
}
/// <summary>
/// Functie als er op instellingen opslaan knop wordt geklikt.
/// schijf instellingen weg in volgorde: breedte, lengte, aantalSets, Thema
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Opslaan(object sender, RoutedEventArgs e)
{
File.WriteAllText(padInstellingen, string.Format("{0}\n{1}\n{2}\n{3}", lengte, breedte, aantalSets, thema));
this.Close();
}
}
}