TP 1 (fr)¶
Un Dé¶
Implémentez la classe Dice
vue en TD 1 dans un fichier nommé dice.py
. Elle doit être capable de :
- Créer un Dé sans paramètre,
- Créer un Dé avec sa position initiale,
- connaitre et changer la valeur du Dé,
- lancer un dé,
- connaitre le nombre maximum de faces (identique pour tous les dés, constant),
- l’écrire comme une chaine de caractère.
D’un point de vue python, les contraintes ci-dessus ont été mises sous forme de tests que doit passer votre classe :
def test_dice_creation_no_argument():
un_de = Dice()
assert un_de.get_position() == 1
def test_dice_creation_initial_creation():
un_de = Dice(initial_position=3)
assert un_de.get_position() == 3
def test_str():
un_de = Dice(2)
assert str(un_de) == "Dice(2)"
un_de.set_position(3)
assert str(un_de) == "Dice(3)"
def test_dice_change_position():
un_de = Dice()
un_de.set_position(6)
assert un_de.get_position() == 6
def test_roll():
un_de = Dice()
un_de.roll()
assert 1 <= un_de.get_position() <= un_de.NUMBER_FACES
Note
Mettre en place les tests : https://wiki.centrale-marseille.fr/informatique/restricted:alg-1:tp1
GUI¶
Copier/coller le code suivant dans un fichier nommé gui_example.py
.
from appJar import gui
app = gui() # the GUI
# a label at row = 0 and column = 0
label_id = "dice_value"
app.addLabel(label_id, "0", 0, 0)
app.setLabelBg(label_id, "#BBAADD") # https://color.adobe.com/
# callback function
def callback_on_click(button):
current_text = app.getLabel(label_id)
app.setLabel(label_id, str(int(current_text) + 1))
# a button at row = 0 and column = 1
button_id = "button_1"
app.addNamedButton("next integer", button_id, callback_on_click, 0, 1)
# launch GUI
app.go()
Dans le code ci-dessus, en cliquant sur le bouton nommé "button_1"
la fonction callback_on_click
est exécutée. C’est un concept classique pour les interfaces utilisateurs (UI): les fonctions sont exécutées en réation aux actions de l’utilisateurs (ici, un clique).
Note
On utilise la bibliothèque appJar. Pour l’installer chez vous : http://appjar.info/Install/
Il suffit de decompresser le répertoire appJar.zip
dans le répertoire du projet (vous aurez un répertoire appJar
en plus)
Un Dé¶
Modifiez le code de l’UI pour que le label corresponde à la position d’un dé donné, celui-ci étant lancé lorsque l’on clique sur le bouton.
Des Dés¶
- Modélisez une classe
GreenCarpet
qui possède : - 5 dés comme attribut,
- une méthode
roll
qui lance les 5 dés, - un moyen de connaitre les position d’un dé donné.
Utilisez cette classe pour que l’UI puisse lancer 5 dés en même temps en cliquant sur un bouton.
Quelques Dés¶
Utilisez les widgets checkbox (http://appjar.info/pythonWidgets/#checkbox) pour ne lancer que quelques dés (ceux qui sont sélectionnés).