Jeu de la vie, TP n°1

Positionnement à l'écran avec curses

  1. La position en haut à gauche est (0,0). Placez-y une étoile (« * »).
    curses01.py [Cacher les numéros de ligne]
    1. # -*- coding: utf-8 -*-   # pour les accents dans le code
    2. import curses             # importer la blibliothéque
    3. ecran = curses.initscr()  # initialiser l'écran
    4. ecran.addch(0,0,"*")      # placer une étoile en (0,0)
    5. ecran.getch()             # attente frappe clavier
    6. curses.endwin()           # revenir à l'écran normal
  2. La taille de l'écran s'obtient par la méthode getmaxyx() qui renvoie un couple de valeurs. Placez une étoile dans chaque coin de l'écran.
    curses02.py [Cacher les numéros de ligne]
    1. # -*- coding: utf-8 -*-          # pour les accents dans le code
    2. import curses                    # importer la blibliothéque
    3. ecran = curses.initscr()         # initialiser l'écran
    4. nblgn,nbcol = ecran.getmaxyx()   # obtenir la taille de l'écran
    5. ecran.addch(0,0,"*")             # en haut à gauche
    6. ecran.addch(nblgn-1,0,"*")       # en bas à gauche
    7. ecran.addch(0,nbcol-1,"*")       # en haut à droite
    8. ecran.addch(nblgn-1,nbcol-2,"*") # en bas PRESQUE à droite
    9. ecran.addch(nblgn-2,nbcol-1,"*") # PRESQUE en bas et à droite
    10. ecran.getch()                    # attente frappe clavier
    11. curses.endwin()                  # revenir à l'écran normal
  3. Placez une ligne horizontale de 20 étoiles, à partir de la position ligne=5 et colonne=7. Avec boucle.
    curses03.py [Cacher les numéros de ligne]
    1. # -*- coding: utf-8 -*-     # pour les accents dans le code
    2. import curses               # importer la blibliothéque
    3. ecran = curses.initscr()    # initialiser l'écran
    4. ecran.move(5,7)             # se placer à la position ligne=5 et colonne=7
    5. for i in range (0,20) :     # 20 fois de suite....
    6.     ecran.addch("*")        #    ...afficher une étoile
    7. ecran.getch()               # attente frappe clavier
    8. curses.endwin()             # revenir à l'écran normal
  4. Même chose, sans boucle.
    curses04.py [Cacher les numéros de ligne]
    1. # -*- coding: utf-8 -*-     # pour les accents dans le code
    2. import curses               # importer la blibliothéque
    3. ecran = curses.initscr()    # initialiser l'écran
    4. ecran.addstr(5,7,20*"*")    # placer 20 étoiles à la position ligne=5 et colonne=7
    5. ecran.getch()               # attente frappe clavier
    6. curses.endwin()             # revenir à l'écran normal
  5. Placez un rectangle composé d'étoiles, 20 colonnes sur 10 lignes, à partir de la position ligne=2 et colonne=4. Avec boucles imbriquées.
    curses05.py [Cacher les numéros de ligne]
    1. # -*- coding: utf-8 -*-                    # pour les accents dans le code
    2. import curses                              # importer la blibliothéque
    3. ecran = curses.initscr()                   # initialiser l'écran
    4. ligne = 2                                  # décalage vertical
    5. colonne = 4                                # décalage horizontal
    6. largeur = 20                               # largeur du rectangle
    7. hauteur = 10                               # hauteur du rectangle
    8. for l in range(0,hauteur) :                # pour chaque ligne...
    9.     for c in range(0,largeur) :            #   ...pour chaque colonne
    10.         ecran.addch(ligne+l,colonne+c,"*") #     ...afficher une étoile
    11. ecran.getch()                              # attente frappe clavier
    12. curses.endwin()                            # revenir à l'écran normal
  6. En ne modifiant QUE l'intérieur de la double boucle de l'exercice précédent, afficher le même rectangle, mais creux (on ne voit que les bords)
    curses06.py [Cacher les numéros de ligne]
    1. # -*- coding: utf-8 -*-                                     # pour les accents dans le code
    2. import curses                                               # importer la blibliothéque
    3. ecran = curses.initscr()                                    # initialiser l'écran
    4. ligne = 2                                                   # décalage vertical
    5. colonne = 4                                                 # décalage horizontal
    6. largeur = 20                                                # largeur du rectangle
    7. hauteur = 10                                                # hauteur du rectangle
    8. for l in range(0,hauteur) :                                 # pour chaque ligne...
    9.     for c in range(0,largeur) :                             #  ...pour chaque colonne
    10.         if l==0 or l==hauteur-1 or c==0 or c==largeur-1 :   #   ...si sur les bords
    11.             ecran.addch(ligne+l,colonne+c,"*")              #     ...afficher une étoile
    12. ecran.getch()                                               # attente frappe clavier
    13. curses.endwin()                                             # revenir à l'écran normal
Dernière modification : 25/8/2016