Python'da Yılan Oyunu Nasıl Yapılır?
Yayınlanan: 2022-02-02Yılan oyunu oynamayı seven biriyseniz, bu makaleyi ilginizi çekeceğine eminim.
Bu yazıda size Python'a yeni başlayan birinin bile geliştirmesi kolay bulabileceği basit bir yılan oyununun nasıl yapıldığını öğreteceğim.
Bu oyunu yaratmanın birkaç yolu vardır ve bunlardan biri, oyunlar oluşturmak için kullandığımız bir Python kütüphanesi olan Python'un PyGame kütüphanesinin kullanımını içerir.
Diğer yol ise kaplumbağa kütüphanesinin kullanılmasıdır. Bu modül Python ile önceden yüklenmiş olarak gelir ve kullanıcıların şekiller ve resimler oluşturması için sanal bir tuval sağlar.
Bu nedenle, bu makale, özellikle acemi Python geliştiricileri için yeni başlayanlar için uygun olan basit yılan oyunumuzu uygulamak için kaplumbağa kitaplığını kullanacak.
Bu modüle ek olarak iki modül daha kullanacağız;
- Zaman modülü – Bu yöntem, önceki zamandan bu yana geçen saniye sayısını takip etmemizi sağlar.
- Rastgele modül – Python'da rastgele sayılar üretir.
Kullanmanız gereken diğer temel araçlar, seçtiğiniz bir metin düzenleyiciyi içerir. Bu yazıda VSCode kullanacağım. Tabii ki, zaten yoksa, makinenize Python 3'ü yüklemeniz gerekecek. Geekflare Derleyicisini de kullanabilirsiniz.
Bu eğlenceli olmalı!
yılan oyunu nasıl çalışır
Bu oyunun nihai amacı, oyuncunun ekranda görüntülenen yiyecekleri toplamak için yılanı kontrol ederek en yüksek puanı elde etmesidir.
Oyuncu, yılanın hareket ettiği yöne göre dört yön tuşunu kullanarak yılanı kontrol eder. Yılan bir bloğa veya kendisine çarparsa, oyuncu oyunu kaybeder.
Bu oyunu uygulamak için takip edeceğimiz adımlar.
- Önceden yüklenmiş modülleri (kaplumbağa, zaman ve rastgele) programlarımıza aktarıyoruz.
- Kaplumbağa modülünü kullanarak oyunun ekran görüntüsünü oluşturma.
- Yılanın ekrandaki hareket yönünün tuşlarını ayarlama.
- Oyun uygulaması.
Uygulama kodunu ekleyeceğimiz bir snakegame.py dosyası oluşturun.
Modülleri içe aktarma
Kodun bu kısmı, varsayılan olarak Python'da önceden kurulmuş olan kaplumbağa, zaman ve rastgele modülleri içe aktaracaktır. Ek olarak, oyuncunun ilk puanı, oyuncunun elde edeceği en yüksek puan ve oyuncunun her hamlede aldığı gecikme süresi için varsayılan değerler ayarlayacağız. Zaman modülü burada gecikme zamanını hesaplamak için kullanılır.
Aşağıdaki kod parçasını snakegame.py dosyanıza ekleyin.
import turtle import random import time player_score = 0 highest_score = 0 delay_time = 0.1
Oyunun ekran görüntüsünü oluşturma
Buraya aktardığımız kaplumbağa modülü, oyunun pencere ekranı olacak sanal bir tuval oluşturmamızı sağlayacak. Buradan yılanın gövdesini ve yılanın toplayacağı yiyecekleri oluşturabiliriz. Ekranımız ayrıca oyuncunun izlenen skorunu da gösterecektir.
Bu kodu Python dosyasına ekleyin.
# window screen created wind = turtle.Screen() wind.title("Snake Maze") wind.bgcolor("red") # The screen size wind.setup(width=600, height=600) # creating the snake snake = turtle.Turtle() snake.shape("square") snake.color("black") snake.penup() snake.goto(0, 0) snake.direction = "Stop" # creating the food snake_food = turtle.Turtle() shapes = random.choice('triangle','circle') snake_food.shape(shapes) snake_food.color("blue") snake_food.speed(0) snake_food.penup() snake_food.goto(0, 100) pen = turtle.Turtle() pen.speed(0) pen.shape('square') pen.color('white') pen.penup() pen.hideturtle() pen.goto(0, 250) pen.write("Your_score: 0 Highest_Score : 0", align="center", font=("Arial", 24, "normal")) turtle.mainloop()
Yukarıdaki kod parçacığı, kaplumbağa ekranının başlatılmasıyla başlar ve ekrana bir başlık ve arka plan rengi iletir. Ekranımızın pencere boyutunu tanımladıktan sonra sanal tuval üzerine yılanın şeklini çiziyoruz.
penup() yöntemi, kaplumbağa hareket ederken bir çizgi çizilmemesi için kaplumbağanın kalemini alır. goto(x,y) yöntemi, kaplumbağayı mutlak bir konuma hareket ettiren koordinat konumlarını içerir.
Daha sonra yılanın topladığı yiyecekleri yaratırız. Yılanın yiyecekleri her topladığı zaman oyuncunun puanını ve oyuncunun oyun sırasında ulaştığı en yüksek puanı görüntülemek isteyeceğiz. Bu nedenle, bunu uygulamak için pen.write() yöntemini kullanıyoruz. hideturtle(), bu metnin yazıldığı başlık bölümündeki ekrandan kaplumbağa simgesini gizler.
Kullanıcının ekranda bir şeyler yapmasına izin vermek için ekranı daha uzun gösterecek olan kaplumbağa.mainloop() kodunu kodunuzun sonuna eklemek önemlidir.
Dosyayı çalıştırın ve aşağıdaki çıktıya sahip olmalısınız:

Yılan için yön tuşlarını ayarlama
Burada, yılanın ekranda hareket edeceği yönü yönlendirecek özel tuşlar ayarlayacağız. Sol için 'L', sağ için 'R', yukarı için 'U', aşağı için 'D' kullanacağız. Bu yönergeleri yılan üzerinde çağıracağımız kaplumbağanın yön fonksiyonunu kullanarak uygulayacağız.

Aşağıdaki kod parçasını kodunuza ekleyin.
# Assigning directions def moveleft(): if snake.direction != "right": snake.direction = "left" def moveright(): if snake.direction != "left": snake.direction = "right" def moveup(): if snake.direction != "down": snake.direction = "up" def movedown(): if snake.direction != "up": snake.direction = "down" def move(): if snake.direction == "up": coord_y = snake.ycor() snake.sety(coord_y+20) if snake.direction == "down": coord_y = snake.ycor() snake.sety(coord_y-20) if snake.direction == "right": coord_x = snake.xcor() snake.setx(coord_x+20) if snake.direction == "left": coord_x = snake.xcor() snake.setx(coord_x-20) wind.listen() wind.onkeypress(moveleft, 'L') wind.onkeypress(moveright, 'R') wind.onkeypress(moveup, 'U') wind.onkeypress(movedown, 'D')
Yukarıdaki move() işlevi, kesin bir koordinat değeri içinde tanımlanan konumdaki yılanın hareketini ayarlar.
listen() işlevi, oyuncu tuşa bastığında yılanı belirli bir yöne hareket ettiren yöntemleri çağıran bir olay dinleyicisidir.
yılan oyunu oynanış uygulaması
Yılan oyunumuzun temel görünümünü ortaya koyduktan sonra oyunu gerçek zamanlı hale getirmemiz gerekecek.
Bu, aşağıdakileri içerecektir:
- Yılanın boyunu her seferinde tercihen farklı bir renk kullanarak toplar.
- Yılanın yiyecekleri her topladığı zaman oyuncunun puanını artırmak ve en yüksek puanı takip etmek.
- Oyuncu, yılanın duvara veya kendi vücuduna çarpmasını kontrol edebilir.
- Yılan çarpıştığında oyun yeniden başlar.
- Oyun yeniden başladığında oyuncunun puanı sıfırlanır, ekran oyuncunun en yüksek puanını korur.
Bu kodun geri kalanını python dosyanıza ekleyin.
segments = [] #Implementing the gameplay while True: wind.update() if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290: time.sleep(1) snake.goto(0, 0) snake.direction = "Stop" snake.shape("square") snake.color("green") for segment in segments: segment.goto(1000, 1000) segments.clear() player_score = 0 delay_time = 0.1 pen.clear() pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal")) if snake.distance(snake_food) < 20: coord_x = random.randint(-270, 270) coord_y = random.randint(-270, 270) snake_food.goto(coord_x, coord_y) # Adding segment added_segment = turtle.Turtle() added_segment.speed(0) added_segment.shape("square") added_segment.color("white") added_segment.penup() segments.append(added_segment) delay_time -= 0.001 player_score += 5 if player_score > highest_score: highest_score = player_score pen.clear() pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal")) # checking for collisions for i in range(len(segments)-1, 0, -1): coord_x = segments[i-1].xcor() coord_y = segments[i-1].ycor() segments[i].goto(coord_x, coord_y) if len(segments) > 0: coord_x = snake.xcor() coord_y = snake.ycor() segments[0].goto(coord_x, coord_y) move() for segment in segments: if segment.distance(snake) < 20: time.sleep(1) snake.goto(0, 0) snake.direction = "stop" snake.color('white') snake.shape('square') for segment in segments: segment.goto(1000, 1000) segment.clear() player_score = 0 delay_time = 0.1 pen.clear() pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal")) time.sleep(delay_time) turtle.mainloop()
Yukarıdaki kod parçacığında, yılanın yiyeceği için ekran içinde rastgele bir konum belirledik. Yılan bu yiyeceği her topladığında vücut segmenti farklı bir renkle artar; beyaz, bu durumda, büyümesini ayırt etmek için.
Yılan, yiyeceği çarpışmadan topladıktan sonra, yiyecek, ekran boyutunun 270 koordinat aralığında rastgele bir konuma ayarlanır. Yılan yiyecek topladığı her seferde, oyuncunun puanı 5 artar. Yılan çarpıştığında, ekran en yüksek puanı korurken oyuncunun puanı 0'a ayarlanır.
Şimdi Python dosyasını döndürün ve kaplumbağa ekranınızın şöyle göründüğünü görmelisiniz:
Çözüm
Kaplumbağa kitaplığını kullanmak, bu makalede gördüğümüz gibi yılan oyununu yaratmanın eğlenceli ve kolay bir yoludur. Alternatif olarak, aynısını PyGame kitaplığını kullanarak da uygulayabilirsiniz. PyGame eğitimine buradan göz atabilir ve oyunu nasıl farklı şekilde uygulayabileceğinizi görebilirsiniz.
Ayrıca Python'da bir sayı tahmin oyunu veya Python'da JSON verilerinin nasıl alınacağını deneyebilirsiniz.
Kodlamanın tadını çıkarın!