# import math g.norefresh() def blamRect(buf, x,y,alpha): #Should this scale also? if alpha < 0: #might speed this up for i in range(len(buf)): for j in range(len(buf[0])): g.setPixel(x+i,y+j,buf[i][j]) else: for i in range(len(buf)): for j in range(len(buf[0])): if buf[i][j] != alpha: g.setPixel(x+i,y+j,buf[i][j]) def paint(x,y,val=0): g.setPixel(x,y,max(val,g.getPixel(x,y)+10)) def paintLine(x1,y1,x2,y2,val=0): dx = x2 - x1 dy = y2 - y1 numPoints = int(math.fabs(dx) + math.fabs(dy)) for i in range(numPoints): px = x1 + dx*i/numPoints py = y1 + dy*i/numPoints paint(px,py,val) def copyRect(x,y,w,h): buf = [] for i in range(x,x+w): buf.append([]) for j in range(y,y+h): buf[-1].append(g.getPixel(i,j)) return buf def blur(buf): for i in range(1,len(buf)-1): for j in range(1,len(buf[0])-1): buf[i][j] = (buf[i+1][j] + buf[i-1][j] + buf[i][j+1] + buf[i][j-1] + buf[i][j])/5 for i in range(1,len(buf)-1): buf[i][0] = (buf[i][0] + buf[i][1] + buf[i-1][0] + buf[i+1][0]) / 4 buf[i][-1] = (buf[i][-1] + buf[i][-2] + buf[i-1][-1] + buf[i+1][-1]) / 4 for j in range(1,len(buf[0])-1): buf[0][j] = (buf[0][j] + buf[1][j] + buf[0][j-1] + buf[0][j+1]) / 4 buf[-1][j] = (buf[-1][j] + buf[-2][j] + buf[-1][j-1] + buf[-1][j+1]) / 4 buf[0][0] = (buf[0][0] + buf[0][1] + buf[1][0]) /3 buf[0][-1] = (buf[0][-1] + buf[1][-1] + buf[0][-2]) /3 buf[-1][0] = (buf[-1][0] + buf[-1][1] + buf[-2][0]) /3 buf[-1][-1] = (buf[-1][-1] + buf[-2][-1] + buf[-1][-2]) /3 return buf def darken(buf, factor): for i in range(len(buf)): for j in range(len(buf[0])): buf[i][j] = int(buf[i][j]*factor) return buf def funkify(buf): for i in range(len(buf)): for j in range(len(buf[0])): buf[i][j] = buf[i][j]*buf[i][j]/85 return buf import time while 1: g.paper(0) for i in range(70): x = 35 y = 45 dx = 55*math.cos((3+i)*2*3.14159265358979/222) dy = 55*math.sin((3+i)*2*3.14159265358979/225) paintLine(x,y,x+int(dx),y+int(dy)) buf = copyRect(50,30,30,50) blur(buf) darken(buf,1.085125) darken(buf,1.785125) blur(buf) blur(buf) blur(buf) blamRect(buf, 50, 30, -1) time.sleep(3) g.refresh() g.paper(0) for i in range(173): x = 35 y = 45 dx = 55*math.cos((3+i)*2*3.14159265358979/222) dy = 55*math.sin((3+i)*2*3.14159265358979/225) paintLine(x,y,x+int(dx),y+int(dy)) buf = copyRect(50,30,30,50) blur(buf) darken(buf,1.085125) darken(buf,1.785125) blur(buf) blur(buf) blur(buf) blamRect(buf, 50, 30, -1) time.sleep(3) g.refresh() g.paper(0) for i in range(223): x = 35 y = 45 dx = 55*math.cos((3+i)*2*3.14159265358979/222) dy = 55*math.sin((3+i)*2*3.14159265358979/225) paintLine(x,y,x+int(dx),y+int(dy)) buf = copyRect(50,30,30,50) blur(buf) darken(buf,1.085125) darken(buf,1.785125) blur(buf) blur(buf) blur(buf) blamRect(buf, 50, 30, -1) g.refresh()