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
f2cf0913
Verified
Commit
f2cf0913
authored
Jun 09, 2021
by
Romain De Laage De Bellefaye
🌳
Browse files
Merge branch 'master' of gitlab.utc.fr:rdelaage/lo21-projet
parents
ecb86227
2e8ab032
Changes
3
Hide whitespace changes
Inline
Side-by-side
includes/voisinage.h
View file @
f2cf0913
...
...
@@ -14,6 +14,7 @@
#include
<iostream>
#include
<string>
#include
<vector>
#include
"parametragemodele.h"
using
namespace
std
;
...
...
@@ -94,15 +95,15 @@ class RegleVoisinageMoore : public RegleVoisinage {
};
class
RegleVoisinageArbitraire
:
public
RegleVoisinage
{
//définit la règle pour le voisinage arbitraire
private:
unsigned
int
nbVoisin
;
public:
int
getType
()
const
{
return
3
;
}
void
setNbVoisins
(
unsigned
int
r
)
{
nbVoisin
=
r
;
}
unsigned
int
getNbVoisin
()
{
return
nbVoisin
;
}
vector
<
Coordonnees
>
coordonnees
;
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
private:
unsigned
int
nbVoisin
;
public:
int
getType
()
const
override
{
return
3
;
}
void
setNbVoisins
(
unsigned
int
r
)
{
nbVoisin
=
r
;
}
unsigned
int
getNbVoisin
()
{
return
nbVoisin
;
}
vector
<
Coordonnees
>
coordonnees
;
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
const
override
;
// Calcul du voisinage en fonction de la cellule centre
vector
<
Coordonnees
>
getVoisinage
(
const
Reseau
&
r
,
const
QTableWidget
*
grid
);
// Dééfinition des coordonnées relatives pour le calcul du voisinage
};
#endif
/* voisinage_h */
src/autocell.cpp
View file @
f2cf0913
...
...
@@ -65,10 +65,11 @@ AutoCell::AutoCell(QWidget* parent):QWidget(parent)
// récupération des automates en mémoire
/*vector<QString> noms_modeles = database.getAutomates();
for(auto : nom, noms_modeles){
liste->addItem(nom);
}*/
std
::
vector
<
QString
>
noms_modeles
=
Database
::
getInstance
().
getAutomates
();
for
(
size_t
i
=
0
;
i
<
noms_modeles
.
size
()
;
i
++
){
std
::
cout
<<
"modele :"
<<
noms_modeles
[
i
].
toStdString
()
<<
std
::
endl
;
liste
->
addItem
(
noms_modeles
[
i
]);
}
liste
->
addItem
(
"modèle 1"
);
liste
->
addItem
(
"modèle 2"
);
...
...
src/voisinage.cpp
View file @
f2cf0913
...
...
@@ -34,45 +34,33 @@ Voisinage::~Voisinage() {
}
void
RegleVoisinageArbitraire
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
const
{
//définir get?
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
unsigned
int
ord
=
v
.
celluleCentre
->
ord
;
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
unsigned
int
ord
=
v
.
celluleCentre
->
ord
;
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
for
(
in
t
nb
=
0
;
nb
<
coordonnees
.
size
();
nb
++
){
v
.
voisinage
[
nb
]
=
&
r
.
getReseau
()[
abs
-
coordonnees
[
nb
].
x
]
[
ord
-
coordonnees
[
nb
].
y
];
}
for
(
size_
t
nb
=
0
;
nb
<
coordonnees
.
size
();
nb
++
){
v
.
voisinage
[
nb
]
=
&
r
.
getReseau
()[
(
abs
-
coordonnees
[
nb
].
x
)
%
hauteur
]
[
(
ord
-
coordonnees
[
nb
].
y
)
%
largeur
];
}
}
//Coordonnees RegleVoisinageArbitraire::getVoisinage(const Reseau& r) {
//
// vector<Coordonnees> coordonnees;
//
// Cellule* cellulecentre = celluleCentre;
//
//
// 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
// //}
//
//}
vector
<
Coordonnees
>
RegleVoisinageArbitraire
::
getVoisinage
(
const
Reseau
&
r
,
const
QTableWidget
*
grid
)
{
vector
<
Coordonnees
>
coordonnees
;
int
k
=
0
;
for
(
unsigned
int
i
=
0
;
i
<
5
;
i
++
)
{
for
(
unsigned
int
j
=
0
;
j
<
5
;
j
++
){
if
(
grid
->
item
(
i
,
j
)
->
background
()
==
Qt
::
red
){
coordonnees
[
k
].
x
=
(
2
-
i
);
coordonnees
[
k
].
y
=
(
2
-
j
);
k
+=
1
;
}
}
}
return
coordonnees
;
}
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