2. Kurulum ve içe aktarma
Kuruluma girmek için pip install pygame kullanın ve başarılı kurulumdan sonra gerekli modülleri içe aktarın:
import pygame,sys,random from pygame.locals import *Bunlar arasında sys, takipte kullanılacak çıkış programı mekanizmasıdır, bu yüzden buraya import edilmesi gerekir.
3. Sonraki işlemler için gerekli parametreleri tanımlayın
#Pygame kitaplığını başlat pygame.init()Pygame kullanırken, aşağıdaki çıkış koduna karşılık gelen kitaplığı başlatmak gerekir, bu ikisi bir çifttir.
#Oyun arayüzünü başlat
DISPLAY=pygame.display.set_mode((800,800))
#Oyun penceresi başlığını ayarla
pygame.display.set_caption('Yılan Oyunum')Yukarıdaki kodu yazdıktan sonra, çalıştırmak için tıklayın ve yanıp sönen bir arayüz olacaktır, bu normaldir çünkü hiçbir şey çalışmıyor.#Oyun hızını kontrol etmek için bir değişken tanımla FPSCLOCK=pygame.time.Clock() #renk tanımlama BLACK=pygame.Color(0,0,0) WHITE=pygame.Color(255,255,255) RED=pygame.Color(255,0,0) # Yılan kafasının başlangıç konumunu tanımlayın snake_Head=[100,100] # Bir yılanın ilk uzunluğunu tanımlayın, çünkü arayüz 20*20 olduğundan uzunluk 20 azaltılır snake_Body=[[80,100], [60,100]] # # Yılan başlangıç yönü direction="right" # Yönü değiştirmek için değişkeni tanımlayın, tuşuna basın changeDirection = direction #başlangıçtaki yemek pozisyonunu tanımlayın food_Postion = [300,300] # Yemek durumunu tanımlayın, 0 yenilmiş, 1 yenilmemiş anlamına gelir food_Total = 1NOT:Yukarıdakilerin tümü daha sonra kullanılacak tanımlayıcı parametrelerdir.
4. Yılan ve Yiyecek Çizimi
#yılanı çiz
def drawSnake(snake_Body):
for i in snake_Body:
pygame.draw.rect(DISPLAY,WHITE,Rect(i[0],i[1],20,20))
# yemek yerini çiz
def drawFood(food_Postion):
pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))Yukarıdaki pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20)) çizimi pygame'in çizim modülüdür, DISPLAY in rect ise oyun arayüzündeki rengi çizmek içindir. küme, çizilen dikdörtgenin alanı, dikdörtgenin genişliği ve yüksekliği.5. Oyun kuralları ve işleyişi
def gameover():
#pygame'den çık
pygame.quit()
#programdan çık
sys.exit()NOT:Burada ayarlanan çıkış, yukarıdaki pygame.init() işlevine karşılık gelir.game_flag=True
while game_flag:
# arka plan rengini oluştur
DISPLAY.fill(BLACK)
#açgözlü yılan çizimi
drawSnake(snake_Body)
#yemek yeri çiz
drawFood(food_Postion)Burada arka plan siyah olarak ayarlanmıştır, bu da tanım rengindeki ayara karşılık gelir ve yılanın ve yiyeceğin konumu da yukarıdakine karşılık gelir.#Oyun hızını artır
game_speed=1+len(snake_Body)//3
#Görüntü katmanını yenile, yılan ve yiyecek her hareket ettiğinde görüntü katmanı yenilenir
pygame.display.flip()
FPSCLOCK.tick(game_speed)
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()Oyunun hızı burada belirtilir ve yemek yedikten sonra hareket hızı artar. elif event.type == KEYDOWN:
# Sağ ok veya d ise yılan sağa doğru hareket eder
if event.key == K_RIGHT or event.key == K_d:
changeDirection = 'right'
# Ok veya a ise yılan sola hareket eder
if event.key == K_LEFT or event.key == K_a:
changeDirection = 'left'
if event.key == K_UP or event.key == K_w:
changeDirection = 'up'
if event.key == K_DOWN or event.key == K_s:
changeDirection = 'down'
# Çıkmak için esc'ye tıklayın
if event.key == KSCAN_ESCAPE:
pygame.event.post(pygame.event.Event(QUIT))
# Yönü onaylayın ve ters yönün girilip girilmediğini belirleyin
if changeDirection == 'right' and not direction == 'left':
direction = changeDirection
if changeDirection == 'left' and not direction == 'right':
direction = changeDirection
if changeDirection == 'up' and not direction == 'down':
direction = changeDirection
if changeDirection == 'down' and not direction == 'up':
direction = changeDirection
#Yılan kafasını yöne göre hareket ettir
if direction=='right':
snake_Head[0]+=20
if direction=='left':
snake_Head[0]-=20
if direction=='up':
snake_Head[1]-=20
if direction=='down':
snake_Head[1]+=20Buradaki tırnak içindeki kelimenin, yılanın ilk yönündeki kelimeyle tutarlı olması gerektiğine dikkat edin, aksi takdirde, changeDirection == 'sağ' ve yön == 'sol' değilse, çalışma zamanında sorunlar olacaktır: Bu, şu anlama gelir: Sağ hareketi gerçekleştirmek için "→" veya "D" kullanabilirsiniz, ayrıca changeDirection == 'sağ' ve yön değil == 'sol': Bu, yürürken "A" veya "←" ye basarsanız anlamına gelir doğru, bunun hiçbir etkisi olmaz ve ayrıca, eğer yön==' right':snake_Head[0]+=20 ise bir kare sağa hareket etmek için "→" veya "D"ye tıklamak anlamına gelir, çünkü kare 20'dir *20, yani bir kare 20'dir#Yılanın uzunluğunu artırın
snake_Body.insert(0,list(snake_Head))
#Yemek yiyip yememeye karar verin
if snake_Head[0] == food_Postion[0] and snake_Head[1] == food_Postion[1]:
food_Total = 0
else:
snake_Body.pop()yılan_Body.pop(), yemek yenmezse yeni yemek eklenmeyecek demektir, böyle bir kod yoksa yılanın yemek yemeden boyunun uzamasına neden olacaktır. if food_Total == 0:
x = random.randrange(1, 32)
y = random.randrange(1, 24)
food_Postion = [int(x * 20), int(y * 20)]
food_Total = 1Bu, eğer yiyecek yenirse ve durum 0 ise, rastgele bir yerde üretileceği anlamına gelir. if snake_Head[0] > 800 or snake_Head[0] < 0:
gameover()
elif snake_Head[0] > 800 or snake_Head[0] < 0:
gameover()
# Kendine çarparsan
for body in snake_Body[1:]:
if snake_Head[0] == body[0] and snake_Head[1] == body[1]:
gameover()if snake_Head[0] > 800 veya snake_Head[0] < 0: Bu, sınırla karşılaştığında oyundan çıktığı anlamına gelir ve 800 tam olarak ayarlanmış arayüz boyutudurSon Ekran

