fire.py

Created by schraf

Created on November 08, 2021

8.49 KB


from kandinsky import fill_rect,get_pixel,set_pixel

img = b"%Ea(Oa(Oa(Oa(Oa(Qb(Oa(Rb(Ob(T#$(Ob#$d(Qb(Na(Ra(La(S#%c(Ka(S#%c(Nd#%d(Md#$#$bd(Ma(Qa(Na(Oac(Mc#$c(Nac(Na(P#$c(Oa(P#$d#$(Nc#$(=d#5c#%(Na(<d#5#$d#$(:d#6c#$(<d#6c#$(9d#7c#$(;d#7c#$(8b#6c#$(;d#7c#%(6b#7c#$(9b#7c#%(5b#9a(5c#$#8c#%(4b#;b(+b#)c#%#8c#&(*d#)a#:b(,b#(#$c#;#&'Wb#&a#&#$d#$#;a'Wb#&c#$c#&#$d#$#:c#%'Va#&#$c#$bd#$#=b'X#$c#%c#&a#&#;c#%'U#&#$c#'b#%c#$d#3ab#$'X#&#$c#&a#&c#:c#%'U#'#$#)b#$bd#<b'W#'#$#)b#$c#=c#$'V#&d#*d#$ad#;c#$'X#&d#*d#$d#$c#,d#)a#%c#%'U#1d#$bd#*d#$b#%d#%d#$a'X#1d#$bd#&d#%d#%d#%b#$d#%c#%#Td'##2d#$c#*a#'b#$abd#Td&X#3bd#+d#$d#*d#%ac#Td&W#2d#$c#+b#(b#$b#$c#$#Td'##2ad#'d#%a#'d#&d#$c#%#Sd&V#3d#$c#%d#'b#(ac#$a#Sd&Xc#2bd#-a#$d#%d#$d#%c#&#3d#?#$&V#3d#$#'b#%b#$d#$a#$abd#Rd'##3bd#'d#%c#$#$d#'b#$d#%c#$c#P#$&V#3bd#&d#%d#$d#$d#$a#%d#$ac#Qd'##4#$d#&d#$d#$ac#$ac#&#$d#%#Md#$#$&U#3bd#'d#&c#$c#%d#$aab#%d#Mb&W#2ad#&b#%aad#$b#&c#%c#Nc#$&T#4c#(d#%abd#$ac#$abd#Ma&V#1c#$b#&d#%abd#$ac#%c#$bd#Cb#*a&R#3c#)d#%d#$aaaaac#-b#2b#+ac&U#2c#%d#%d#$d#$c#$aac#%bd#$bd#.d#4a#(ac&Q#2#&b#%d#$d#$aaaac#$bd#,b#3b#$d#$d#%ac&T#/d#%#'d#$d#$d#$bd#$aac#$bd#$bd#,d#5a#$d#%abd&P#1#'d#%d#%d#$ab#$aab#$bd#$d#(d#5abd#$ad#$c&S#.d#$c#(d#%d#%c#$d#$d#$ab#$bd#$d#$#$d#(b#4ad#$c#$abd&O#0c#%a#$b#$d#$c#$a#$d#$ac#$a#$d#&ab#-aaad#$d#%c&R#/d#$c#$a#$ab#(d#$ac#$d#&bd#'b#$d#3bd#$aad#$c&P#.#$d#-d#(c#$aaaabd#$a#%d#2aa#$b#%bd&S#.#-d#+c#+aad#$bd#(d#$d#4bd#$abd#'c&P#-#.d#*c#&d#&d#$c#$bd#$bd#$d#$a#4bd#$d#$b#$d#$ad&R#-#.ac#$c#-d#$#$ad#$ad#$ac#1ad#$d#$d#$d#(c&Gd#(c#-aabd#$ab#,abd#%aabd#%d#&b#&ad#%d#$a#$ad&8d#2a#$c#,ad#$aaad#.abd#%aabd#$b#&b#%ad#$d#%d#$d#'bd&Dd#)d#$#-c#$aaab#/ac#%aaab#&b#&ab#&b#$d#&d#$#%d&Hd#%d#$#,bd#$d#$aab#$#/ac#%aabd#$b#%b#&bd#$d#%d#$d#$d#%d#&c&Gd#$d#$#/aaaad#0ac#$d#$ac#$c#$d#&d#(d#%c#$d#'d#$d#)&Od#&#,c#$aaaa#0b#$d#$d#$aaad#$a#%d#$c#$d#&d#$b#*c&Aac#%bd#-c#$aaab#/ac#$abd#$ad#&d#(d#$c#%d#&d#$d#(ad&Hb#&c#,bd#$aac#$b#/ac#%d#$aa#$b#%b#$d#$d#$#*d#$d#*bd&Cb#&bd#.aaaad#2b#&d#$ac#$ad#$b#%d#%c#-d#'ab&Gb#)#,aaa#$bd#$#1c#$#$d#$d#$a#$ad#&d#$b#'#,b#%d#$d#$bd&<ac#&ad#.aab#$d#$d#3b#$d#$d#$aabd#$b#$d#%c#$d#+d#%a#$bd&Eb#%d#%c#,aab#$ac#1a#$b#$d#$d#$d#$bd#&d#$b#&c#*b#'b#$bd&8aad#%b#$c#.d#$abd#&d#$d#$d#0b#%d#%ac#$aa#$d#%c#$d#-a#$ad&Eb#%d#'#-b#%ac#%d#$d#3b#$b#%d#$a#$bd#$d#$a#%c#.d#$d#$d#$d#$c%Xb#2aab#%ab#-d#$b#$a#%b#3#$bd#$d#$d#$d#$d#%d#$bd#$d#%d#$#%d#,a#$d#$ad&%d#6d#%d#%a#%d#$c#,b#$d#$a#'b#2a#%d#$d#$d#$d#$aac#$d#%bd#/d#$b#$bd%Xd#3abd#$d#$d#%ab#-b#%d#$d#$d#$d#6b#$b#$d#$b#$d#&bd#$aac#,b#$d#%ad&9d#$b#$ac#$d#$c#/b#$d#$b#%b#2ac#$d#)d#$b#$ad#$d#$bd#$d#-d#$b#$d#$bd%Vd#4b#$ac#$d#$b#$bd#-b#'d#*d#4b#%d#(b#$d#%ad#$d#$ab#/d#$d#$ad#$d%Ud#7d#$c#$ab#$ad#.a#%d#*d#3abd#)d#%d#&bd#$aac#1b#&bd%Td#5aa#$c#$b#$bd#.b#.b#4a#+d#$b#$ab#%ad#$d#0d#)c%Wd#3d#'ad#$d#$#$ab#0a#,b#2b#$b#-d#(ad#$ad#$d#1b#'bd%Sd#/d#(ad#)d#$a#1d#$d#-d#6a#4aab#$d#$d#8bd#)b%Kd#%abd#$aabd#)ac#3b#-b#4a#5bd#'c#$d#$d#9ad#'d%Id#1d#(bd#$d#)d#$d#$d#3d#Cd#$d#$d#3d#$aad#$d#:bd%Sd#:ad#(ad#$c#0a#*a#1abd#2aad#$d#$d#9ad&3c#$d#*ac#%d#,b#$d#+b#5ac#5ac#$d#$d#$d#9c&6c#$b#)ac#$d#.d#$b#,b#4b#$d#5ac#$b#$d#9ad%Od#)aaab#.ac#$d#.d#$d#.d#5d#$a#3d#$ac#&d#;c#$d%Nb#%b#%d#%d#$d#$ab#.b#$d#$d#0b#-b#3a#$d#3d#'d#$b#%d#:c#$b%Hb#$b#&abd#$d#$ad#.a#$d#0d#0d#7d#$b#6b#$d#$d#$d#;bd#$d#$a%Fd#$b#$d#%d#%a#$ad#0ac#/a#,b#4b#$b#7d#$d#$d#$d#>bd#'d%Eb#&d#$ac#$aa#.a#'d#-d#%d#,c#$c#5d#$d#:d#$d#$d#>d#$ad%Jb#$b#%a#$aa#/a#$d#/d#$d#+#*#1d#$d#$d#9d#%d#$d#%d#?c#$b%@a#$b#$a#$d#$b#$ad#.d#$d#%d#0d#$d#*#-#5d#=d#$d#%d#Ac%Iac#$aaaa#.abd#2d#(#/#(d#Id#%d#%d#Dc%>ac#$ac#$d#$b#$aa#/b#4b#(#1#&d#Ld#%d#Dad#'b%;aaaaaa#.d#$a#2d#%#6bd#Kd#%b#Bab#&d%4ac#$#$aaaaa#.b#$d#3d#%#7bd#Nd#Gbd#%b%;b#$aaaaab#/d#$b#1d#%#8d#$c$>d#$%5abd#$c#&aaaaa#-a#$d#3c#=c$?#$d%;a#$#%aaaaa#.d#$d#$d#2bd#:d#$c$>bd%/abd#$bd#'aaaaa#+a#$d#4c#$d#:bd#+d#Wd#4%9d#$d#$b#$#'aaabd#$b#/d#$b#1ab#5d#*#)d#Wd#5c%/a#$ab#'aaaaa#+ac#$d#3ab#5b#(#'d$#d#,#$#'#%d%3d#%ab#(aaaab#,b#$d#$d#3d#$bd#7d#+#$b#Xd#)#)#%#%d%-aabd#*aaaaa#)d#$b#$d#$d#3d#$c#9d#*#%d$(#(d%<d#$d#$bd#)aaac#$d#$d#,b#$d#$d#$d#4d#&#Bbd$(#Hd$Ja#$d#$bd#,abd#$d#$abd#*d#$a#$d#7c#Cd#$$+#%d#2b#%a$Ud#$ac#$#,b#$aaac#+d#$d#$d#$b#8#Ad#&$*#8d#&a$Ob#$d#$d#$bd#+aaaab#*d#$d#$d#$d#$d#6c#Cd#$$,#%d#2d#$ac$Sd#$d#$ad#-aaac#$b#*d#$d#$d#$a#7#%abd#6d#'$)#<a$Ob#$aa#,a#$d#$d#$d#$b#$d#-d#$d#$d#;bd#$d#(d#4b#$d#$c$%#<bd#$$Qb#$ab#1d#$ac#$b#$d#0d#$b#:#$d#$b#&d#4#$#'d#$#Vbd#=bd#%$Sd#$ad#,abd#$aad#0d#$d#$d#<c#$d#$d#6#$c#)#Uc#@bd#$c$Vad#-b#$a#$b#$d#$d#0c#(c#;#$a#5b#+#=d#:#6#$#*bd#'$Naac#,d#$aad#$a#0#,#<c#%d#4#&#,#Sc#8b#'ad#%c$Gaaab#-d#$d#$d#$d#$b#$d#$d#,c#.#=#$a#3#%#.#Obd#@ad#'$Ed#%d#$ab#$d#-b#$d#$d#$d#$b#$d#$d#(#3#>bd#3#&#(b#&#Kc#$d#Fbd#&$Fd#$aaad#.d#$d#$a#$a#)#,d#*#?bd#2#&#*#$#&#Hbd#5b#/d#%bd#&$Cd#$d#$aabd#-d#$d#$b#$b#$d#$c#&#$#+d#*#4c#*#%c#3#%#)a#$c#Gc#3b#$d#5c#($Bd#%d#%ab#$b#-d#$b#$b#$d#$c#$b#.b#*#/#1#%c#(d#*#&#*b#%c#Ec#5b#$a#4#'$@d#$d#$aabd#$d#.d#%d#&c#*b#.b#'#-c#1#%c#)d#,#%#&a#$bd#&d#B#4ac#$d#$d#%b#,c#&#Qd#Fd#$d#$aaad#0d#$ad#+b#/b#)#*bd#0#(#(#$#*#&#'c#$#%d#$#%#%#A#5aab#$a#)d#$#&$'d#:d#$d#$aaad#0d#$#/b#.a#&c#+#3#'bd#%d#$d#)#&#%c#%c#%#(d#A#3#%aa#$ac#,c#%$'d#:d#$b#$aac#$d#.c#1c#$#-ac#'#,#2#'d#&d#$c#)#'#'#$c#'#&d#/d#4#0aad#$aa#$b#$#(#&$%#$#<d#%ab#$d#$b#-#%d#0b#0c#$#$d#%#+#3#)d#&d#$#*#&c#$#&#%c#'#$#.c#$#2#/abd#&aaa#$d#'c#&$$#$#<aaab#$d#*#6c#$#/d#$#%c#&#)c#2#(d#*#*#'#$#'#%d#$#&d#.c#&#2#-c#%b#%#$#%c#'ac#*#&$$d#Baab#$d#$#%#9b#/c#$bd#&#*#4#0#+#,#%bd#'d#.bd#%#/#$d#*c#$a#%aa#$bd#$c#*#&$$#%#Da#&d#@b#/d#%#$c#(#(#4#)d#)#(c#.#%bd#%d#0bd#%#/c#$#$a#$d#%#$#'d#$bd#$#%b#$#+#&#(d#R#$$7b#0bd#$c#%c#(#'c#&#)#0c#&#%d#+#%bd#'d#.bd#$bd#0c#$c#(#%#$d#'d#$c#$ad#$#(bd#&ab#Q#%$6b#4a#$c#(#'b#$d#)#2c#%#/#$ad#%#$#/bd#$c#3d#+bd#%#&aaad#'d#%#%#&c#%#P#$$8d#4#%#&bd#'#'#%c#$d#&#2c#%#3d#$b#$d#.d#$ac#=d#$d#)ab#%d#$b#$c#)c#%#'#O#%$L#&#%c#'#(#$c#&d#%#3c#$#:#$#1ac#)b#5d#'d#$#$#%c#%#$bd#$b#$#&c#&#'#N#$$Lb#$c#$d#'#%b#$a#$c#3c#%#;d#2a#+d#)d#4b#$bd#%d#%ab#(#$bd#(#M#%$Lab#)#'a#$d#&#3d#$d#;d#4a#(c#$#)d#3#%#)c#%#$c#$bd#'#&c#)#K#%$Ka#$c#)#%d#%#$#$b#$c#2c#$#;d#/d#$d#$b#(b#$d#'b#2d#)c#&aa#'c#%c#*#J#&$Lb#$c#)#*ac#$#+d#*b#<d#5ac#%ac#C#$ab#$d#%d#%#&#+#I#%$Nbd#(d#&#&#$ac#$d#*#$#(a#M#$bd#%aa#$#3d#'d#&b#$a#%b#$d#'#(#(#I#&#(#&$Ed#%#&#%#%#&bd#%b#,#$#'a#Nbd#$aab#%#=b#&#%d#$c#$#%#'#(#'#H#&#%#(#=d$(bd#(#%b#$d#$ab#.d#(b#Nd#&#(b#'b#$#-d#'b#*a#%#%b#&#%d#%#'#'#H#%#&#(#;#$#)d#)d#Nb#$#&#+d#%bd#$b#-d#)#$#Kc#&d#)d#%d#,bd#'ac#+d#%b#%bd#&#&#$#'#$#&#G#&#$#'c#7#$#$#$#)d#)b#(d#Ebd#&#+d#'c#$d#$d#,b#%b#$d#'d#Cc#+d#$b#/d#$c#&#$#$b#+d#$b#%b#%#&#'#'bd#%#H#&d#(#<#$#)#$#(#&#%d#$d#&#$#:b#$#&#$d#'ac#&ad#5#$c#Ad#$c#*d#)c#%#3c#%#&d#$#+d#$d#.#$#(c#%bd#%#G#%d#&#P#$#)d#$c#%#1c#(b#%d#%bd#%d#$aa#%d#4d#$b#(d#9#9b#6#%#(#+b#-a#)#'c#$c#G#*#P#%#.#$#'d#)ab#)#$#&#%d#&bd#%c#%b#$#2b#$d#6b#&c#;#%#6#%#(#*b#;#'#&#H#'#R#$#>#0#%#%#'b#$c#'#$ad#1d#$d#$d#5d#$#>d#%#&#6#%#%c#Fc#&d#K#'#R#%#@#-c#$#%#(ad#(#$b#$#0#$#'d#2c#Bd#&#$#7#%#$d#$#G#)d#H#&#S#$#G#$bd#$a#$b#%bd#(a#.b#$d#4#J#&#8#$b#Hc#(b#F#&#S#%#Pc#$#%b#%d#$#)b#/b#0bd#M#&#7#%b#Gc#)b#D#$#V#%#Ra#%c#$bd#$bd#1b#/d#$c#M#%#9#%b#H#)b#D#$#W#$$#d#%bd#%d#&d#1d#0bd#3d#<#%#8#%b#,#&#<#)#$$C#&$$#&a#Ebd#N#&#9#$b#+bd#.c#$d#*#$d#%a$D#&$&#$d#Cd#%#T#%#9#$d#,#&d#;d#'d#%d$C#&c$'c#9d#$$'#&#9#$d#)#%b#Ld$?#%c$-d#$c#-$/#$#9#$#$#+ad#Ib$=#%#*d$*c#+$.#&#9#+ab#%d#Fb#$d#(d$4#&#)d$(d#%#'$3b#:#*a#$d#$c#Fd#'b#%#$$2#&#+d%A#%#:#+d#$bd#$d#Fd#'b#$b$4#&#+d%Bd#;#+aa#$d#Bd#)d#&#$$)d#)c#&#*d%Ab#8bd#)d#$bd#Hb#-d$*d#)d#$#%#+#$%@d#:bd#+ad#Hd$?c#%#+b%Wc#-ad%1c#&#+#$%X#/c#%d#Ed#&b$=#%#+#$c%7d#?#/#$d#Iabd$?d#,#&%6d#=d#%#/c#Habd$K#&%4d#8#$bd#'#.bd#Fabd#Wd#K#'%3#$#6c#'#)#,ad#Dabd$L#(%1d#5#*abd#-c#E#%#'b#&b$E#(%0#$#6#*c#%bd#+ad#A#%c#&d#&a$F#'%/d#7#.#$bd#+bd#A#%#$d#%c#$d#'c$G#&%N#%ac#*c#'d#=#%b#$#$d#%#'c$I#$$@#$$.#$a#$b#(c#$d#>d#(d#)#&#$d'A#&a#$b#'c#$d#%d#Id#%d#6d#/b&S#(d#-c#(d$/d#.#$&Xc#-c#)d#Md#5#$'.d#&#/#)b#Md#4b'-#$#'#*#$b#'ac#Dd((ac#Gd#%d#Mb'.d#$b$:ab#$c&4b#Bd$Gaac#/c&&b%5aab#$b#(b%Xb%Aad#$b#$b#)#Ed&3d$@b#&#(d#(#Fd%+d%3#&c#1b#'#&a#$%Qd#Hd$@d#%b#8d&%d#Ha#=d#X#$bd&:d#$d#Kd$@a&8a#Hd#7d'Ia#Hb#4d#.d'<d#$d$'b(Td(Sd51"
w = 320

COUL = [(250,230,85),(200,20,0)]

def taille(n):
 return  54 * (n[0] - 35) + n[1] - 34

def remplir(x,y,t,c):
    while t > 0:
        if x == w:
            x = 0
            y += 1
        d = min(t, w - x)
        fill_rect(x,y,d,1,c)
        x += d
        t -= d
    return x,y   

def aff():
    i = 0
    x,y,c = 0,0,1
    while i < len(img):
     v = img[i] 
     if 97 <= v <= 100:
        for _ in range([5,3,2,1][v-97]):
            x,y = remplir(x,y,1,COUL[c])
            c = 1 - c
        i += 1               
     else:   
        t = taille(img[i:i+2])
        i += 2
        x,y = remplir(x,y,t,COUL[c])
        c = 1-c 

def flou():
    for x in range(321):
        for y in range(222):
            s = [0,0,0]
            for i in range(9):
                v = get_pixel(x-1+i%3,y-1+i//3)
                c = 1 if i != 0 else 3
                for j in range(3): s[j] += c * v[j]
            set_pixel(x,y,(s[0]//11,s[1]//11,s[2]//11)) 

aff()
flou()