#!/usr/bin/python
import curses, random

screen = curses.initscr()
width = screen.getmaxyx()[1]
height = screen.getmaxyx()[0]
size = width * height
char = [" ", ".", ":", "^", "*", "x", "s", "S", "#", "$"]
b = []

curses.curs_set(0)
curses.start_color()
curses.init_pair(1, 0, 0)
curses.init_pair(2, 1, 0)
curses.init_pair(3, 3, 0)
curses.init_pair(4, 4, 0)
screen.clear
for i in range(size + width + 1):
    b.append(0)

while 1:
    for i in range(int(width / 9)):
        b[int((random.random() * width) + width * (height - 1))] = 65
    for i in range(size):
        b[i] = int((b[i] + b[i + 1] + b[i + width] + b[i + width + 1]) / 4)
        color = 4 if b[i] > 15 else (3 if b[i] > 9 else (2 if b[i] > 4 else 1))
        if i < size - 1:
            screen.addstr(
                int(i / width),
                i % width,
                char[(9 if b[i] > 9 else b[i])],
                curses.color_pair(color) | curses.A_BOLD,
            )

    screen.refresh()
    screen.timeout(30)
    if screen.getch() != -1:
        break

curses.endwin()
