Python ile Basit Yılan Oyunu Yapımı

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Uzman Üye
Katılım
10 Nis 2021
Mesajlar
291
Çözümler
3
Tepki puanı
65
Ödüller
3
5 HİZMET YILI
Merhaba arkadaşlar ,

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.

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()


:resim:

Adsız.png




Adsızzzzz.png



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 :)
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst