-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathweatherUnit.pas
131 lines (110 loc) · 3.31 KB
/
weatherUnit.pas
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
unit weatherUnit;
{$codepage utf-8}
interface
type
TWeather=(Soleil,Pluie,Neige,Orage); //Différents types de météo
// Init: initialise lse variables de l'unité
procedure initWeather();
// Getter : Retourne la météo actuelle
// ⚠️ Ne peut pas être utilisé pour modifier des variables
function getCurrentWeather():TWeather;
// Setter : Change la météo actuelle
procedure setCurrentWeather(valeur : TWeather);
// Getter : Retourne la météo du lendemain
// ⚠️ Ne peut pas être utilisé pour modifier des variables
function getFutureWeather():TWeather;
// Setter : Change la météo du lendemain
procedure setFutureWeather(valeur : TWeather);
// Getter : Retourne la valeur aléatoire
// ⚠️ Ne peut pas être utilisé pour modifier des variables
function getAleatoire():Integer;
// Setter : Change la valeur aléatoire
procedure setAleatoire(valeur:Integer);
// Choisis la météo pour le landemain
procedure randomWeather();
//Change la météo actuelle selon la saison
procedure saisonnalite();
implementation
uses dateUnit, GestionEcran;
var
futureWeather, // Météo du lendemain
currentWeather : TWeather; // Météo courante
aleatoire : Integer; // Nombre aléatoire
// Init: initialise lse variables de l'unité
procedure initWeather();
begin
currentWeather := Soleil;
randomWeather;
end;
// Getter : Retourne la météo actuelle
// ⚠️ Ne peut pas être utilisé pour modifier des variables
function getCurrentWeather():TWeather;
begin
getCurrentWeather := currentWeather;
end;
// Setter : Change la météo actuelle
procedure setCurrentWeather(valeur : TWeather);
begin
currentWeather := valeur;
end;
// Getter : Retourne la météo du lendemain
// ⚠️ Ne peut pas être utilisé pour modifier des variables
function getFutureWeather():TWeather;
begin
getFutureWeather := futureWeather;
end;
// Setter : Change la météo du lendemain
procedure setFutureWeather(valeur : TWeather);
begin
futureWeather := valeur;
end;
// Getter : Retourne la valeur aléatoire
// ⚠️ Ne peut pas être utilisé pour modifier des variables
function getAleatoire():Integer;
begin
getAleatoire := aleatoire;
end;
// Setter : Change la valeur aléatoire
procedure setAleatoire(valeur:Integer);
begin
aleatoire := valeur;
end;
// Choisis la météo pour le landemain
procedure randomWeather();
var
rdm : Integer;
begin
Randomize();
attendrems(10);
rdm := random(100);
setAleatoire(rdm);
saisonnalite;
end;
//On compare la valeur aléatoire précédemment calculée avec certains nombres afin de créer des chances différents pour chaque météo selon la saison.
procedure saisonnalite();
begin
case getSaisonActuelle of
0 : case getAleatoire of
0..49 : setFutureWeather(Soleil);
50..89 : setFutureWeather(Pluie);
90..99 : setFutureWeather(Orage);
end;
1 : case getAleatoire of
0..69 : setFutureWeather(Soleil);
70..89 : setFutureWeather(Pluie);
90..99 : setFutureWeather(Orage);
end;
2 : case getAleatoire of
0..9 : setFutureWeather(Soleil);
10..79 : setFutureWeather(Pluie);
80..99 : setFutureWeather(Orage);
end;
3 : case getAleatoire of
0..4 : setFutureWeather(Soleil);
5..29 : setFutureWeather(Pluie);
30..74 : setFutureWeather(Neige);
75..99 : setFutureWeather(Orage);
end;
end;
end;
end.