Uzman Üye
Merhaba arkadaşlar ,

Sizlere basit ama bir o kadar da eğlenceli Python ile Yılan Oyunu yapımını göstermek istedim. Umarım beğenirsiniz . İyi Forumlar
Bu yazıda, hepimizin çocukken oynadığı klasik yılan oyununun nasıl yapıldığını adım adım öğreneceğiz. Python ve pygame kütüphanesi ile eğlenceli bir oyun geliştirmek için hazırsanız, hadi başlayalım!
Gereksinimler
Yılan oyunumuzu yapmak için pygame kütüphanesine ihtiyacımız olacak.
Temel Yapı
Öncelikle bazı temel ayarlarımızı ve renk tanımlamalarımızı yapacağız. Oyun ekranımızın boyutlarını belirleyecek ve renklerimizi tanımlayacağız.
Gereksinimler
Yılan oyunumuzu yapmak için pygame kütüphanesine ihtiyacımız olacak.
Temel Yapı
Öncelikle bazı temel ayarlarımızı ve renk tanımlamalarımızı yapacağız. Oyun ekranımızın boyutlarını belirleyecek ve renklerimizi tanımlayacağız.
Python:
import pygame
import time
import random
pygame.init()
# Renk tanımlamaları
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)
# Ekran boyutları
dis_width = 800
dis_height = 600
# Ekran oluşturma
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Yılan Oyunu')
clock = pygame.time.Clock()
snake_block = 10
snake_speed = 15
font_style = pygame.font.SysFont(None, 50)
score_font = pygame.font.SysFont(None, 35)
Skor ve Mesaj Fonksiyonları
Oyunumuzda, yılanın boyutuna göre skorunu gösterecek ve oyun bittiğinde mesaj verecek fonksiyonlara ihtiyacımız olacak.
Python:
def score(score):
value = score_font.render("Skor: " + str(score), True, white)
dis.blit(value, [0, 0])
def message(msg, color):
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width / 6, dis_height / 3])
Yılanın Hareketi ve Hedef
Yılanın ekranda hareket edebilmesi ve hedefi yiyebilmesi için bazı fonksiyonlar tanımlayacağız. Yılanın her bir parçasını çizecek ve hedefin yerini rastgele belirleyeceğiz.
Python:
def our_snake(snake_block, snake_List):
for x in snake_List:
pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
Ana Oyun Döngüsü
Şimdi, oyunumuzun ana döngüsünü oluşturacağız. Bu döngüde yılanın hareketi, hedefi yeme kontrolü ve oyun bittiğinde yapılacak işlemler yer alacak.
Python:
def gameLoop(): # ana oyun döngüsü
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
snake_List = []
Length_of_snake = 1
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
while not game_over:
while game_close == True:
dis.fill(blue)
message("Kaybettin! Q-Quit veya C-Continue", red)
score(Length_of_snake - 1)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(blue)
pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block, snake_List)
score(Length_of_snake - 1)
pygame.display.update()
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
Length_of_snake += 1
clock.tick(snake_speed)
pygame.quit()
quit()
gameLoop()
Bütün Kod
Python:
import pygame
import time
import random
pygame.init()
# Renk tanımlamaları
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)
# Ekran boyutları
dis_width = 800
dis_height = 600
# Ekran oluşturma
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Yılan Oyunu')
clock = pygame.time.Clock()
snake_block = 10
snake_speed = 15
font_style = pygame.font.SysFont(None, 50)
score_font = pygame.font.SysFont(None, 35)
def score(score):
value = score_font.render("Skor: " + str(score), True, white)
dis.blit(value, [0, 0])
def our_snake(snake_block, snake_List):
for x in snake_List:
pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
def message(msg, color):
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width / 6, dis_height / 3])
def gameLoop(): # ana oyun döngüsü
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
snake_List = []
Length_of_snake = 1
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
while not game_over:
while game_close == True:
dis.fill(blue)
message("Kaybettin! Q-Quit veya C-Continue", red)
score(Length_of_snake - 1)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(blue)
pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block, snake_List)
score(Length_of_snake - 1)
pygame.display.update()
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
Length_of_snake += 1
clock.tick(snake_speed)
pygame.quit()
quit()
gameLoop()
Sizlere basit ama bir o kadar da eğlenceli Python ile Yılan Oyunu yapımını göstermek istedim. Umarım beğenirsiniz . İyi Forumlar