Skip to content

Instantly share code, notes, and snippets.

@scerruti
Created February 27, 2023 18:25
Show Gist options
  • Save scerruti/c0ee574e10688d07f419eee867e28196 to your computer and use it in GitHub Desktop.
Save scerruti/c0ee574e10688d07f419eee867e28196 to your computer and use it in GitHub Desktop.
import sys
from math import sqrt
class TextWindow:
def __init__(self, width, height, background='.'):
self.screen = []
self.width = width
self.height = height
for _ in range(height):
row = '.' * width * 2
self.screen.append(row)
def draw_point(self, x, y):
self.screen[y] = self.screen[y][:x*2] + '##' + self.screen[y][(x+1)*2:]
def display(self):
for row in self.screen:
print(row)
class Ring:
def __init__(self, radius, width):
self.radius = radius
self.inside_radius = radius * width
self.origin = (radius, radius)
def draw(self, window):
for x in range(window.width):
for y in range(window.height):
distance = sqrt((self.origin[0] - x) ** 2 + (self.origin[1] - y) ** 2)
if self.inside_radius < distance < self.radius:
window.draw_point(x, y)
if __name__ == '__main__':
r = 8
w = .7
if len(sys.argv) > 1:
r = int(sys.argv[1])
if len(sys.argv) > 2:
w = float(sys.argv[2])
window = TextWindow((r + 1) * 2, (r + 1) * 2)
ring = Ring(r, w)
ring.draw(window)
window.display()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment