25 Agustus 2021

Menampilkan Bendera Berkibar di Terminal Python

Masih dalam suasana Agustusan, iseng-iseng ngoprek Python supaya dapat menampilkan bendera merah putih yang berkibar pada layar barbasis text. Bisakah?

Jawabnya bisa! 

Untuk mewarnai huruf, dapat digunakan ANSI yang berupa Escape Control. Sedangkan untuk bendera digunakan fungsi sinus()

Tampilan Output



Source Code


<code>

    import math
    import time
    import random

    def sin_translate(x, **kwarg):
        xtrans=kwarg.get('xtrans', 1)
        ytrans=kwarg.get('ytrans', 1)
        x1 = x * xtrans
        sin = math.sin(math.radians(x1)) * ytrans
        return x1, sin

    def flag(x,w):
        grid = []
        ytrans = random.randint(10,20)/10
        for x in range(x, x+w):
            d, y = sin_translate(x, xtrans=10, ytrans=ytrans) #math.radians(x))
            #print(f'x={x}, d={d:0.2f}, y={y:0.2f}')
            y = round(y)
            grid.append((y-6, y, y+7))

        #print(grid)
        print('\033[2J')
        ymin = round(-ytrans-6)
        ymax = round(ytrans +7)

        for y in range(ymin, ymax
+1):

            for g in grid:
                a, m, b = g
                if a <= y <= m:
                    print('\033[31;41mM', end='')
                elif m < y <= b:
                    print('\033[37;47m:', end='')
                else:
                    print('\033[39;49m ', end='')
            print('\033[39;49m')


    x = 0
    while True:
        flag(x, 60)
        print('INDONESIA TANGGUH, INDONESIA TUMBUH')
        x += 1
        time.sleep(0.1)

</code>