Correction des exercices du Chapitre 6, Pour qui sont ces serpents ?.
# -*- coding: utf-8 -*- import curses # pour le dessin import time # pour la mesure du temps d'attente # renvoie la nouvelle direction après appui sur la touche "DROITE" def droite() : if direction == DROITE : return BAS elif direction == BAS : return GAUCHE elif direction == GAUCHE : return HAUT else : return DROITE # renvoie la nouvelle direction après appui sur la touche "GAUCHE" def gauche() : if direction == DROITE : return HAUT elif direction == HAUT : return GAUCHE elif direction == GAUCHE : return BAS else : return DROITE # calcule la nouvelle position et place le serpent def deplace() : l = ligne + direction[LGN] c = colonne + direction[COL] ecran.addch(l,c,'O') return l,c ecran = curses.initscr() # intialisation de l'écran ecran.nodelay(True) # pas d'attente sur getch() ecran.keypad(True) # UN code sur les touches de fonctions curses.curs_set(False) # cacher le curseur # définitions des directions de déplacement DROITE = (0,1) GAUCHE = (0,-1) HAUT = (-1,0) BAS = (1,0) # indices pour les accès aux éléments d'un couple de coordonénes LGN = 0 COL = 1 # initialisations du positionnement du serpent hauteur, largeur = ecran.getmaxyx() # taille de l'écran ligne,colonne = hauteur/3,largeur/3 # position (de départ : arbitraire!) direction = DROITE # directon (de départ : arbitraire!) c='' # pour que c existe à la ligne suivante while c <> ord('q'): # tant qu'on n'a pas appuyé sur la touche 'q' ecran.clear() # effacer l'écran ligne,colonne = deplace() # calcule la nouvelle position et place le serpent time.sleep(0.1) # attente pour ralentir (arbitraire!) c=ecran.getch() # saisie de l'appui sur une touche du clavier if c == curses.KEY_LEFT: direction = gauche() # on tourne à gauche elif c == curses.KEY_RIGHT: direction = droite() # on tourne à droite # remettre l'écran en "bon" état curses.endwin() # sortie du mode "curses" print "\n\n\tF I N I !\n\n" # message de fin! |