free software resistance

 the cost of computing freedom is eternal vigilance

### cube.fig.py *original date:* nov 2017 *originally posted:* oct 2024 cube.fig.py: ``` #!/usr/bin/env python # encoding: utf-8 # fig translator version: fig 4.4 import sys, os from sys import stdin, stdout from sys import argv as figargv try: from colorama import init ; init() except: pass # (only) windows users want colorama installed or ansi.sys enabled try: from sys import exit as quit except: pass from random import randint from time import sleep from os import chdir as figoch from os import popen as figpo from os import system as figsh from os import name as figosname figsysteme = 0 figfilehandles = {} figfilecounters = {} from sys import stdout def figlocate(x, l = "ignore", c = "ignore"): import sys if l == "ignore" and c == "ignore": pass # do nothing. want it to return an error? elif l < 1 and c != "ignore": sys.stdout.write("[" + str(c) + "G") # not ansi.sys compatible elif l != "ignore" and c == "ignore": sys.stdout.write("[" + str(l) + ";" + str(1) + "H") else: sys.stdout.write("[" + str(l) + ";" + str(c) + "H") import time def fignonz(p, n=None): if n==None: if p == 0: return 1 else: if p == 0: return n return p def fignot(p): if p: return 0 return -1 figbac = None figprsbac = None sub = None def fignone(p, figbac): if p == None: return figbac return p return -1 def stopgraphics(): global yourscreen global figraphics figraphics = 0 try: pygame.quit() except: pass figraphics = -1 figrupd = 1 try: import pygame except: figraphics = 0 yourscreen = "" try: pygame.init() except: figraphics = 0 # unable to init pygame, just use text def figpset(z, x, y, c): global figraphics, figrupd global yourscreen global figcgapal if figraphics == -1: #pygame.init() try: yourscreen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("fig graphics screen") #pygame.quit() figraphics = 1 except: stopgraphics() ; figraphics = 0 if figraphics == 0: if x > -1 and y > -1: figcolourtext(c, c) figlocate(0, int(y) + 1, int(x) + 1) ; stdout.write(unichr(9608)) sys.stdout.flush() if figraphics == 1: if x > -1 and y > -1: yourscreen.set_at((x, y), figcgapal[c]) #pygame.draw.circle(yourscreen,(255, 255, 255),(int(x), int(y)), 1, 0) if figrupd: pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: figraphics = 0 stopgraphics() def figline(z, x, y, x2, y2, c): global figraphics, figrupd global yourscreen global figcgapal if figraphics == -1: #pygame.init() try: yourscreen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("fig graphics screen") #pygame.quit() figraphics = 1 except: stopgraphics() ; figraphics = 0 if figraphics == 0: if x > -1 and y > -1 and x2 > -1 and y2 > -1: figcolourtext(c, c) if x2 < x: x, y, x2, y2 = x2, y2, x, y figliney = [y, y2] figlinec = 0 figlinestep = int(y2 - y) if figlinestep < 0: figlinestep = int(y - y2) ; figlinec = 0 if figlinestep < 1: figlinestep = 1 figlinestep = float(1) / figlinestep figlinex = x while 1: if figlinex > x2: break if y2 - y == 0: figlocate(0, int(y) + 1, int(figlinex) + 1) stdout.write(unichr(9608)) elif y2 < y: figlinec -= figlinestep figlocate(0, int(y + int(float(y - y2) / fignonz(x2 - x,.1) * fignonz(figlinec,.1) ) ) + 1, int(figlinex) + 1) stdout.write(unichr(9608)) else: figlocate(0, int(y + int(float(y2 - y) / fignonz(x2 - x,.1) * fignonz ( figlinec,.1) ) ) + 1, int(figlinex) + 1) ; stdout.write(unichr(9608)) figlinec += figlinestep #[0] = figliney[0]+float(figliney[1] - figliney[0]) / (x2 - x) figlinex += figlinestep figlocate(0, int(y) + 1, int(x) + 1) ; stdout.write(unichr(9608)) figlocate(0, int(y2) + 1, int(x2) + 1) ; stdout.write(unichr(9608)) sys.stdout.flush() if figraphics == 1: if x > -1 and y > -1 and x2 > -1 and y2 > -1: yourscreen.set_at((x, y), figcgapal[c]) pygame.draw.line(yourscreen, figcgapal[c], (x, y), (x2, y2), 1) if figrupd: pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: figraphics = 0 stopgraphics() def anykeypyg(): global yourscreen global figraphics, figrupd p = 0 while not p: if figraphics == 0: break time.sleep(0.001) for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if figrupd: pygame.display.update() p = 1 def figcolortext(x, f): b = 0 if f == None: f = 0 if b == None: b = 0 n = "0" if f > 7: n = "1" ; f = f - 8 if f == 1: f = 4 ## switch ansi colours for qb colours elif f == 4: f = 1 ## 1 = blue not red, 4 = red not blue, etc. if f == 3: f = 6 elif f == 6: f = 3 if b > 7: b = b - 8 if b == 1: b = 4 elif b == 4: b = 1 if b == 3: b = 6 elif b == 6: b = 3 stdout.write("\x1b[" + n + ";" + str(30+f) + "m") return "\x1b[" + n + ";" + str(30+f) + ";" + str(40+b) + "m" def figcolourtext(x, f): b = 0 if f == None: f = 0 if b == None: b = 0 n = "0" if f > 7: n = "1" ; f = f - 8 if f == 1: f = 4 ## switch ansi colours for qb colours elif f == 4: f = 1 ## 1 = blue not red, 4 = red not blue, etc. if f == 3: f = 6 elif f == 6: f = 3 if b > 7: b = b - 8 if b == 1: b = 4 elif b == 4: b = 1 if b == 3: b = 6 elif b == 6: b = 3 stdout.write("\x1b[" + n + ";" + str(30+f) + "m") return "\x1b[" + n + ";" + str(30+f) + ";" + str(40+b) + "m" figcgapal = [(0, 0, 0), (0, 0, 170), (0, 170, 0), (0, 170, 170), (170, 0, 0), (170, 0, 170), (170, 85, 0), (170, 170, 170), (85, 85, 85), (85, 85, 255), (85, 255, 85), (85, 255, 255), (255, 85, 85), (255, 85, 255), (255, 255, 85), (255, 255, 255)] def figget(p, s): return s def fighighlight(x, b): f = None if f == None: f = 0 if b == None: b = 0 n = "0" if f > 7: n = "1" ; f = f - 8 if f == 1: f = 4 ## switch ansi colours for qb colours elif f == 4: f = 1 ## 1 = blue not red, 4 = red not blue, etc. if f == 3: f = 6 elif f == 6: f = 3 if b > 7: b = b - 8 if b == 1: b = 4 elif b == 4: b = 1 if b == 3: b = 6 elif b == 6: b = 3 stdout.write("\x1b[" + n + str(40+b) + "m") return "\x1b[" + n + str(40+b) + "m" def figinstr(x, p, e): try: return p.index(e) + 1 except: return 0 def figchdir(p): try: figoch(p) except: print "no such file or directory: " + str(p) ; figend(1) def figshell(p): global figsysteme try: figsysteme = figsh(p) except: print "error running shell command: " + chr(34) + str(p) + chr(34) figend(1) def figarrshell(c): global figsysteme try: figsysteme = 0 sh = figpo(c) ps = sh.read().replace(chr(13) + chr(10), chr(10)).replace(chr(13), chr(10)).split(chr(10)) figsysteme = sh.close() except: print "error running arrshell command: " + chr(34) + str(c) + chr(34) figend(1) return ps[:] def figsgn(p): p = float(p) if p > 0: return 1 if p < 0: return -1 return 0 def figstr(p): return str(p) def figprint(p): print p def figchr(p): if type(p) == str: if len(p) > 0: return p[0] return chr(p) def figprints(p): stdout.write(str(p)) ; sys.stdout.flush() def figleft(p, s): return p[:s] def figmid(p, s, x): arr = 0 if type(p) == list or type(p) == tuple: arr = 1 rt = p[s - 1:x + s - 1] if arr and len(rt) == 1: rt = rt[0] return rt def figright(p, s): return p[-s:] def figrandint(x, s, f): return randint(s, f) def figlcase(p): return p.lower() def figucase(p): return p.upper() def figint(p): return int(p) def figarrset(x, p, s): if 1: #if type(p) == str: p = p + s # str(s) if you want it easier if 1: #type(p) == list: if type(s) == tuple: if len(s) == 1: fas = s[0] elif type(s) == list: if len(s) == 1: fas = s[0] else: fas = s x[p - 1] = s #if type(p) == tuple: # if type(s) == tuple: # p = tuple(list(p) + list(s)) # elif type(s) == list: # p = tuple(list(p) + s[:]) # else: # p = tuple(list(p) + [s]) #if type(p) == str: p = p + s # str(s) if you want it easier def figopen(x, s): import fileinput if s.lower() == "w": if (x) not in figfilehandles.keys(): figfilehandles[x] = open(x[:], s.lower()) elif s.lower() == "r": if (x) not in figfilehandles.keys(): figfilehandles[x] = fileinput.input(x[:]) figfilecounters[x] = 0 else: if (x) not in figfilehandles.keys(): figfilehandles[x] = open(x[:], s[:]) def figfprint(x, s): fon = figosname sep = chr(10) if fon == "nt": sep = chr(13) + chr(10) figfilehandles[s].write(str(x) + sep) def figflineinput(x, s): try: p = figfilehandles[s][figfilecounters[s]].replace(chr(13), "").replace(chr(10), "") figfilecounters[s] += 1 except: p = chr(10) return p def figclose(x): if (x) in figfilehandles.keys(): figfilehandles[x].close() ; del figfilehandles[x] try: del figfilecounters[x] except: pass def figcls(x): if figosname == "nt": cls = figsh("cls") else: stdout.write("") ; sys.stdout.flush() def figarropen(x, s): x = open(s).read().replace(chr(13) + chr(10), chr(10)).replace(chr(13), chr(10)).split(chr(10)) return x[:] def figarrcurl(x, s): from urllib import urlopen x = str(urlopen(s).read()) ; x = x.replace(chr(13) + chr(10), chr(10)).replace(chr(13), chr(10)).split(chr(10)) return x[:] def figarrstdin(x): ps = [] for p in stdin: ps += [p[:-1]] return ps[:] def figarrget(x, p, s): if 1: return p[s - 1] def figplus(p, s): if type(p) in (float, int): if type(s) in (float, int): p = p + s else: p = p + s # float(s) if you want it easier if p == float(int(p)): p = int(p) else: if type(p) == str: p = p + s # str(s) if you want it easier if type(p) == list: if type(s) == tuple: p = p + list(s) elif type(s) == list: p = p + s[:] else: p = p + [s] if type(p) == tuple: if type(s) == tuple: p = tuple(list(p) + list(s)) elif type(s) == list: p = tuple(list(p) + s[:]) else: p = tuple(list(p) + [s]) return p def figjoin(p, x, s): t = "" if len(x) : t = str(x[0]) for c in range(len(x)): if c > 0: t += str(s) + str(x[c]) return t # s.join(x) def figarr(p): if type(p) in (float, int, str): p = [p] else: p = list(p) return p def figsplit(p, x, s): return x.split(s) def figval(n): n = float(n) if float(int(n)) == float(n): n = int(n) return n def figtimes(p, s): if type(p) in (float, int): p = p * s # float(s) if you want it easier if p == float(int(p)): p = int(p) else: if type(p) == list: p = p[:] * s # figval(s) else: p = p * s # figval(s) if you want it easer return p def figdivby(p, s): p = float(p) / s if p == float(int(p)): p = int(p) return p def figminus(p, s): return p - s def figtopwr(p, s): p = p ** s if p == float(int(p)): p = int(p) return p def figmod(p, s): return p % s def figcos(p): from math import cos ; p = cos(p) if p == float(int(p)): p = int(p) return p def figsin(p): from math import sin ; p = sin(p) if p == float(int(p)): p = int(p) return p def figsqr(p): from math import sqrt ; p = sqrt(p) if p == float(int(p)): p = int(p) return p def figltrim(p): return p.lstrip() def figlineinput(p): return raw_input() def figlen(p): return len(p) def figasc(p): return ord(p[0]) def figatn(p): from math import atan ; p = atan(p) if p == float(int(p)): p = int(p) return p def fighex(p): return hex(p) def figrtrim(p): return p.rstrip() def figstring(x, p, n): if type(n) == str: return n * p return chr(n) * p def figtimer(p): from time import strftime return int(strftime("%H"))*60*60+int(strftime("%M"))*60+int(strftime("%S")) def figtime(p): from time import strftime ; return strftime("%H:%M:%S") def figdate(p): from time import strftime ; return strftime("%m/%d/%Y") def figcommand(p): return figargv[1:] def figtan(p): from math import tan ; p = tan(p) if p == float(int(p)): p = int(p) return p def figoct(p): return oct(p) def figsleep(p, s): #print lc () + p #addto[0] = 1 sleep(s) def figarrsort(p): p.sort() def figdisplay(x): global figraphics, figrupd figrupd = 0 if figraphics == 1: pygame.display.update() def figreverse(p): if type(p) == list: p.reverse() ; return p elif type(p) == str: p = map(str, p) ; p.reverse() p = "".join(p) return p def figarreverse(p): p.reverse() def figfunction(p, s): return p def figend(x): quit() def figif(p, s): return p def figthen(p, s): return p def figsystem(x): quit() #### creativecommons.org/publicdoma… figlist = 0 try: figlist = int(type(textmode) == list) except NameError: pass if not figlist: textmode = 0 figraphics = 0 stopgraphics() def cubes(x, y): figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = "88888888888889999" ; sc = figarr(sc) ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "88000000000008999") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "80800000000000899") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "80080000000000089") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "80008888888888888") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "80008000000000008") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "80008000000000008") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "80008000000000008") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "98008000000000008") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "99808000000000008") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "99988000000000008") ; figlist = 0 try: figlist = int(type(sc) == list) except NameError: pass if not figlist: sc = 0 sc = figplus(sc, "99998888888888888") ; figlist = 0 try: figlist = int(type(yc) == list) except NameError: pass if not figlist: yc = 0 yc = y figlist = 0 try: figlist = int(type(rc) == list) except NameError: pass if not figlist: rc = 0 rc = figrandint(rc, 1, 7) ; for lines in sc: figlist = 0 try: figlist = int(type(xc) == list) except NameError: pass if not figlist: xc = 0 xc = x for chars in lines: figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 now = chars now = figint(now) ; now, chars = chars, now ; if chars < 9: if xc > -1: if yc > -1: if xc < 80: if yc < 24: figlist = 0 try: figlist = int(type(col) == list) except NameError: pass if not figlist: col = 0 col = chars col = figint(col) ; col = figplus(col, rc) ; figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 figpset(now, xc, yc, col) ; figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 now = xc now = figplus(now, 1) ; now, xc = xc, now ; figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 now = yc now = figplus(now, 1) ; now, yc = yc, now ; def abs(x): if x < 0: figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 now = x now = figtimes(now, -1) ; return now else: figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 return x try: while 1: figlist = 0 try: figlist = int(type(x) == list) except NameError: pass if not figlist: x = 0 x = figrandint(x, -5, 79) ; figlist = 0 try: figlist = int(type(y) == list) except NameError: pass if not figlist: y = 0 y = figrandint(y, -5, 20) ; figlist = 0 try: figlist = int(type(co) == list) except NameError: pass if not figlist: co = 0 co = figrandint(co, 9, 14) ; figlist = 0 try: figlist = int(type(rs) == list) except NameError: pass if not figlist: rs = 0 rs = figrandint(rs, 5, 8) ; figlist = 0 try: figlist = int(type(ys) == list) except NameError: pass if not figlist: ys = 0 ys = figrandint(ys, 5, 8) ; for yp in range(int(float(-10)), int(float(5)) + figsgn(ys), fignonz(int(float(ys)))): for x in range(int(float(-2)), int(float(80)) + figsgn(rs), fignonz(int(float(rs)))): figlist = 0 try: figlist = int(type(yt) == list) except NameError: pass if not figlist: yt = 0 yt = x yt = figdivby(yt, 2) ; yt = figtan(yt) ; yt = figtimes(yt, 4) ; figlist = 0 try: figlist = int(type(y) == list) except NameError: pass if not figlist: y = 0 y = x y = figsin(y) ; y = figtimes(y, yt) ; y = figplus(y, yp) ; y = figint(y) ; y = figminus(y, 2) ; y = figtimes(y, 1.2) ; y = figint(y) ; figlist = 0 try: figlist = int(type(xt) == list) except NameError: pass if not figlist: xt = 0 xt = x xt = figsin(xt) ; xt = figtimes(xt, 20) ; figbac = xt ; xt = abs(xt) ; xt = fignone(xt, figbac) ; xt = figtimes(xt, 4) ; xt = figint(xt) ; figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 figbac = now ; now = cubes(x, y) ; now = fignone(now, figbac) ; figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 figsleep(now, .075) ; figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 figlocate(now, 28, 1) ; now = "" ; figprint(now) ; #print figlist = 0 try: figlist = int(type(now) == list) except NameError: pass if not figlist: now = 0 figsleep(now, .075) ; except: pass ``` license: 0-clause bsd ``` # 2017 mn # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ``` => https://freesoftwareresistance.neocities.org