Déroulement réel des cours

La « pensée » du vendredi 15 février 2019, 21h48m01s :
Si Microsoft inventait quelque chose qui ne plante pas, ce serait un clou.
1 : semaine du lendi 19 janbier 2009
 Cours n°1 (Cumul=2h) : [Voir le CM n°1]
2 : semaine du lendi 26 janbier 2009
 TD n°1 (Cumul=2h) :
But du cours
Réalisation d'un projet de programmation en python.
Ce sera un démineur. Vous pouvez télécharger la version compilée du « but à atteindre ». C'est une version compilée, donc vous n'avez pas accès au code source. Dommage, impossible de tricher...
Pour l'essayer :
python demineur.pyc
Ce programme ne fonctionnera sans doute pas sous Windows.
Quelques exercices du chapitre 4 :
  • Exercice 2 : Écrire un programme qui affiche en alternance au même endroit sur l'écran l'une des deux phrases « Il marche » et « Il ne marche plus ». Le passage de l'un à l'autre se fera par l'appui sur la touche d'espacement, la sortie du programme se fera proprement par l'appui sur la touche « q ».
    ex2chp4.py [sans numéros de lignes]
    1. import curses
    2.  
    3. ecran = curses.initscr()
    4. curses.noecho()
    5. c = ''
    6. etat = True
    7.  
    8. while c<>ord('q') :
    9.     ecran.clear()
    10.     if etat :
    11.         ecran.addstr(10,10,'il marche')
    12.     else :
    13.         ecran.addstr(10,10,'il ne marche plus')
    14.     c = ecran.getch()
    15.     if c == ord(' ') :
    16.         etat = not etat
    17.  
    18. curses.echo()
    19. curses.endwin()
Démineur...
  • Remarques préliminaires :
    • Dans un premier temps on va créer des fonctions, qu'on réunira plus tard pour réaliser le projet final.
    • Il faudra au maximum paramétrer le programme.
  • Écrire un programme qui déplace une étoile à l'écran en la contrôlant au clavier : les touches 4, 8, 6 et 2 du pavé numérique pour déplacer, la touche q pour sortir du programme. Dans cette première version on ne vérifiera pas que l'étole reste dans l'écran. Si le programme plante, tant pis.
    etoile.py [sans numéros de lignes]
    1. # -*- coding: utf-8 -*-
    2. import curses
    3. # initialisations
    4. ecran=curses.initscr()  # création de l'écran "graphique"
    5. curses.curs_set(False)  # pas d'affichage du curseur
    6.  
    7. ligne=1      # position verticale du curseur
    8. colonne=1    # position horizontale du curseur
    9. unetouche=0  # pour entrer dans la boucle
    10.  
    11. while unetouche!=ord("q") :
    12.   if unetouche==ord("6") :    # à droite
    13.     colonne+=1
    14.   elif unetouche==ord("4") :  # à gauche
    15.     colonne-=1
    16.   elif unetouche==ord("8") :  # en haut
    17.     ligne-=1
    18.   elif unetouche==ord("2") :  # en bas
    19.     ligne+=1
    20.   ecran.clear()                   # effacer l'écran
    21.   ecran.addch(ligne,colonne,"*")  # positionner l'étoile
    22.   unetouche=ecran.getch()         # attente d'une frappe clavier
    23.  
    24. curses.endwin()      # revenir à la console
  • Même chose en empêchant de sortir de l'écran.
    etoile2.py [sans numéros de lignes]
    1. # -*- coding: utf-8 -*-
    2. import curses
    3. # initialisations
    4. ecran=curses.initscr()  # création de l'écran "graphique"
    5. curses.curs_set(False)  # pas d'affichage du curseur
    6.  
    7. (maxl,maxc)=ecran.getmaxyx() # dimensions de l'écran
    8. ligne=1                      # position verticale initiale du curseur
    9. colonne=1                    # position horizontale initiale du curseur
    10. unetouche=0                  # pour pouvoir entrer dans la boucle
    11.  
    12. while unetouche!=ord("q") :  # tant qu'on n'a pas appuyé sur la touche Q
    13.   if (unetouche==ord("6")) and (colonne<maxc-2) :  # à droite
    14.     colonne+=1
    15.   elif (unetouche==ord("4")) and (colonne>0)  :    # à gauche
    16.     colonne-=1
    17.   elif (unetouche==ord("8")) and (ligne>0) :       # en haut
    18.     ligne-=1
    19.   elif (unetouche==ord("2")) and (ligne<maxl-2) :  # en bas
    20.     ligne+=1
    21.   ecran.clear()                   # effacer l'écran
    22.   ecran.addch(ligne,colonne,"*")  # positionner l'étoile
    23.   unetouche=ecran.getch()         # attente d'une frappe clavier
    24.  
    25. curses.endwin()      # revenir à la console
  • Même chose en utilisant les touches de déplacement de curseur.
    etoile3.py [sans numéros de lignes]
    1. # -*- coding: utf-8 -*-
    2. import curses
    3. # initialisations
    4. ecran=curses.initscr()  # création de l'écran "graphique"
    5. ecran.keypad(True)      # codage des touches de fonctions en 1 octet
    6. curses.curs_set(False)  # pas d'affichage du curseur
    7.  
    8. (maxl,maxc)=ecran.getmaxyx() # dimensions de l'écran
    9. ligne=1                      # position verticale initiale du curseur
    10. colonne=1                    # position horizontale initiale du curseur
    11. unetouche=0                  # pour pouvoir entrer dans la boucle
    12.  
    13. while unetouche!=ord("q") :  # tant qu'on n'a pas appuyé sur la touche Q
    14.   if (unetouche==curses.KEY_RIGHT) and (colonne<maxc-2) : # à droite
    15.     colonne+=1
    16.   elif (unetouche==curses.KEY_LEFT) and (colonne>0) :     # à gauche
    17.     colonne-=1
    18.   elif (unetouche==curses.KEY_UP) and (ligne>0) :         # en haut
    19.     ligne-=1
    20.   elif (unetouche==curses.KEY_DOWN) and (ligne<maxl-2) :  # en bas
    21.     ligne+=1
    22.   ecran.clear()                   # effacer l'écran
    23.   ecran.addch(ligne,colonne,"*")  # positionner l'étoile
    24.   unetouche=ecran.getch()         # attente d'une frappe clavier
    25.  
    26. curses.endwin()      # revenir à la console
Dernière modification : 25/8/2016
 Cours n°2 (Cumul=4h) : [Voir le CM n°2]
3 : semaine du lendi 2 fébrier 2009
 TD n°2 (Cumul=4h) : [Voir le TD n°2]
 Cours n°3 (Cumul=6h) : [Voir le CM n°3]
4 : semaine du lendi 9 fébrier 2009
 TD n°3 (Cumul=6h) : [Voir le TD n°3]
 Cours n°4 (Cumul=8h) : [Voir le CM n°4]
5 : semaine du lendi 16 fébrier 2009
 TD n°4 (Cumul=8h) : [Voir le TD n°4]
6 : semaine du lendi 2 môrs 2009
 TD n°5 (Cumul=10h) : [Voir le TD n°5]
7 : semaine du lendi 9 môrs 2009
 TD n°6 (Cumul=12h) : [Voir le TD n°6]
8 : semaine du lendi 16 môrs 2009
 TD n°7 (Cumul=15h) : [Voir le TD n°7]
9 : semaine du lendi 23 môrs 2009
 TD n°8 (Cumul=18h) : [Voir le TD n°8]
Dernière modification : 25/8/2016