EmirElibol
Hectopat
- Katılım
- 1 Ocak 2023
- Mesajlar
- 3.610
- Çözümler
- 8
Ee n'oldu şimdi?
Bir şey olmadı. Neyi yanlış yaptim?
Son düzenleyen: Moderatör:
Ee n'oldu şimdi?
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 sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.