Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Romain De Laage De Bellefaye
LO21-projet
Commits
58e0bc2d
Verified
Commit
58e0bc2d
authored
Jun 08, 2021
by
Romain De Laage De Bellefaye
🌳
Browse files
Correct a few mistakes
parent
0739b0fe
Changes
3
Hide whitespace changes
Inline
Side-by-side
includes/Automate.h
View file @
58e0bc2d
...
...
@@ -22,8 +22,7 @@ class Automate {
unsigned
int
l
;
bool
isRunning
;
Automate
()
:
delai
(
500
),
fonction
(
nullptr
),
regleVoisinage
(
nullptr
),
itBuffer
(
buffer
.
begin
()),
h
(
0
),
l
(
0
),
isRunning
(
false
),
title
(
""
)
{}
//modifié
~
Automate
()
=
default
;
Automate
()
:
delai
(
500
),
fonction
(
nullptr
),
regleVoisinage
(
nullptr
),
itBuffer
(
buffer
.
begin
()),
h
(
0
),
l
(
0
),
isRunning
(
false
),
title
(
""
)
{
timer
.
automate
=
this
;
}
Automate
(
const
Automate
&
a
)
=
delete
;
Automate
&
operator
=
(
const
Automate
&
a
)
=
delete
;
std
::
string
getTitle
()
const
{
return
title
;
}
...
...
@@ -32,7 +31,7 @@ class Automate {
private:
int
timerID
;
Automate
*
automate
;
Timer
(
Automate
*
a
)
:
timerID
(
0
)
,
automate
(
a
)
{}
Timer
()
:
timerID
(
0
)
{}
~
Timer
()
{
destroy
();
}
protected:
...
...
@@ -54,9 +53,10 @@ class Automate {
friend
class
Automate
;
};
Timer
timer
(
this
)
;
Timer
timer
;
public:
~
Automate
()
=
default
;
/// récupérer une référence sur l'instance unique du singleton Automate
static
Automate
&
getInstance
()
{
if
(
instance
==
nullptr
)
{
...
...
includes/voisinage.h
View file @
58e0bc2d
...
...
@@ -90,8 +90,8 @@ class RegleVoisinageArbitraire : public RegleVoisinage { //définit la règle po
void
setNbVoisins
(
unsigned
int
r
)
{
nbVoisin
=
r
;
}
unsigned
int
getNbVoisin
()
{
return
nbVoisin
;
}
vector
<
Coordonnees
>
coordonnees
;
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
,
const
Coordonnees
co
)
const
;
// Calcul du voisinage en fonction de la cellule centre
Coordonnees
getVoisinage
(
const
Reseau
&
r
);
// Dééfinition des coordonnées relatives pour le calcul du voisinage
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
const
;
// Calcul du voisinage en fonction de la cellule centre
//
Coordonnees getVoisinage(const Reseau& r); // Dééfinition des coordonnées relatives pour le calcul du voisinage
};
#endif
/* voisinage_h */
src/voisinage.cpp
View file @
58e0bc2d
...
...
@@ -13,36 +13,36 @@ void Voisinage::setr(unsigned int rayon){
void
RegleVoisinageNeumann
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
{
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
int
nb
=
0
;
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
unsigned
int
ord
=
v
.
celluleCentre
->
ord
;
unsigned
int
cellX
=
v
.
celluleCentre
->
abs
;
unsigned
int
cellY
=
v
.
celluleCentre
->
ord
;
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
for
(
int
i
=
-
v
.
r
;
i
<=
v
.
r
;
i
++
)
for
(
int
j
=
-
v
.
r
;
j
<=
v
.
r
;
j
++
)
if
(
abs
(
i
)
+
abs
(
j
)
<=
v
.
r
&&
i
!=
0
&&
j
!=
0
)
v
.
voisinage
.
push_back
(
&
r
.
getReseau
()[(
abs
+
i
)
%
hauteur
][(
ord
+
j
)
%
largeur
]);
v
.
voisinage
.
push_back
(
&
r
.
getReseau
()[(
cellY
+
i
)
%
hauteur
][(
cellX
+
j
)
%
largeur
]);
}
void
RegleVoisinageMoore
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
{
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
int
nb
=
0
;
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
unsigned
int
ord
=
v
.
celluleCentre
->
ord
;
unsigned
int
cellX
=
v
.
celluleCentre
->
abs
;
unsigned
int
cellY
=
v
.
celluleCentre
->
ord
;
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
for
(
int
i
=
-
v
.
r
;
i
<=
v
.
r
;
i
++
)
for
(
int
j
=
-
v
.
r
;
j
<=
v
.
r
;
j
++
)
if
(
abs
(
i
)
<=
v
.
r
&&
abs
(
j
)
<=
v
.
r
&&
i
!=
0
&&
j
!=
0
)
v
.
voisinage
.
push_back
(
&
r
.
getReseau
()[(
abs
+
i
)
%
hauteur
][(
ord
+
j
)
%
largeur
]);
v
.
voisinage
.
push_back
(
&
r
.
getReseau
()[(
cellY
+
i
)
%
hauteur
][(
cellX
+
j
)
%
largeur
]);
}
Voisinage
::~
Voisinage
()
{
voisinage
.
clear
();
}
void
RegleVoisinageArbitraire
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
{
//définir get?
void
RegleVoisinageArbitraire
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
const
{
//définir get?
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
...
...
@@ -51,37 +51,37 @@ void RegleVoisinageArbitraire::calculVoisinage(Voisinage &v, const Reseau& r) {
unsigned
int
largeur
=
r
.
getLargeur
();
for
(
int
nb
=
0
;
nb
<
coordonnees
.
size
();
nb
++
){
v
.
voisinage
[
nb
]
=
&
r
.
getReseau
()[
abs
-
coordonnees
[
nb
].
getx
()
]
[
ord
-
coordonnees
[
nb
].
gety
()
];
v
.
voisinage
[
nb
]
=
&
r
.
getReseau
()[
abs
-
coordonnees
[
nb
].
x
]
[
ord
-
coordonnees
[
nb
].
y
];
}
}
Coordonnees
RegleVoisinageArbitraire
::
getVoisinage
(
const
Reseau
&
r
)
{
vector
<
Coordonnees
>
coordonnees
;
Cellule
*
cellulecentre
=
getC
elluleCentre
()
;
for
(
int
k
=
0
;
k
<
nbVoisin
;
k
++
)
{
unsigned
int
i
,
j
;
while
(
i
>=
r
.
getHauteur
()
||
j
>=
r
.
getLargeur
())
{
cout
<<
"Entrez l'abscisse de la"
<<
k
<<
"ieme cellule.
\n
"
;
cin
>>
i
;
cout
<<
"Entrez l'ordonnee de la "
<<
k
<<
"ieme cellule.
\n
"
;
cin
>>
j
;
if
(
i
>=
r
.
getHauteur
()
||
j
>=
r
.
getLargeur
())
cout
<<
"Coordonnees incorrectes !
\n
"
;
}
if
(
i
<
r
.
getHauteur
()
&&
j
<
r
.
getLargeur
())
{
coordonnees
[
k
].
x
=
cellulecentre
->
abs
-
i
;
coordonnees
[
k
].
y
=
cellulecentre
->
ord
-
j
;
}
}
return
coordonnees
;
// While (!utilisateur clique sur bouton valider){
//recuprer abs et ord de Cellule slectionne;
//rentrer la diffrence des coordonnes dans le vecteur co
//}
}
//
Coordonnees RegleVoisinageArbitraire::getVoisinage(const Reseau& r) {
//
//
vector<Coordonnees> coordonnees;
//
//
Cellule* cellulecentre =
c
elluleCentre;
//
//
//
for (int k = 0; k < nbVoisin; k++) {
//
unsigned int i, j;
//
while (i >= r.getHauteur() || j >= r.getLargeur()) {
//
cout << "Entrez l'abscisse de la" << k << "ieme cellule.\n";
//
cin >> i;
//
cout << "Entrez l'ordonnee de la " << k << "ieme cellule.\n";
//
cin >> j;
//
if (i >= r.getHauteur() || j >= r.getLargeur())
//
cout << "Coordonnees incorrectes !\n";
//
}
//
if (i < r.getHauteur() && j < r.getLargeur()) {
//
coordonnees[k].x = cellulecentre->abs - i;
//
coordonnees[k].y = cellulecentre->ord - j;
//
}
//
}
//
//
return coordonnees;
//
// While (!utilisateur clique sur bouton valider){
//
//recuprer abs et ord de Cellule slectionne;
//
//rentrer la diffrence des coordonnes dans le vecteur co
//
//}
//
//
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment