Zephyrnet Logosu

Python ile İlk Oyununuzu Yaratın: Yılan Oyunu

Tarih:

Python'un kullanımı hem eğlenceli hem de kolaydır. Geniş bir kütüphane yelpazesine sahip olan, Python oyun ve uygulamaların oluşturulmasını basitleştirerek hayatımızı kolaylaştırır. Bu yazıda çoğumuzun muhtemelen hayatımızın bir noktasında oynamış olduğu klasik bir oyun yaratacağız: Yılan oyunu. Bu oyunu daha önce deneyimlemediyseniz, sisteminize ağır kütüphaneler kurmanıza gerek kalmadan kendi sürümünüzü keşfetme ve oluşturma şansınız artık var. Bu nostaljik yılan oyununu yapmaya başlamak için ihtiyacınız olan tek şey Python'u temel düzeyde anlamak ve repl.it gibi bir çevrimiçi kodlama düzenleyicisidir.

Yılan oyunu, oyuncunun yiyecek tükettikçe boyu büyüyen bir yılanı kontrol ettiği eskimeyen bir arcade klasiğidir. Bu uygulamada oyunun nasıl yapılandırıldığını ve Turtle kütüphanesinin grafikler ve kullanıcı etkileşimi için nasıl kullanıldığını anlamak için kodu parçalara ayıralım.

İçindekiler

Basit Oyun Geliştirme için Kaplumbağa Grafiklerini Kullanmak

Kaplumbağa grafikleri Python'da kütüphane şekiller oluşturmanın, ekranda çizim yapmanın ve kullanıcı girdilerine yanıt vermenin eğlenceli ve etkileşimli bir yolunu sağlar. Genellikle eğitim amaçlı kullanılır ve görsel geri bildirim yoluyla programlama kavramlarını öğretir. Bu kod, yılan, yiyecek ve skor ekranı gibi oyun öğelerini oluşturmak için Turtle'ı kullanır.

Çevrimiçi kodlama editörü: Repl.it

Repl.it adlı bir web kodlama platformu, doğrudan web tarayıcınız üzerinden kod geliştirmenize, çalıştırmanıza ve üzerinde işbirliği yapmanıza olanak tanır. Birçok farklı programlama dilini destekler ve kod paylaşımı, sürüm kontrolü ve ekip çalışması gibi özelliklere ek olarak yerleşik derleyicilere ve yorumlayıcılara sahiptir. Geliştiriciler bunu öğrenme, hızlı prototip oluşturma ve kod paylaşımı için yaygın olarak kullanıyor çünkü kullanımı basit ve kurulum gerektirmiyor.

Algoritma

Python ile ilk oyunumuzu oluşturmaya başlayalım. Bunu yapmak için aşağıdaki belirli adımları izlememiz gerekir:

Repl dosyası oluştur

Adım 1: Gerekli kitaplıkların kurulması

Bu, Snake olarak bilinen oyunun geliştirilmesinde ilk adımı işaret ediyor. Kaplumbağa, rastgele ve zaman bunlardan bazılarıdır.

  • Kaplumbağa: Oyunumuzda grafikleri oluşturabilmek için bu kütüphaneye ihtiyacımız var. Yiyecek ve yılanın hareketlerini ekran üzerinde manipüle edip çizebiliyoruz.
  • Rastgele: Ekrandaki yiyeceklerin rastgele konumlarını oluşturmak için rastgele kütüphaneyi kullanıyoruz. Bu, yiyeceğin her yenildiğinde farklı bir yerde görünmesini sağlar.
  • Zaman: Yılan, zaman kütüphanesi sayesinde her hareket arasında hafif bir gecikmeyle hareket eder. Bu, oyunun kullanımını kolaylaştırır ve oyuncular için daha eğlenceli hale getirir.
import turtle
import time
import random

Adım 2: Oyun ortamının ayarlanması.

Buna ekranın boyutlarının belirlenmesi, mavi bir arka plan eklenmesi ve akıcı bir oynanış sağlamak için küçük bir gecikme eklenmesi de dahildir. Ayrıca elde edilen en yüksek puanı korumak için high_score, oyuncunun puanını izlemek için puan ve yılanın vücudunu takip etmek için segmentler gibi değişkenler de ayarladık.

# Initialize the screen
sc = turtle.Screen()
sc.bgcolor("blue")
sc.setup(height=1000, width=1000)
delay = 0.1

# Initialize variables
segments = []
score = 0
high_score = 0
Çıktı

Adım 3: Yılanın oluşturulması

Kare formlu kaplumbağa objesi yılanı simgelemektedir. Kalemi ekranın ortasına yerleştiriyoruz (goto(0, 100)), rengini siyaha ayarlıyoruz ve ardından çizgi çizmesini önlemek için kaldırıyoruz. Başlangıçta "dur" olarak ayarlanan yılanın yönü, oyuncu onu hareket ettirmeye başlayana kadar sabit kalır.

# Create the snake
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 100)
snake.direction = "stop"
Yılan yaratmak

Adım4: Hareket Fonksiyonları

Yılanın hareket fonksiyonlarını (move()) o andaki yönüne göre tanımlıyoruz. Bu işlevler yılanın yukarı, aşağı, sola ve sağa hareket etme yeteneğini kontrol eder. İstendiğinde yılanın başını uygun yöne 20 birim hareket ettirirler.

# Functions to move the snake
def move():
    if snake.direction == "up":
        y = snake.ycor()
        snake.sety(y + 20)
    if snake.direction == "down":
        y = snake.ycor()
        snake.sety(y - 20)
    if snake.direction == "left":
        x = snake.xcor()
        snake.setx(x - 20)
    if snake.direction == "right":
        x = snake.xcor()
        snake.setx(x + 20)

Adım 5: Yılanı Kontrol Etmek

Sc.listen() ve sc.onkey() kullanarak, yılanı kontrol edecek anahtar dinleyicileri yapılandırırız. İlgili rutinler (go_up(), go_down(), go_left(), go_right()), w, s, a veya d klavyesindeki tuşlara basıldığında yılanın yönünü değiştirir.

# Functions to link with the keys
def go_up():
    snake.direction = "up"

def go_down():
    snake.direction = "down"

def go_left():
    snake.direction = "left"

def go_right():
    snake.direction = "right"

# Listen for key inputs
sc.listen()
sc.onkey(go_up, "w")
sc.onkey(go_down, "s")
sc.onkey(go_left, "a")
sc.onkey(go_right, "d")

Adım 6: Yemeğin Oluşturulması

Yiyecek, kırmızı renkli, dairesel bir kaplumbağa nesnesiyle temsil edilir. Başlangıçta (100, 100) koordinatlarına yerleştirilen bu nesne, yılanın yemesi için hedef görevi görüyor. Yılan yiyecekle çarpıştığında yiyeceği "yiyor" ve rastgele bir yerde yeni bir tane beliriyor.

# Create the food
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()
food.goto(100, 100)

Yiyeceği Yaratmak

Adım 7: Puanın Görüntülenmesi

Bir kaplumbağa nesnesi (kalem), oyuncunun puanını ve elde edilen en yüksek puanı gösterir. Bu bilgi, yılanın yemeği her yediğinde güncellenir.

