citrouille.py

Created by schraf

Created on October 04, 2022

4.79 KB


from kandinsky import fill_rect
from time import sleep
from random import randint

def light(coul, i):
    r, v, b = coul>>16, coul>>8 & 255, coul & 255
    c = i / 10
    return (int(r - r * c), int(v - v * c), int(b - b * c))

def draw_image(rle, x0, y0, w, pal, zoomx=1, zoomy=1, itransp=-1, li=0):
  i, x = 0, 0
  x0, y0 = int(x0), int(y0)
  nvals = len(pal)
  nbits = 0
  nvals -= 1
  while(nvals):
    nvals >>= 1
    nbits += 1
  maskval = (1 << nbits) - 1
  maskcnt = (0xFF >> nbits >> 1) << nbits
  while i<len(rle):
    v = rle[i]
    mv = v & maskval
    c = (v & maskcnt) >> nbits
    if (v & 0b10000000 or nbits == 8):
      i += 1
      c |= rle[i] << (7 - nbits + (nbits == 8))
    c = c + 1
    while c:
      cw = min(c, w - x)
      if mv != itransp:
        fill_rect(x0 + x*zoomx, y0, cw*zoomx, zoomy, light(pal[mv], li))
      c -= cw
      x = (x + cw) % w
      y0 += x == 0 and zoomy
    i += 1

palette = (
0, 2622464, 6299648, 9453568, 12605440, 14712832, 4730896, 15233024, 0
)

