Correction des exercices du Chapitre 3, Introduction à ncurses.
import curses ecran = curses.initscr() ecran.addch(0,0,"*") ecran.getch() curses.endwin() |
Quand vous écrivez « y, x = ecran.getmaxyx() » n'oubliez pas que x et y représentent les dimensions de l'écran. Comme le système de coordonnées commmence à (0,0), on ne pourra donc atteindre que x-1 et y-1.
import curses ecran = curses.initscr() y, x = ecran.getmaxyx() ecran.addch(0,0,"*") ecran.addch(y-1,0,"*") ecran.addch(0,x-1,"*") ecran.addch(y-1,x-2,"*") ecran.addch(y-2,x-1,"*") ecran.getch() curses.endwin() |
Vous avez sans doute remarqué que la position en bas à droite ne peut pas être atteinte. C'est parce qu'après y avoir écrit le curseur sortirait de l'écran.
import curses ecran = curses.initscr() y, x = ecran.getmaxyx() ecran.move(y/2,x/2-10) for i in range (0,20): ecran.addch("*") ecran.move(0,0) ecran.getch() curses.endwin() |
ou, mieux :
import curses ecran = curses.initscr() y, x = ecran.getmaxyx() ecran.addstr(y/2,x/2-10,20*"*") ecran.move(0,0) ecran.getch() curses.endwin() |
import curses ecran = curses.initscr() y, x = ecran.getmaxyx() for i in range (0,10): ecran.addstr(y/2-5+i,x/2-10,20*"*") ecran.move(0,0) ecran.getch() curses.endwin() |
En trichant :
import curses ecran = curses.initscr() y, x = ecran.getmaxyx() for i in range (0,10): ecran.addstr(y/2-5+i,x/2-10,20*"*") for i in range (0,8): ecran.addstr(y/2-4+i,x/2-9,18*" ") ecran.move(0,0) ecran.getch() curses.endwin() |
Mieux :
import curses ecran = curses.initscr() y, x = ecran.getmaxyx() ecran.addstr(y/2-5,x/2-10,20*"*") for i in range (1,9): ecran.addch(y/2-5+i,x/2-10,"*") ecran.addch(y/2-5+i,x/2+9,"*") ecran.addstr(y/2+4,x/2-10,20*"*") ecran.move(0,0) ecran.getch() curses.endwin() |
import curses ecran = curses.initscr() ymax, xmax = ecran.getmaxyx() x0,y0 = xmax/2,ymax/2 for x in range (0,xmax): for y in range(0,ymax): d = (x0-x)*(x0-x)+(y0-y)*(y0-y) if d < 100: ecran.addch(y,x,"*") ecran.move(0,0) ecran.getch() curses.endwin() |
import curses ecran = curses.initscr() ymax, xmax = ecran.getmaxyx() x0,y0 = xmax/2,ymax/2 for x in range (0,xmax): for y in range(0,ymax): d = (x0-x)*(x0-x)+(y0-y)*(y0-y) if d <= 108 and d >= 92 : ecran.addch(y,x,"*") ecran.move(0,0) ecran.getch() curses.endwin() |
import curses ecran = curses.initscr() ymax, xmax = ecran.getmaxyx() rayon=min(xmax,ymax)/2-1 x0,y0 = xmax/2,ymax/2 inf=rayon*rayon-8 sup=rayon*rayon+8 for x in range (0,xmax): for y in range(0,ymax): d = (x0-x)*(x0-x)+(y0-y)*(y0-y) if d <= sup and d >= inf : ecran.addch(y,x,"*") ecran.move(0,0) ecran.getch() curses.endwin() |