Bu Konuda Technopat Sosyal'in Özelliklerini Deneyebilirsiniz

Adsız.png
 
Python:
import pygame
import random

# Oyun alanı boyutları
genislik = 800
yukseklik = 600
blok_boyutu = 30

# Renkler
siyah = (0, 0, 0)
beyaz = (255, 255, 255)
kirmizi = (255, 0, 0)
yesil = (0, 255, 0)
mavi = (0, 0, 255)

# Tetromino şekilleri ve renkleri
sekil_tipleri = [
    [[1, 1, 1, 1]],
    [[1, 1], [1, 1]],
    [[1, 1, 0], [0, 1, 1]],
    [[0, 1, 1], [1, 1, 0]],
    [[1, 1, 1], [0, 1, 0]]
]

sekil_renkleri = [yesil, mavi, kirmizi, beyaz]

def yeni_sekil():
    indeks = random.randint(0, len(sekil_tipleri) - 1)
    sekil = sekil_tipleri[indeks]
    renk = sekil_renkleri[indeks]
    return sekil, renk

def tahta_ciz(tahta):
    for satir in range(20):
        for sutun in range(10):
            pygame.draw.rect(ekran, tahta[satir][sutun], (sutun * blok_boyutu, satir * blok_boyutu, blok_boyutu, blok_boyutu))

def sekil_ciz(sekil, x, y, renk):
    for satir in range(len(sekil)):
        for sutun in range(len(sekil[satir])):
            if sekil[satir][sutun]:
                pygame.draw.rect(ekran, renk, ((x + sutun) * blok_boyutu, (y + satir) * blok_boyutu, blok_boyutu, blok_boyutu))

def tahta_guncelle(sekil, x, y, tahta):
    for satir in range(len(sekil)):
        for sutun in range(len(sekil[satir])):
            if sekil[satir][sutun]:
                tahta[y + satir][x + sutun] = renk

def sekil_hareket(sekil, x, y, tahta, hareket):
    if hareket == "sol":
        if not sekil_carpti(sekil, x - 1, y, tahta):
            x -= 1
    elif hareket == "sag":
        if not sekil_carpti(sekil, x + 1, y, tahta):
            x += 1
    elif hareket == "asagi":
        if not sekil_carpti(sekil, x, y + 1, tahta):
            y += 1
    return x, y

def sekil_don(sekil):
    yeni_sekil = []
    for sutun in range(len(sekil[0])):
        satir = [sekil[satir][sutun] for satir in range(len(sekil))]
        yeni_sekil.append(satir[::-1])
    return yeni_sekil

def sekil_carpti(sekil, x, y, tahta):
    for satir in range(len(sekil)):
        for sutun in range(len(sekil[satir])):
            if sekil[satir][sutun]:
                if x + sutun < 0 or x + sutun >= 10 or y + satir >= 20 or tahta[y + satir][x + sutun]:
                    return True
    return False

def satir_sil(tahta):
    satirlar = []
    for satir in range(len(tahta)):
        if all(tahta[satir]):
            satirlar.append(satir)
    for satir in satirlar:
        del tahta[satir]
        tahta.insert(0, [siyah] * 10)

def oyun():
    pygame.init()

    ekran = pygame.display.set_mode((genislik, yukseklik))
    pygame.display.set_caption("Tetris")

    saate_gore = pygame.time.Clock()

    tahta = [[siyah] * 10 for _ in range(20)]

    sekil, renk = yeni_sekil()
    x, y = 3, 0

    oyun_bitti = False
    puan = 0

    while not oyun_bitti:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                oyun_bitti = True
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    if not sekil_carpti(sekil, x - 1, y, tahta):
                        x -= 1
                elif event.key == pygame.K_RIGHT:
                    if not sekil_carpti(sekil, x + 1, y, tahta):
                        x += 1
                elif event.key == pygame.K_DOWN:
                    if not sekil_carpti(sekil, x, y + 1, tahta):
                        y += 1
                elif event.key == pygame.K_UP:
                    yeni_sekil = sekil_don(sekil)
                    if not sekil_carpti(yeni_sekil, x, y, tahta):
                        sekil = yeni_sekil

        if not sekil_carpti(sekil, x, y + 1, tahta):
            y += 1
        else:
            tahta_guncelle(sekil, x, y, tahta)
            satir_sil(tahta)
            puan += 10
            sekil, renk = yeni_sekil()
            x, y = 3, 0

            if sekil_carpti(sekil, x, y, tahta):
                oyun_bitti = True

        ekran.fill(siyah)
        tahta_ciz(tahta)
        sekil_ciz(sekil, x, y, renk)
        pygame.display.update()

        saate_gore.tick(10)

    pygame.quit()
    print("Oyun Bitti!")
    print("Puan:", puan)

oyun()
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı