#!/usr/bin/python3 # =================================================================== # draw a smiley face using curses # =================================================================== import curses from curses import wrapper import time face = [ ' **** ', # row 0 ' ** ** ', # row 1 ' * * ', # row 2 '* ** ** *', # row 3 '* ** ** *', # row 4 '* *', # row 5 '* * * *', # row 6 ' * **** * ', # row 7 ' * * ', # row 8 ' **** ' ] # row 9 blink3 = '* ** *' # blink row 3 blink4 = '* -- ** *' # blink row 4 row_offset = 10 # location offset col_offset = 5 # location offset # ------------------------------------------------------------------- # ---- main function # ------------------------------------------------------------------- def main(stdscr): # ---- create color (id,forground,background) curses.init_pair(1,curses.COLOR_RED,curses.COLOR_BLACK) curses.init_pair(2,curses.COLOR_WHITE,curses.COLOR_BLACK) red_black = curses.color_pair(1) white_black = curses.color_pair(2) # ---- clear screen stdscr.clear() # ---- draw face blink = False col = 0 loop = 12 while True: # ---- test loop? if loop < 0: break loop -= 1 # ---- draw face for row in range(len(face)): rr = row + row_offset cc = col + col_offset if row == 3 and blink: ss = ''.join(f'{c}{c}' for c in blink3) stdscr.addstr(rr,cc,ss,white_black) continue if row == 4 and blink: ss = ''.join(f'{c}{c}' for c in blink4) stdscr.addstr(rr,cc,ss,white_black) continue ss = ''.join(f'{c}{c}' for c in face[row]) stdscr.addstr(rr,cc,ss,white_black) # ---- blink next loop? blink = not blink # ---- refresh screen stdscr.refresh() # ---- sleep time.sleep(0.5) # ------------------------------------------------------------------- # ---- main - curses wrapper # ------------------------------------------------------------------- # ---- initialize curses wrapper(main)