Tüm Kodlar
import pygame,sys,random
from pygame.locals import *
#Pygame kitaplığını başlat
pygame.init()
#Oyun arayüzünü başlat
DISPLAY=pygame.display.set_mode((800,800))
#Oyun penceresi başlığını ayarla
pygame.display.set_caption('Yılan')
#Oyun hızını kontrol etmek için bir değişken tanımla
FPSCLOCK=pygame.time.Clock()
#renk tanımla
BLACK=pygame.Color(0,0,0)
WHITE=pygame.Color(255,255,255)
RED=pygame.Color(255,0,0)
# Yılan kafasının başlangıç konumunu tanımlayın
snake_Head=[100,100]
# Bir yılanın başlangıç uzunluğunu tanımlayın, çünkü arayüz 20*20 olduğundan uzunluk 20 azaltılır
snake_Body=[[80,100], [60,100],[40,100]]
# # Yılan başlangıç yönü
direction="right"
# Yönü değiştirmek için değişkeni tanımlayın, tuşuna basın
changeDirection = direction
#başlangıçtaki yemek pozisyonunu tanımlayın
food_Postion = [300,300]
# Yemek durumunu tanımlayın, 0 yenilmiş, 1 yenilmemiş anlamına gelir
food_Total = 1
#yılan çiz
def drawSnake(snake_Body):
for i in snake_Body:
pygame.draw.rect(DISPLAY,WHITE,Rect(i[0],i[1],20,20))
# yemek yerini çiz
def drawFood(food_Postion):
pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))
def gameover():
#pygame'den çık
pygame.quit()
#programdan çık
sys.exit()
game_flag=True
while game_flag:
# arka plan rengini oluştur
DISPLAY.fill(BLACK)
#açgözlü yılan çizimi
drawSnake(snake_Body)
#yemek yeri çiz
drawFood(food_Postion)
#Oyun hızını artır
game_speed=1+len(snake_Body)//3
#Görüntü katmanını yenile, yılan ve yiyecek her hareket ettiğinde görüntü katmanı yenilenir
pygame.display.flip()
FPSCLOCK.tick(game_speed)
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
# Sağ ok veya d ise yılan sağa doğru hareket eder
if event.key == K_RIGHT or event.key == K_d:
changeDirection = 'right'
# Ok veya a ise yılan sola hareket eder
if event.key == K_LEFT or event.key == K_a:
changeDirection = 'left'
if event.key == K_UP or event.key == K_w:
changeDirection = 'up'
if event.key == K_DOWN or event.key == K_s:
changeDirection = 'down'
# Çıkmak için esc'ye tıklayın
if event.key == KSCAN_ESCAPE:
pygame.event.post(pygame.event.Event(QUIT))
if changeDirection == 'right' and not direction == 'left':
direction = changeDirection
if changeDirection == 'left' and not direction == 'right':
direction = changeDirection
if changeDirection == 'up' and not direction == 'down':
direction = changeDirection
if changeDirection == 'down' and not direction == 'up':
direction = changeDirection
if direction=='right':
snake_Head[0]+=20
if direction=='left':
snake_Head[0]-=20
if direction=='up':
snake_Head[1]-=20
if direction=='down':
snake_Head[1]+=20
snake_Body.insert(0,list(snake_Head))
if snake_Head[0] == food_Postion[0] and snake_Head[1] == food_Postion[1]:
food_Total = 0
else:
snake_Body.pop()
if food_Total == 0:
x = random.randrange(1, 32)
y = random.randrange(1, 24)
food_Postion = [int(x * 20), int(y * 20)]
food_Total = 1
if snake_Head[0] > 800 or snake_Head[0] < 0:
gameover()
elif snake_Head[0] > 800 or snake_Head[0] < 0:
gameover()
for body in snake_Body[1:]:
if snake_Head[0] == body[0] and snake_Head[1] == body[1]:
gameover()
