૮₍ ˶ᵔ ᵕ ᵔ˶ ₎ა import math
WIDTH = 50 HEIGHT = 25
REDBG = "\033[41m \033[0m" YELLOWSTAR = "\033[1;33m★\033[0m"
def rotate(cx, cy, x, y, angledeg): angle = math.radians(angledeg) s = math.sin(angle) c = math.cos(angle) x -= cx y -= cy xnew = x * c - y * s ynew = x * s + y * c return xnew + cx, ynew + cy
def inside_polygon(px, py, polygon): count = 0 n = len(polygon) for i in range(n): x1, y1 = polygon[i] x2, y2 = polygon[(i + 1) % n] if ((y1 <= py < y2) or (y2 <= py < y1)): if px < (x2 - x1) * (py - y1) / (y2 - y1 + 1e-9) + x1: count += 1 return count % 2 == 1
def generatestar(cx, cy, R): r = R * math.sin(math.pi / 10) / math.sin(3 * math.pi / 10) star = [] for i in range(5): outerangle = -90 + i * 72 innerangle = outerangle + 36 ox = cx + R * math.cos(math.radians(outerangle)) oy = cy + R * math.sin(math.radians(outerangle)) ix = cx + r * math.cos(math.radians(innerangle)) iy = cy + r * math.sin(math.radians(innerangle)) star.append((ox, oy)) star.append((ix, iy)) return star
def drawflag(): cx = WIDTH / 2 cy = HEIGHT / 2 star = generatestar(cx, cy, R=6.5)
for y in range(HEIGHT):
for x in range(WIDTH):
if inside_polygon(x + 0.5, y + 0.5, star):
print(YELLOW_STAR, end='')
else:
print(RED_BG, end='')
print()
draw_flag()
Bình luận