Jeu de la vie, TP n°5

Utiliser le hasard (2)

Transformer le programme précédent pour que l'affichage s'adapte à la taille de l'écran. Une ligne vide en haut, deux lignes vides en bas, une colonne vide de chaque côté.
alea05.py [Cacher les numéros de ligne]
  1. # -*- coding: utf-8 -*-
  2. import random,curses
  3.  
  4. ###################################
  5. ####    CRÉATION DU TABLEAU    ####
  6. ###################################
  7. def creation() :
  8.     global tableau
  9.     for l in range(nblgn) :                 # pour chaque ligne
  10.         tableau.append([vide]*nbcol)        # créer la ligne vide
  11.  
  12. ######################################
  13. ####    REMPLISSAGE DU TABLEAU    ####
  14. ######################################
  15. def remplissage() :
  16.     global tableau
  17.     proportion=random.random()              # proportion espace/étoile
  18.     for l in range(0,nblgn) :               # pour chaque ligne
  19.         for c in range(0,nbcol) :           # pour chaque colonne
  20.             if random.random()<proportion : # si tirage aléatoire dans la bonne proportion
  21.                 tableau[l][c]=vide          # ajouter un espace
  22.             else :                          # sinon
  23.                 tableau[l][c]=plein         # ajouter une étoile
  24.  
  25. #########################
  26. ####    AFFICHAGE    ####
  27. #########################
  28. def affichage() :
  29.     for l in range(0,nblgn) :               # pour chaque ligne
  30.         for c in range(0,nbcol) :           # pour chaque colonne
  31.             # afficher la case correspondante au bon endroit
  32.             ecran.addstr(l+haut,c+gauche,tableau[l][c])
  33.  
  34. ####################################
  35. ####    ATTENTE ET FERMETURE    ####
  36. ####################################
  37. def finir() :
  38.     curses.endwin()                         # revenir à la console
  39.  
  40. ###############################
  41. ####    INITIALISATIONS    ####
  42. ###############################
  43. ecran=curses.initscr()                      # créer l'écran graphique
  44. ecran.nodelay(1)                            # getch() non bloquant
  45. curses.curs_set(False)                      # pas d'affichage du curseur
  46. gauche,droite=1,1                           # décalage horizontal
  47. haut,bas=1,2                                # décalage vertical
  48. nblgn,nbcol=ecran.getmaxyx()                # nombre de lignes et de colonnes
  49. nblgn=nblgn-haut-bas                        # ajuster en fonction des lignes vides
  50. nbcol=nbcol-gauche-droite                   # ajuster en fonction des colonnes vides
  51. sortie=[ord('q'),ord('Q')]                  # touches pour finir
  52. tableau=[]                                  # création du tableau vide
  53. plein="*"                                   # contenu d'une case pleine
  54. vide=" "                                    # contenu d'une case vide
  55.  
  56. ##################################
  57. ####    CORPS DU PROGRAMME    ####
  58. ##################################
  59. creation()
  60. k=0                                         # initialisation pour rentrer dans la boucle
  61. while k not in sortie :                     # TQ on n'a pas appuyé sur une touche pour sortir
  62.     remplissage()                           # remplissage du terrain
  63.     affichage()                             # affichage du terrain
  64.     k=ecran.getch()                         # récupérér la touche sur laquelle on a appuyé
  65. finir()                                     # sortir de l'écran graphique
Dernière modification : 25/8/2016