CODE
import time, framebuf, random, math
from machine import Pin, SPI
import ST7735
# Pinler
EKRAN_SCK = 7
EKRAN_MOSI = 8
EKRAN_CS = 11
EKRAN_DC = 10
EKRAN_RST = 9
spi = SPI(1, baudrate=40000000, polarity=0, phase=0, sck=Pin(EKRAN_SCK), mosi=Pin(EKRAN_MOSI))
ekran = ST7735.TFT(spi, Pin(EKRAN_CS), Pin(EKRAN_DC), Pin(EKRAN_RST), rotation=0)
buf = bytearray(128 * 160 * 2)
fb = framebuf.FrameBuffer(buf, 128, 160, framebuf.RGB565)
# ================= RENKLER =================
SIYAH = 0x0000
BEYAZ = 0xFFFF
KIRMIZI = 0xF800
TURUNCU = 0xFD20
KAHVE = 0x6B2C
KAR_GOLGE = 0xAD55
MAVI = 0x001F
SARI = 0xFFE0
YESIL = 0x07E0
# ================= KAR TANESİ =================
class KarTanesi:
def __init__(self):
self.x = random.randint(0, 127)
self.y = random.randint(-20, -5)
self.boyut = random.randint(1, 3)
self.hiz = random.uniform(0.5, 2.0)
self.sallanma = random.uniform(0, 6.28)
self.sallanma_hizi = random.uniform(0.02, 0.05)
def ciz(self):
if self.boyut == 1:
fb.pixel(int(self.x), int(self.y), BEYAZ)
elif self.boyut == 2:
fb.pixel(int(self.x), int(self.y), BEYAZ)
fb.pixel(int(self.x) + 1, int(self.y), BEYAZ)
fb.pixel(int(self.x), int(self.y) + 1, BEYAZ)
fb.pixel(int(self.x) + 1, int(self.y) + 1, BEYAZ)
else:
fb.pixel(int(self.x), int(self.y), BEYAZ)
fb.pixel(int(self.x) + 1, int(self.y), BEYAZ)
fb.pixel(int(self.x) - 1, int(self.y), BEYAZ)
fb.pixel(int(self.x), int(self.y) + 1, BEYAZ)
fb.pixel(int(self.x), int(self.y) - 1, BEYAZ)
def hareket_et(self):
self.sallanma += self.sallanma_hizi
self.x += math.sin(self.sallanma) * 0.3
self.y += self.hiz
if self.y > 159:
self.y = random.randint(-20, -5)
self.x = random.randint(0, 127)
self.boyut = random.randint(1, 3)
self.hiz = random.uniform(0.5, 2.0)
# ================= KARDAN ADAM =================
class KardanAdam:
def __init__(self, x, y):
self.x = x
self.y = y
self.alt_govde = (x, y + 25)
self.orta_govde = (x, y + 12)
self.bas = (x, y - 5)
self.sol_goz = (x - 4, y - 8)
self.sag_goz = (x + 4, y - 8)
self.burun = (x + 8, y - 3)
self.dugme1 = (x, y + 8)
self.dugme2 = (x, y + 16)
self.sol_kol = (x - 15, y + 5)
self.sag_kol = (x + 15, y + 5)
self.sapka_x = x
self.sapka_y = y - 18
def ciz(self):
# Alt gövde
fb.ellipse(self.alt_govde[0], self.alt_govde[1], 16, 16, BEYAZ, True)
fb.ellipse(self.alt_govde[0], self.alt_govde[1], 16, 16, KAR_GOLGE, False)
# Orta gövde
fb.ellipse(self.orta_govde[0], self.orta_govde[1], 12, 12, BEYAZ, True)
fb.ellipse(self.orta_govde[0], self.orta_govde[1], 12, 12, KAR_GOLGE, False)
# Kafa (beyaz)
fb.ellipse(self.bas[0], self.bas[1], 9, 9, BEYAZ, True)
fb.ellipse(self.bas[0], self.bas[1], 9, 9, KAR_GOLGE, False)
# Gözler
fb.ellipse(self.sol_goz[0], self.sol_goz[1], 2, 2, SIYAH, True)
fb.ellipse(self.sag_goz[0], self.sag_goz[1], 2, 2, SIYAH, True)
fb.pixel(self.sol_goz[0] - 1, self.sol_goz[1] - 1, BEYAZ)
fb.pixel(self.sag_goz[0] - 1, self.sag_goz[1] - 1, BEYAZ)
# Burun
fb.line(self.bas[0] - 2, self.bas[1] - 2, self.burun[0] + 5, self.burun[1] - 2, TURUNCU)
fb.line(self.bas[0] - 1, self.bas[1] - 1, self.burun[0] + 5, self.burun[1] - 1, TURUNCU)
fb.line(self.bas[0], self.bas[1], self.burun[0] + 5, self.burun[1], TURUNCU)
fb.pixel(self.burun[0] + 5, self.burun[1], TURUNCU)
# Ağız
for i in range(5):
mx = self.bas[0] - 6 + i * 3
my = self.bas[1] + 3
if i != 2:
fb.pixel(mx, my, SIYAH)
# Düğmeler
fb.ellipse(self.dugme1[0], self.dugme1[1], 2, 2, SIYAH, True)
fb.ellipse(self.dugme2[0], self.dugme2[1], 2, 2, SIYAH, True)
# Kollar
fb.line(self.orta_govde[0] - 8, self.orta_govde[1] + 2, self.sol_kol[0], self.sol_kol[1], KAHVE)
fb.line(self.orta_govde[0] + 8, self.orta_govde[1] + 2, self.sag_kol[0], self.sag_kol[1], KAHVE)
fb.line(self.sol_kol[0], self.sol_kol[1], self.sol_kol[0] - 5, self.sol_kol[1] - 3, KAHVE)
fb.line(self.sol_kol[0], self.sol_kol[1], self.sol_kol[0] - 4, self.sol_kol[1] + 4, KAHVE)
fb.line(self.sag_kol[0], self.sag_kol[1], self.sag_kol[0] + 5, self.sag_kol[1] - 3, KAHVE)
fb.line(self.sag_kol[0], self.sag_kol[1], self.sag_kol[0] + 4, self.sag_kol[1] + 4, KAHVE)
# ===== ŞAPKA (Kırmızı + Beyaz çizgi) =====
# Şapka gövdesi (kırmızı)
fb.fill_rect(self.sapka_x - 10, self.sapka_y - 2, 20, 12, KIRMIZI)
fb.rect(self.sapka_x - 10, self.sapka_y - 2, 20, 12, BEYAZ)
# Şapka kenarı (beyaz)
fb.fill_rect(self.sapka_x - 12, self.sapka_y + 8, 24, 4, BEYAZ)
fb.rect(self.sapka_x - 12, self.sapka_y + 8, 24, 4, KIRMIZI)
# Şapka bandı (mavi)
fb.fill_rect(self.sapka_x - 10, self.sapka_y + 4, 20, 2, MAVI)
# Şapkanın üstünde kar
fb.ellipse(self.sapka_x, self.sapka_y - 2, 8, 3, BEYAZ, True)
# ================= BAŞLAT =================
print("❄️ Kardan Adam + Kar Yağışı (Siyah Arka Plan)")
kardan_adam = KardanAdam(64, 115)
kar_taneleri = [KarTanesi() for _ in range(60)]
while True:
fb.fill(SIYAH)
kardan_adam.ciz()
for k in kar_taneleri:
k.hareket_et()
k.ciz()
ekran.blit(buf)
time.sleep_ms(25)
License 
All Rights
Reserved

0
More from this category