image = (
b"\x90P\21\xb0\6\21\x80\4\22\xb0\6\1\2\xf0\3\22\3\1\x80\6\1\"\1\xd0\3\1\22\3\2\1\xd0\5\1\2\x032\xc0\3\1\x132\xc0\5\2\4\5\3B\xb0\3\22\3\2\3\22\6\xa0\5\2\3\24\23\6\"\xa0\3\22\3\2\3\2\3\"\xf0\4\1\3'\4\5\x042\1\x90\3#\2\3\x023\6\xd0\4\1\3\5\24\a$\3\22\3\2\x80\3\22C\2\3$\2\xb0\4\3\4\5\27\x057\4\22\3\2\1\xe0\2\6\x83\1$\3\1\x90\4\2\27\5\a\4\25'\x132\xe0\2\xf3\0\24\3$\3\1\xe0\3\2\4\5G\x047\5\4\3\2\23\1\xc0\2\2\3\4#\4\23\4\aD\3\xd0\3\1\3\5\a\5\27\5G\5\24\3\2\23\1\xb0\2\1\3$3$\5\x034\3\xb0\3\4\xf7\1\4#\2\1\xa0\2\3\24\3D\5\3$\3\4\a\4\5\3\x90\3\2\5\xf7\0\5'\5\27\5\4\3\2\23\2\x90\2\x024\3\4\x134\5\4\5$\27\4\xe0\2\2'\25\27\5\x87\1\5\27\x043\x90\2\2\3d\5\a\5$\3\24\5\27\5\3\xc0\2\6\x047\5'\5\x97\1\4\a3\1\xf0\1\2D\3\24\27\x84\x017\4\1\xa0\2\26\3\25G\5\a\5\a\5\xf7\0\4\3\24\2\xf0\1\3\xf4\0'\4\5\4\3\5\3\25G\4\xb0\2\21\3\x047\5'\5'\5G\3\4\3\4\3\1\xd0\1\3\xf4\0\5\a\4\a\24\x054U\3\6\xe0\2\x165g\5G4\2\xd0\1\3\4\a4\5G$\27D\3\2\21\xa0\3\2\x047%\27\5G$\3\xc0\1\3$\a$G\4\5\23\2\6\1\xd0\4\6%\a\5\27\5W\4\a\4\1\xb0\1\x034\a\x047\24\3\2\1\xb0\5\2\4\27%\a\5\a\5\27\4\27\2\xa0\1\2\4\a\4\a\4\5\4\5\23\2\6\x90\3\1\2\xe0\2\x165g\4\xa0\1\3\24\a\4\a\4\3\4\2\xc0\3\2\5\6\x80\3\2\3g\4\a\2\x80\1\2$\3\2\6\1\xf0\3\a\5\3\xb0\3\1\26\3\5\27\4\3\x80\1\23\4\2\1\x90\4\6%\2\xb0\3\1\0\1\2\3'\x80\1\b\xc0\4\x025\4\1\x80\4\26\1\xd0\5\3E\2\x80\n\x035\27\4\1\xe0\t\1U\a\4\3\xe0\te\a\24\2\xc0\t\2e\a\24\2\xb0\t\2\xf5\0\a\4\5\4\3\xa0\t\2\x85\1\4\3\4\3\x80\t\1\2\ae\27\5\24\a\3\x80\t\3\x95\1$\5\3\1\xc0\4\1\x80\4\4\x85\1\a\4\5\3\24\a\4\xc0\4\21\xe0\3\1\4\x95\1\a$\5\4\a\6\xb0\4\22\xe0\3\3\25\a\xf5\0\a\24\3\5\4\a\4\xb0\4\1\2\6\xc0\3\x015\27\25\a\25\27$\5\4\a\5\2\xb0\4\23\1\xb0\x035\a\5\a%\a\5\a\x054\5\4\27\xb0\4\2\4\2\xa0\3\6\5\a5\a%\a%$\a\4\5\27\2\xc0\3\1P\24\1\x80\3\1\x045\a\25\a\5\a\5\a\5\aD'\5\1\xa0\3\2\3P\4\a\6\x80\3\2%\a%\a\25\a\25\a\5$\a\5\4\27\5\3\x90\3\2\23P\3\5\4\2\xf0\2\xf5\1\3\5\23\25\a\5\a\5\2\xf0\2\1\a\5\1P\2\4\5\4\xf0\2\22#\2\4C\4\23\2\3\x123$\2\xf0\2\3\27\1P\1\3\a\4\2\x80\t\3\27\4\xf0\0\3\27\3\1\xe0\b\2\4\27\3\xf0\0\3\27\4\3\1\xc0\b\3\24\a\4\2\xf0\0\2\27#\1\xa0\b\6\3\24\a\4\1\xf0\0\1\4\5\4\3\24\2\xf0\a\1\3$\a\4\3\x90\1\4\a$\5\3\2\xd0\a\6\3\24\5\4\27\3\x90\1\3\4\5\24\3\27\3\xa0\a\2\4\5$\a\5\a\4\1\x90\1\2\24\a$\a\3\6\xf0\6\1\23\a\4\a\24'\3\xb0\1\3'\24\a\5\a\3\xd0\6\2\4\a\5$7\3\1\xb0\1\x027\24\27\4\3\6\xf0\5\21\23\5\4\5\4\a\3\4'\5\2\xd0\1\x027\24\5\27\24\3\2\x80\5\1\2\3\24\a\5\27D\27\5\a\4\xe0\1\1\x047$\27$\3\2\1\xc0\4\2\3\4%\a\4\a\4\a4\5\27\5\2\xf0\1\2'\5\4\27\4\a\24\5\4\5\2\xa0\1\1\22\1 \1\x90\2\3\5\a\4\a\4\a\4\x054\x057\b\x90\2\x047\3\4\a\4\x054\3\xa0\1C\2F\21\xc0\1\3\a\4\a\4\5\4\a\24\5$7\xb0\2\5\a\5\24\3\5\24\a\24\5\2\xa0\1\x035'\4\a\24\23\xb0\1\4\a\4\a\4\a\4\5\24\3\5\4\a\5\a\5\2\xb0\2\2\27\5$\a\24\a\24\3\xa0\1\24\a\4G4\3\xb0\1\4\a\4\aD\27\5\a\4\27\3\xd0\2\4\a\4\a\4\a\4\a$\5\3\xa0\1\3\4\5\xf4\0#\1\xa0\1\3\5\4\5\24\xf7\0\5\3\xe0\2\2\4\a\4\a\4\27\4\5\24\3\2\6!\0\1 \x014\5D\3\5\23\1\x90\1\x024\5\4g\4\3\x80\3\6\3\4W4\23\24\23\4\3\4\3\5\4#\4\5D\3\4\2\0\21\"\4\23\24\5$g\5\3\1\xa0\3\2\xf7\0D\23\4\3\4\3\5\3\4\23\4\23\x043\5\24C$\3\24\3$\3g\4\1\xc0\3\1\3W\5\4\3\4\3\4\3\4\3\5\3\4\a\3B\3\4cD\3\5\24\aD\a\5\a\25\3\2\xf0\3\2\4\a\5'%\3\4\3\5$\3\24\3\1\3\2\23\2#\2\3$\3$\x034\a\4\x0547\2\xa0\4%'\5\4\3\4\23\24\3\4\3\4\x032C\22\3\24\3\4\3$'\4\x174\25\2\xd0\4\4\a\5\a\5\a\5\24\3\4\3\4\3\24\3\21\22\3\22\3\2\3\2\1\2\4\3\4\23\4\25G\4\a$\3\2\xf0\4\3\5\27\5\4\x034\x054\1P1\0\2\3$\5\4\a\4'\4\a\24\3\2\6\xa0\5\3\a\5\aT\a\4\a\5\4\xb0\1\1\3$'\4\27\4\27\4\3\2\xd0\5\6\3\5\4\x034G\xb0\1\1\3\4\a$'\24\3\6\1\x80\6\1T\a\x047\xc0\1\3$\a\4\a\4\a\4\3\1\xc0\6\1\2\6\3\24G\xc0\1\x024#\6\xa0\a\1\2\23\4'\xc0\1\2\24\3\4\2\1\x90\b\1\6\2\xc0\1\6\2\1\x80<"
)

fill_rect(0,0,320,222,(0,0,0))
k, d = 4, 2
x, y = 40,50

while True:
 draw_image(image, x, y, 89, palette, zoomx=1, zoomy=1, itransp=0, li=k)
 k += d
 if k == 0 or k == 10: d = -d
 if k == 10: x,y = randint(0,230), randint(0,130)
 sleep(.1)