generated from mwc/problemset_typeface
Initial commit
This commit is contained in:
66
proof.py
Normal file
66
proof.py
Normal file
@@ -0,0 +1,66 @@
|
||||
# proof.py
|
||||
# By Chris Proctor
|
||||
#
|
||||
# Draws a proof sheet, showing each letter in `typeface`
|
||||
# at two different sizes.
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# ⚠️ You don't need to read or understand this code.
|
||||
# Some of the code uses techniques you haven't learned yet.
|
||||
# That said, feel free to poke around and don't hesistate to
|
||||
# ask if you're curious.
|
||||
|
||||
from turtle import *
|
||||
from grid import draw_grid, GRID_ROWS
|
||||
from superturtle.movement import no_delay
|
||||
import typeface
|
||||
|
||||
GRID_COLOR = "lightgrey"
|
||||
GRID_SIZE = 1
|
||||
LETTER_COLOR = "black"
|
||||
LETTER_SIZE = 3
|
||||
LETTERS_PER_ROW = 7
|
||||
ALPHABET = "abcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
def fly(distance):
|
||||
penup()
|
||||
forward(distance)
|
||||
pendown()
|
||||
|
||||
def flyto(x, y):
|
||||
penup()
|
||||
goto(x, y)
|
||||
pendown()
|
||||
|
||||
def go_to_next_line(unit):
|
||||
right(180)
|
||||
fly((GRID_ROWS + 1) * LETTERS_PER_ROW * unit)
|
||||
left(90)
|
||||
fly((GRID_ROWS + 1) * unit)
|
||||
left(90)
|
||||
|
||||
def draw_proof_sheet(unit):
|
||||
rows = ((len(ALPHABET) - 1) // LETTERS_PER_ROW) + 1
|
||||
left(90)
|
||||
fly((GRID_ROWS + 1) * (rows - 1) * unit)
|
||||
right(90)
|
||||
for i, letter in enumerate(ALPHABET):
|
||||
if i > 0 and i % LETTERS_PER_ROW == 0:
|
||||
go_to_next_line(unit)
|
||||
color(GRID_COLOR)
|
||||
pensize(GRID_SIZE)
|
||||
draw_grid(unit)
|
||||
color(LETTER_COLOR)
|
||||
pensize(LETTER_SIZE)
|
||||
letter_function = getattr(typeface, f"draw_letter_{letter}")
|
||||
letter_function(unit)
|
||||
fly((GRID_ROWS + 1) * unit)
|
||||
fly((GRID_ROWS + 1) * (len(ALPHABET) % LETTERS_PER_ROW) * -unit)
|
||||
|
||||
with no_delay():
|
||||
flyto(-310, -60)
|
||||
draw_proof_sheet(10)
|
||||
flyto(-310, -260)
|
||||
draw_proof_sheet(5)
|
||||
input()
|
||||
|
Reference in New Issue
Block a user