Il s’agira de construire une bibliothèque de fonction, qui permettra le dessin de figures en utilisant l’outil turtle de python.
Python 100.00%
projet1-poo2-gl-2021's Introduction
Projet1-POO2-GL-2021
C'est un projet de Programmation Orientee Object 2 realise par Fatou DIOUF et Makhtar SARR, etudiants en Licence 3 Informatique option Genie Logiciel. Il s’agira de construire une bibliothèque de fonction, qui permettra le dessin de figures en utilisant l’outil turtle de python.
Bibliotheque genieCivilOuvrage2D.py
Cette bibliotheque importe la bibliotheque turtle. Elle contient une variable figure de type Turtle() et les methodes suivantes:
cercle;
demi-cercle;
carre;
triangle;
rectangle;
polygone;
trapeze;
losange;
elypse.
Diagramme des flux
Tableau des flux
Programme Principal
Fournit(Entrées)
Reçoit(Sorties)
cercle
rayon
Rien
demi-cercle
rayon
Rien
Carre
cote
Rien
triangle
coteA, coteB, coteC
Rien
rectangle
longueur, largeur
Rien
polygone
nbrCote, cote1
Rien
trapeze
base1, base2, coteD, coteG
Rien
losange
cote
Rien
elypse
rayon
Rien
### Fonction cercle
#### Description
Cette methode dessine un **cercle** en utilisant la methode `circle` de la bibliotheque `turtle`. Elle prend en parametre le `rayon` du cercle a tracer en pixel, la `couleur` qui est optionnelle.
#### Code python
```python
def cercle(rayon, couleur = "black"):
figure.color(couleur)
figure.circle(rayon)
```
#### Resultat
```python
cercle(100)
```
![cercle](images/cercle.png)
### Fonction demi-cercle
#### Description
Cette methode va nous permettre de dessiner un **demi-cercle** avec toujours la methode `circle` de `turtle`, mais dans ce cas nous allons renseigner l'angle d'arret. Elle prend un parametre obligatoire, le `rayon` et un optionnel, la `couleur`.
#### Code python
```python
def demiCercle(rayon, couleur = "black"):
figure.left(90)
figure.color(couleur)
figure.circle(rayon, 180)
```
#### Resultat
```python
demiCercle(100)
```
![demiCercle](images/demi-cercle.png)
### Fonction carre
#### Description
Cette methode va nous permettre de dessiner un carre avec `turtle` en utilisant une boucle `for`. Elle prend un parametre obligatoire, `cote` du carre en pixel et deux optionnels, la `couleur` et le remplissage ici `remplis`.
#### Code python
```python
def carre(cote, couleur = "black", remplis = "white"):
figure.color(couleur, remplis)
for i in range(4):
figure.forward(cote)
figure.left(90)
```
#### Resultat
```python
carre(100)
```
![carre](images/carre.png)
### Fonction triangle
#### Description
Cette methode va nous permettre de dessiner un **triangle** avec `turtle` en utilisant le théorème d’**Al Kashi!
**. Elle prend trois parametres obligatoires, `coteA`, `coteB`, `coteC` qui represente la mesure des trois cotes en pixel et deux optionnels, la `couleur` et le remplissage ici `couleur1`.
#### Code python
```python
def triangle(coteA, coteB, coteC, couleur = "black", couleur1 = "white"):
figure.color(couleur, couleur1)
angleB = degrees(acos(((coteA**2) + (coteB**2) - (coteC**2))/(2*coteA*coteB)))
figure.forward(coteA)
figure.left(180 - angleB)
angleC = degrees(acos(((coteB**2) + (coteC**2) - (coteA**2))/(2*coteB*coteC)))
figure.forward(coteB)
figure.left(180 - angleC)
figure.forward(coteC)
angleA = degrees(acos(((coteB**2) + (coteA**2) - (coteC**2))/(2*coteB*coteA)))
figure.left(180 - angleA)
```
#### Resultat
```python
triangle(100, 90, 70)
```
![triangle](images/triangle.png)
### Fonction rectangle
#### Description
Cette methode va nous permettre de dessiner un **rectangle** avec `turtle` en utilisant une boucle `for`. Elle prend deux parametres obligatoires, `longueur`, `largeur` en pixel et deux optionnels, la `couleur` du contour et le remplissage ici `couleur2`.
#### Code python
```python
def rectangle(longueur, largeur, couleur = "black", couleur2='black'):
figure.color(couleur, couleur2)
if longueur != largeur:
for i in range(2):
figure.forward(longueur)
figure.left(90)
figure.forward(largeur)
figure.left(90)
else:
print("erreur")
```
#### Resultat
```python
rectangle(100, 50)
```
![rectangle](images/rectangle.png)
### Fonction polygone
#### Description
Cette methode va nous permettre de dessiner un **polygone** avec `turtle` en utilisant une boucle `for`. Elle prend deux parametres obligatoires, `nbrCote`, `cote1` et deux optionnels, `cote2` et `cote3`.
#### Code python
```python
def polygone(nbrCote, cote1, cote2 = 0, cote3 = 0):
if nbrCote == 3 and cote3 != 0:
triangle(cote1, cote2, cote3)
elif nbrCote == 4 and cote2 == 0:
carre(cote1)
elif nbrCote == 4 and cote3 == 0:
rectangle(cote1, cote2)
elif nbrCote > 4 and cote2 == 0:
for i in range(nbrCote):
figure.forward(cote1)
figure.left(360/nbrCote)
else:
print("erreur")
```
#### Resultat
```python
polygone(5, 50)
```
![polygone](images/polygone.png)
### Fonction trapeze
#### Description
Cette methode va nous permettre de dessiner un **tapeze** avec `turtle` en utilisant des methodes telles que `forward` et `left`. Elle prend 4 parametres obligatoires, `base1`, `base2`, `coteD`, `coteG` et deux optionnels, `couleur` et `couleur2`.
#### Code python
```python
def trapeze(base1, base2, coteD, coteG, couleur = "black", couleur2 = "black"):
figure.color(couleur, couleur2)
figure.forward(base1)
figure.left(30)
figure.forward(coteD)
figure.left(150)
figure.forward(base2)
figure.left(150)
figure.forward(coteG)
```
#### Resultat
```python
trapeze(85, 210, 75, 75)
```
![trapeze](images/trapeze.png)
### Fonction losange
#### Description
Cette methode va nous permettre de dessiner un **losange** avec `turtle` en utilisant des methodes telles que `forward` qui nous permet d'avancer et `right` qui nous permet de tourner a l'angle voulu dans une boucle `for`. Elle prend un parametre obligatoires, `cote` et deux optionnels, `couleur` et `couleur2` pour le contour et le remplissage.
#### Code python
```python
def losange(cote, couleur = "black", couleur2 = "black"):
figure.color(couleur, couleur2)
figure.right(-30)
for i in range(4):
figure.forward(cote)
figure.right(60*(1+i%2))
```
#### Resultat
```python
losange(100)
```
![losange](images/losange.png)
### Fonction elypse
#### Description
Cette methode va nous permettre de dessiner un **elypse** avec `turtle` en utilisant des methodes telles que `forward` qui nous permet d'avancer, `left` qui nous permet de tourner a gauche selon l'angle voulu, `circle` et une boucle `for`. Elle prend un parametre obligatoires, `rayon` et un optionnel, `couleur`.
#### Code python
```python
def elypse(rayon, couleur = "black"):
figure.color(couleur)
figure.left(135)
for i in range(2) :
figure.circle(rayon, 90)
figure.circle(rayon//4, 90)
```
#### Resultat
```python
elypse(100)
```
![elypse](images/elypse.png)
Cliquer ici pour voir le code complet de [`genieCivilOuvrage2D.py`](https://github.com/makhtar-sarr/Projet1-POO2-GL-2021/blob/main/genieCivilOuvrage2D.py)
## Pont
Dans ce fichier on a dessine un pont grace aux bibliotheques `genieCivilOuvrage2D` et `turtle`. Ci-dessous se trouve le resulte du pont.
![pont](images/pont.png)
Cliquer ici pour voir le code complet de [`pont.py`](https://github.com/makhtar-sarr/Projet1-POO2-GL-2021/blob/main/pont.py)
## Facade
Dans ce fichier on a dessine la facade d'un maison grace aux bibliotheques `genieCivilOuvrage2D` et `turtle`. Ci-dessous se trouve le resulte de la facade.
![facade](images/facade.png)
Cliquer ici pour voir le code complet de [`facade.py`](https://github.com/makhtar-sarr/Projet1-POO2-GL-2021/blob/main/facade.py)
## Documentation
Cliquer ici pour voir la [documentation](https://github.com/makhtar-sarr/Projet1-POO2-GL-2021/blob/main/Projet1%20POO2%20LI3%20GL.pdf)