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()
|