phytonda yeniyim bu yüzden chatgpt den destek alarak bir yılan oyunu yazmaya çalıştım fakat kodumda bir hata var sanırım
import random
import os
import msvcrt
import time
# Oyun alanı boyutları
WIDTH = 20
HEIGHT = 10
# Yılanın başlangıç pozisyonu ve hızı
snake_x, snake_y = WIDTH // 2, HEIGHT // 2
snake_speed = 1
# Yılanın başlangıç uzunluğu ve gövdesi
snake_length = 1
snake_body = [(snake_x, snake_y)]
# Oyun alanında yiyecek oluşturma
food_x = random.randint(1, WIDTH - 1)
food_y = random.randint(1, HEIGHT - 1)
# Yılanın hareket yönü
direction = "RIGHT"
# Oyun tahtası oluşturma
board = [[' ' for _ in range(WIDTH)] for _ in range(HEIGHT)]
def draw_board():
os.system('cls' if os.name == 'nt' else 'clear')
for y in range(HEIGHT):
for x in range(WIDTH):
if (x, y) == (food_x, food_y):
print('F', end=' ')
elif (x, y) in snake_body:
print('O', end=' ')
else:
print(board[y][x], end=' ')
print()
def get_key():
if msvcrt.kbhit():
key = msvcrt.getch()
return key
return None
try:
while True:
key = get_key()
# Yılanın yönünü güncelle
if key == b'w' and direction != "DOWN":
direction = "UP"
elif key == b's' and direction != "UP":
direction = "DOWN"
elif key == b'a' and direction != "RIGHT":
direction = "LEFT"
elif key == b'd' and direction != "LEFT":
direction = "RIGHT"
# Yılanın yeni başını hesapla
if direction == "UP":
new_head = (snake_x, snake_y - 1)
elif direction == "DOWN":
new_head = (snake_x, snake_y + 1)
elif direction == "LEFT":
new_head = (snake_x - 1, snake_y)
elif direction == "RIGHT":
new_head = (snake_x + 1, snake_y)
else:
new_head = (snake_x, snake_y)
snake_body.insert(0, new_head)
if snake_x == food_x and snake_y == food_y:
# Yılan yiyeceği yedi
snake_length += 1
food_x = random.randint(1, WIDTH - 1)
food_y = random.randint(1, HEIGHT - 1)
else:
# Yılanın kuyruğunu kısalt
snake_body.pop()
snake_x, snake_y = snake_body[0]
# Oyun tahtasını temizle
board = [[' ' for _ in range(WIDTH)] for _ in range(HEIGHT)]
# Yılanın gövdesini tahtaya ekle
for segment in snake_body:
x, y = segment
board[y][x] = 'O'
draw_board()
time.sleep(0.1)
except KeyboardInterrupt:
print("Oyun bitti!")
kodu çalıştırdığımda oyun başlıyor fakat ben w a s veya d tuşların ıbasmadığımda birden çöküyor ki snake oyununa sürekli hareket
edemeyeceğimizin farkındasınızdır
Bence bu şekilde oyun yapmaya calışma. Bir kere while true baştan falso. Surekli sonsuz dongude olması mantıklı degil. Biz java da observer observable kullanıyorduk python hakkında çok bilgim yok ama github da benzer oyunlar bulabilirsin.
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme