From f0959596df23c40ffb3a3282f743b5f2e7c6f4e2 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Fri, 12 Dec 2014 19:17:40 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20ce=20qui=20a=20=C3=A9t=C3=A9=20fai?= =?UTF-8?q?t=20pendant=20le=20contr=C3=B4le=20de=20TP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- S1/Contrôle/ctrltp.py | 180 ++++++++++++++++++++++++++++++++++++++++++ S1/Echecs/README.md | 44 +++++++++++ 2 files changed, 224 insertions(+) create mode 100644 S1/Contrôle/ctrltp.py create mode 100644 S1/Echecs/README.md diff --git a/S1/Contrôle/ctrltp.py b/S1/Contrôle/ctrltp.py new file mode 100644 index 0000000..eef4896 --- /dev/null +++ b/S1/Contrôle/ctrltp.py @@ -0,0 +1,180 @@ +# PREUD'HOMME BONTOUX Geoffrey - PeiP 12 - 2014/2015 +# Contrôle de TP du 12/12/2014 +# http://www.lifl.fr/~mailliet/Initprog/ctrltpp/ + +import doctest + + +##On rappelle que ces codes peuvent être directement obtenues dans Python en utilisant la fonction ord qui renvoie le code (un entier) correspondant au caractère qui lui est passé en paramètre et la fonction réciproque est chr. +##Question 1 Réalisez une fonction chiffrement_lettre_maj, prenant deux paramètres : un caractère carac et un entier n et qui renvoie le résultat du décalage de carac de n lettres vers la droite (décalage cyclique, rappelez-vous, les dernières lettres de l'alphabet sont codées par les premières) . + +def chiffrement_lettre_maj(carac, n): + """ + str, int → str + Renvoie le résultat du décalage de carac de n lettres vers la droite. + + >>> chiffrement_lettre_maj('A', 3) + 'D' + >>> chiffrement_lettre_maj('Y', 2) + 'A' + >>> chiffrement_lettre_maj('W', 4) + 'A' + """ + ordre = ord(carac)+n + if ordre < 65: + ordre += 26 + if ordre > 90: + ordre += -26 + return chr(ordre) + +##Question 2 Réalisez une fonction nommée dechiffrement_lettre_maj qui soit la fonction inverse de chiffrement_lettre_maj. + +def dechiffrement_lettre_maj(carac, n): + """ + str, int → str + Renvoie le résultat du décalage de carac de n lettres vers la gauche. + + >>> dechiffrement_lettre_maj('D', 3) + 'A' + >>> dechiffrement_lettre_maj('A', 2) + 'Y' + >>> dechiffrement_lettre_maj('A', 4) + 'W' + """ + + return chiffrement_lettre_maj(carac, -n) + + +##Question 3 Réalisez un prédicat nommé est_majuscule qui détermine si le caractère passé en paramètre est une lettre majuscule ou non. La fonction (ce prédicat) renverra un booléen. + +def est_majuscule(carac): + """ + str → bool + Indique si carac est une majuscule + + >>> est_majuscule('A') + True + >>> est_majuscule('z') + False + """ + ordre = ord(carac) + return ordre >= 65 and ordre <= 90 + +##Question 4 Réalisez une fonction chiffrement qui prend une chaîne de caractères et un entier d en paramètres, et qui renvoie une chaîne de caractères chiffrée avec le décalage d. + +def chiffrement(chaine, d): + """ + str, int → str + Renvoie une chaîne de caractères chiffrée avec le décalage d. + >>> chiffrement('YOYO', 3) + 'BRBR' + >>> chiffrement("CESAR, IL EST TROP FORT !", 2) + 'EGUCT, KN GUV VTQR HQTV !' + """ + chiffrat = '' + for i in chaine: + if est_majuscule(i): + chiffrat += chiffrement_lettre_maj(i, d) + else: + chiffrat += i + return chiffrat + +##Question 5 Réalisez également la fonction inverse qui permet de déchiffrer un message. + +def dechiffrement(chaine, d): + """ + str, int → str + Renvoie une chaîne de caractères déchiffrée avec le décalage d. + >>> dechiffrement('BRBR', 3) + 'YOYO' + >>> dechiffrement("EGUCT, KN GUV VTQR HQTV !", 2) + 'CESAR, IL EST TROP FORT !' + """ + return chiffrement(chaine, -d) + +##Question 6 Quel est le message que César a codé par SWGN DGCW OGVKGT RTQHGUUGWT ? + +##>>> dechiffrement('SWGN DGCW OGVKGT RTQHGUUGWT ?', 2) +##'QUEL BEAU METIER PROFESSEUR ?' + +##Question 7 Il est maintenant temps de s’intéresser aux lettres minuscules. Vous allez réaliser les fonctions nécessaires au traitement des lettres minuscules. + +def chiffrement_lettre_min(carac, n): + """ + str, int → str + Renvoie le résultat du décalage de carac de n lettres vers la droite. + + >>> chiffrement_lettre_min('a', 3) + 'd' + >>> chiffrement_lettre_min('y', 2) + 'a' + >>> chiffrement_lettre_min('w', 4) + 'a' + """ + ordre = ord(carac)+n + if ordre < 97: + ordre += 26 + if ordre > 122: + ordre += -26 + return chr(ordre) + +def dechiffrement_lettre_min(carac, n): + """ + str, int → str + Renvoie le résultat du décalage de carac de n lettres vers la gauche. + + >>> dechiffrement_lettre_min('d', 3) + 'a' + >>> dechiffrement_lettre_min('a', 2) + 'y' + >>> dechiffrement_lettre_min('a', 4) + 'w' + """ + + return chiffrement_lettre_min(carac, -n) + +def est_minuscule(carac): + """ + str → bool + Indique si carac est une majuscule + + >>> est_minuscule('a') + True + >>> est_minuscule('Z') + False + """ + ordre = ord(carac) + return ordre >= 97 and ordre <= 122 + +def chiffrement2(chaine, d): + """ + str, int → str + Renvoie une chaîne de caractères chiffrée avec le décalage d. + >>> chiffrement2('Yoyo', 3) + 'Brbr' + >>> chiffrement2 ("Jules Cesar dit : Tu quoque mi fili", 2) + 'Lwngu Eguct fkv : Vw swqswg ok hknk' + """ + chiffrat = '' + for i in chaine: + if est_majuscule(i): + chiffrat += chiffrement_lettre_maj(i, d) + elif est_minuscule(i): + chiffrat += chiffrement_lettre_min(i, d) + else: + chiffrat += i + return chiffrat + +def dechiffrement2(chaine, d): + """ + str, int → str + Renvoie une chaîne de caractères déchiffrée avec le décalage d. + >>> dechiffrement2('Brbr', 3) + 'Yoyo' + >>> dechiffrement2("Lwngu Eguct fkv : Vw swqswg ok hknk", 2) + 'Jules Cesar dit : Tu quoque mi fili' + """ + return chiffrement2(chaine, -d) + +def tester(): + doctest.testmod(verbose=True) diff --git a/S1/Echecs/README.md b/S1/Echecs/README.md new file mode 100644 index 0000000..5e33d84 --- /dev/null +++ b/S1/Echecs/README.md @@ -0,0 +1,44 @@ +#Jeu d'Échecs + +Jeu d'Échec programmé dans le cadre d'un TP alternatif pour l'enseignement Informatique S1. + +##Dépendances + +* python ≥ 3.0 +* tk + +##Lancement +```bash +python echecs.py +``` + +(en supposant que `python` est dans la variable d'environnement `path` (ou `$PATH` sous Windows) et point vers l'éxecutable de Python 3) + +##Fonctions non-implémentées + +###Règles des échecs + +* Le Roque +* La promotion du pion +* Prise en passant +* Détection du "pat" (le joueur ne pouvant pas jouer est considéré comme perdant, même s'il n'est pas en échec) + +###Consignes de TP + +* Pouvoir choisir entre jeu de dame et jeu d'échecs + +Le jeu de dame n'est pas implémenté, cependant les autres classes sont compatibles avec lui car il suffit de changer la classe Logique**** utilisée. + +* Redimensionnement de la fenêtre + +Il suffirait de changer CASE_COTE pour en faire une variable, et faire une fonction qui appelle les fonctions de redimensionnement d'image et de placement d'objets qui serait appelé lors d'un redimensionnement. + +* Documentation et tests + +Étant donné que les fonctions sont plutôt expliquables d'elle-même par leur nom, que je suis seul à travailler sur ce projet, et que j'ai passé pas mal de temps à découper les fonctions, elles ne sont ni documentées ni testées. + +###Autre + +* Séparation entre Fenêtre et Plateau + +Un plateau devrait être generé pour chaque partie et pour chaque type de jeu \ No newline at end of file