# Create the score display
pen = turtle.Turtle()
pen.penup()
pen.goto(0, 100)
pen.hideturtle()
pen.write("Score: 0  High Score: 0", align="center", font=("Arial", 30, "normal")
Puan Görüntüleniyor

Adım 8: Ana Oyun Döngüsü

Snake oyununun özü birincil oyun döngüsüdür. Kullanıcı girişini yönetir, ekranı günceller, yılanı hareket ettirir, çarpışmaları arar ve oyunun nasıl oynanacağını düzenler. Ana döngünün her bölümünün belirli işlevlerini daha ayrıntılı olarak inceleyelim:

while True:
    sc.update()  # Update the screen
    move()  # Move the snake
    time.sleep(delay)  # Introduce a slight delay for smooth gameplay
  • sc.update() : oyunda yapılan değişiklikleri yansıtacak şekilde ekranı günceller. Bu olmadan ekran yenilenmez ve oyuncular yılanın hareketini veya skor güncellemesini göremez.
  • move(): Bu fonksiyon, yılanın hareketini mevcut yönüne göre kontrol eder. Yılanın kafasını oyuncunun girişiyle belirlenen yönde 20 birim hareket ettirir. Yılan, oyuncu yönünü değiştirene kadar sürekli olarak en son yönlendirildiği yöne doğru hareket eder.
  • time.sleep(delay): yılanın her hareketi arasında hafif bir gecikme sağlar. delay değişken olarak ayarlandı 0.1 kodun başında. Bu gecikmenin amacı oyunun hızını kontrol etmektir. Bu olmasaydı, yılan oyuncunun tepki veremeyeceği kadar hızlı hareket ederdi ve bu da oyunun oynanmasını zorlaştırırdı.

Yemek Yemek ve Yılanı Büyütmek

    if snake.distance(food) < 20:
        x = random.randint(-200, 200)
        y = random.randint(-200, 200)
        food.penup()
        food.goto(x, y)
        food.pendown()

        # Increase the length of the snake
        new_segment = turtle.Turtle()
        new_segment.shape("square")
        new_segment.color("grey")
        new_segment.penup()
        segments.append(new_segment)
        score += 1

        # Update score and high score
        if score > high_score:
            high_score = score
        pen.clear()
        pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Arial", 30, "normal"))

Yemek yemek

  • Yılanın başı (snake) yiyeceklerden 20 birimlik bir mesafeye geldiğinde (food), yılanın yemeği "yediği" anlamına gelir.
  • Yiyeceğin konumu daha sonra kullanılarak ekrandaki yeni ve rastgele bir konuma sıfırlanır. random.randint().
  • Bu hareket, yiyeceğin her yenildiğinde farklı noktalarda "yeniden ortaya çıktığı" yanılsamasını yaratır.

Yılanın vücudunu büyütmek

  • Yılan yemeği yediğinde kod, yılanın büyümesi için vücuduna yeni bir bölüm ekler.
  • Yeni bir kaplumbağa nesnesi (new_segment) oluşturulur ve bu, segments liste.
  • Bu liste, yılanın vücudunu oluşturan tüm bölümlerin kaydını tutar.
  • Oyuncunun puanı artırılır (score += 1) yılan her yemek yediğinde.

Puan Güncelleme

  • Yemek yedikten ve puan güncellendikten sonra puan ekranı, pen nesne.
  • The pen.clear() işlevi önceki puan görüntüsünü temizler.
  • Daha sonra güncellenen puan ve yüksek puan, kullanılarak ekrana yazılır. pen.write().

Yılanın Vücudunu Hareket Ettirmek

    for i in range(len(segments) - 1, 0, -1):
        x = segments[i - 1].xcor()
        y = segments[i - 1].ycor()
        segments[i].goto(x, y)

    # Move the first segment to follow the head
    if len(segments) > 0:
        x = snake.xcor()
        y = snake.ycor()
        segments[0].goto(x, y)
  • Kodun bu bölümü, yılanın vücudunun başını takip etmesini sağlamaktan sorumludur.
  • aracılığıyla yinelenir segments liste, son bölümden başlayarak (len(segments) - 1) ikinci bölüme kadar (0), her bir parçayı önündeki parçanın konumuna hareket ettirin.
  • Bu, yılanın vücudunun hareket ettikçe başı takip etmesi etkisini yaratır.

Birinci Segmentin Güncellenmesi (Başlık)

  • Tüm vücut bölümlerini hareket ettirdikten sonra, ilk bölümün (baş) konumu yılanın mevcut konumuna uyacak şekilde güncellenir (snake).
  • Bu, yılanın başının hareket ettikçe vücuda yön vermeye devam etmesini sağlar.

Son Not

Bu kod, Turtle grafik kütüphanesini kullanan bir Snake oyunu için temel bir yapı sağlar. Oyun, duvarlara ve kendi kuyruğuna çarpmaktan kaçınırken bir yılanın yemek yemesini ve daha uzun büyümesini kontrol etmeyi içerir. Oyun geliştirme kavramlarını, temel Python programlamayı ve kullanıcı girişi ve grafiklerle çalışmayı öğrenmek için harika bir başlangıç ​​projesidir. Çarpışma algılama, zorluğu artırma veya Snake oyununuzu daha da heyecanlı hale getirmek için seviye ekleme gibi özellikler eklemek için bu kodu özelleştirmekten ve genişletmekten çekinmeyin!

Python hakkında daha fazla bilgi edinmek istiyorsanız kayıt olun ücretsiz python kursu.

Ayrıca python ile ilgili diğer makalelerimizi buradan okuyun:

spot_img

En Son İstihbarat

spot_img